[
  {
    "path": "README.md",
    "content": "# Sussylang\nSussylang is my own Esolang.  \nIt's literally bf but with extra steps.  \n\nSite: https://1mmunity.github.io/sussylang\n"
  },
  {
    "path": "examples/e.sus",
    "content": "Euler's number program\nCalculates euler's number\n\nsussy\nsus\nsus\nsus\nsus\nsus sus sus\nsus sus sus\nsus\nsus sus sus\nsus\nsus sus sus\nsus sus sus\nsus\nsus sus sus\nsus\nsus\nsus sus sus\nsus sus sus\nsus sus\nsus sus sus\nsus sus sus sus sus\nsus sus sus sus sus\nsus\nsus sus sus sus sus\nsus\nsus\nsus sus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus sus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus\nsus\nsus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus sus\nsus sus\nsus sus sus\nsus sus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus\nsus\nsus\nsus\nsus\nsus\nsus sus sus sus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus sus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus\nsus\nsus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus\nsus sus sus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus\nsus sus sus sus sus\nsus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus\nsus\nsus\nsus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus\nsus\nsus sus sus\nsus sus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus\nsus\nsus sus sus\nsus sus sus sus sus\nsus\nsus sus sus sus\nsus sus sus sus sus\nsus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus\nsus\nsus\nsus sus sus\nsus\nsus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus\nsus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus\nsus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus\nsus\nsus sus sus\nsus\nsus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus\nsus sus sus sus sus\nsus sus\nsus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus sus\nsus\nsus sus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus\nsus sus sus sus sus\nsus sus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus\nsus sus sus sus sus\nsus sus\nsus sus sus sus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus\nsus sus sus sus sus\nsus sus sus sus sus\nsus\nsus sus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus sus sus\nsus\nsus\nsus sus sus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus sus sus\nsus sus\nsus sus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus sus sus\nsus sus\nsus sus sus\nsus\nsus sus sus sus sus sus\nsus sus sus\nsus sus\nsus sus sus sus sus\nsus sus sus sus\nsus\nsus sus sus sus\nsus\nsus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus\nsus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus\nsus sus sus sus sus sus sus\nsus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus sus\nsus sus\nsus sus sus sus sus sus\nsus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus\nsus\nsus\nsus sus sus\nsus sus sus sus sus\nsus sus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus\nsus\nsus\nsus\nsus\nsus\nsus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus sus\nsus sus\nsus sus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus\nsus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus\nsus\nsus\nsus sus sus sus sus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus\nsus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus sus\nsus\nsus sus sus\nsus sus\nsus sus\nsus sus sus\nsus sus sus\nsus sus\nsus sus sus sus sus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus sus\nsus sus sus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus\nsus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus\nsus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus\nsus\nsus sus sus sus sus sus\nsus\nsus sus sus sus sus sus\nsussy"
  },
  {
    "path": "examples/echo.sus",
    "content": "Echo program\nOutputs back the input given\n\nsussy\nsus sus sus sus sus sus sus sus\nsus sus sus sus sus\nsus sus sus sus sus sus sus\nsus sus sus sus sus sus sus sus\nsus sus sus sus sus sus\nsussy"
  },
  {
    "path": "examples/fib.sus",
    "content": "Fibonacci program\nCalculates the fibonacci sequence\n\nsussy\nsus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus\nsus sus sus\nsus\nsus sus sus\nsus sus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus\nsus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus sus sus sus\nsus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus\nsus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus sus sus sus\nsus\nsus\nsus sus sus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus\nsus sus sus sus sus\nsus\nsus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus\nsus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus sus\nsus\nsus sus sus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus\nsus sus sus sus sus\nsus\nsus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus\nsus\nsus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus\nsus\nsus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus\nsus\nsus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus\nsus\nsus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus\nsus\nsus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus\nsus\nsus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus\nsus\nsus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus\nsus\nsus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus\nsus sus sus\nsus\nsus sus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus\nsus\nsus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsussy"
  },
  {
    "path": "examples/golden.sus",
    "content": "Golden ratio program\nCalculates the golden ratio\n\nsussy\nsus sus sus\nsus\nsus\nsus\nsus\nsus\nsus\nsus\nsus sus sus\nsus sus sus\nsus\nsus sus sus\nsus\nsus sus sus\nsus\nsus sus sus\nsus\nsus sus sus\nsus sus sus\nsus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus\nsus\nsus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus\nsus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus\nsus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus\nsus sus\nsus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus\nsus sus sus sus\nsus sus sus sus sus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus\nsus sus sus\nsus sus\nsus sus sus sus\nsus sus\nsus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus\nsus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus\nsus sus sus sus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus\nsus sus sus sus sus\nsus sus sus sus\nsus\nsus sus sus sus sus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus\nsus sus sus sus sus sus\nsus\nsus sus sus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus\nsus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus\nsus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus\nsus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus\nsus sus sus\nsus sus\nsus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus\nsus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus\nsus\nsus sus sus sus sus sus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus\nsus\nsus sus sus sus sus\nsus sus sus sus sus\nsus\nsus\nsus\nsus sus sus sus sus\nsus\nsus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus\nsus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus\nsus\nsus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsussy"
  },
  {
    "path": "examples/hello_world.sus",
    "content": "Hello world program\nOutputs \"Hello World!\"\n\nsussy\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus\nsus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus\nsus\nsus sus sus\nsus sus sus\nsus\nsus sus sus\nsus sus sus\nsus sus sus\nsus\nsus sus sus\nsus sus sus\nsus sus sus\nsus\nsus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus\nsus sus sus\nsus\nsus sus sus\nsus\nsus sus sus sus\nsus\nsus\nsus sus sus\nsus sus sus sus sus\nsus sus\nsus sus sus sus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus\nsus\nsus sus sus sus sus sus sus\nsus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus sus sus\nsus sus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus sus sus\nsus\nsus\nsus sus sus sus sus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus sus\nsus sus\nsus sus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus sus\nsus\nsus\nsus sus sus\nsus sus sus sus sus sus sus\nsus\nsus sus sus\nsus sus sus\nsus sus sus sus sus sus sus\nsussy"
  },
  {
    "path": "examples/random.sus",
    "content": "Generates random bytes.\nDoesn't terminate, you have to kill it.\n\nsussy\nsus\nsus\nsus\nsus sus sus\nsus sus sus\nsus sus sus sus sus\nsus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus\nsus sus\nsus sus sus sus sus\nsus sus\nsus sus sus\nsus sus sus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus\nsus\nsus sus sus sus sus\nsus\nsus\nsus sus sus sus sus sus\nsus sus sus\nsus\nsus\nsus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus\nsus\nsus sus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus sus\nsus sus sus\nsus\nsus sus sus sus sus sus\nsus\nsus sus sus sus sus\nsus\nsus sus sus sus sus\nsus\nsus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus\nsus sus sus sus sus\nsus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus sus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus sus\nsus sus\nsus sus sus\nsus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus sus\nsus sus sus sus sus\nsus\nsus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus\nsus sus sus sus sus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus\nsus\nsus sus sus sus sus sus\nsussy"
  },
  {
    "path": "examples/squares.sus",
    "content": "Square number program\nOutputs square numbers from 0 to infinity\n\nsussy\nsus\nsus\nsus\nsus\nsus\nsus\nsus\nsus\nsus\nsus\nsus sus sus\nsus\nsus sus sus\nsus sus sus\nsus sus\nsus sus sus sus sus\nsus sus sus sus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus sus\nsus\nsus sus sus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus\nsus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus sus sus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus\nsus\nsus\nsus\nsus\nsus sus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus sus\nsus\nsus sus sus\nsus\nsus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus\nsus sus sus\nsus sus sus\nsus sus sus sus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus\nsus sus sus sus sus\nsus\nsus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus\nsus\nsus sus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus sus\nsus sus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus\nsus\nsus\nsus sus sus sus sus\nsus\nsus\nsus sus sus sus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus\nsus\nsus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus\nsus\nsus\nsus sus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus sus\nsus sus sus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus sus sus sus\nsus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus sus\nsus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsus\nsus sus sus sus sus sus\nsus\nsus\nsus\nsus sus sus sus sus\nsus\nsus\nsus\nsus\nsus sus sus sus sus sus\nsus sus\nsus sus\nsus sus\nsus sus\nsus sus sus sus\nsus sus\nsus sus\nsus sus sus\nsus sus\nsus sus\nsus sus sus sus sus sus\nsussy"
  },
  {
    "path": "index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <link rel=\"stylesheet\" href=\"./style.css\">\n  <title>Sussylang web interpreter</title>\n</head>\n<body>\n  <div class=\"interpreter\">\n    <div class=\"wrap\">\n      <div id=\"codeMode\" style=\"display:block;\">\n        <p class=\"mb-1\" id=\"credit\">Adriel J. &copy; 2021</p>\n        <div class=\"mb-1\">\n          <button onclick=\"evaluateCode()\">Evaluate</button>\n          <button onclick=\"translateCode()\">Translate from brainf****</button>\n          <button onclick=\"copyCode()\">Copy</button>\n        </div>\n        <div class=\"word-counter\">\n          <p id=\"charCount\">0 Characters - 0 Susses</p>\n        </div>\n        <div class=\"textarea-wrapper mb-1\">\n          <textarea id=\"sussycode\" placeholder=\"Type your sussy code here...\" rows=\"20\"></textarea>\n        </div>\n\n        <div class=\"word-counter\">\n          <p>Inputs</p>\n        </div>\n        <div class=\"textarea-wrapper mb-1\">\n          <textarea id=\"input\" placeholder=\"Type your inputs here...\" rows=\"10\"></textarea>\n        </div>\n      </div>\n      <div id=\"evalMode\" style=\"display:none;\">\n        <p class=\"mb-1\" id=\"credit\">Adriel J. &copy; 2021</p>\n        <button onclick=\"switchMode('code')\" class=\"mb-1\">Edit Mode</button>\n        <div class=\"table-view\">\n          <div>\n            <table id=\"tableCells\">\n              \n            </table>\n          </div>\n          <div class=\"ml-1 table-text\">\n            <h6>Sussy table</h6>\n            <p>\n              <b>Cells: </b><span id=\"cellsUtilized\">0</span>\n              <!-- <br />\n              <b>Byte(s): </b><span id=\"bytesUtilized\">0</span> -->\n            </p>\n            <p>\n              This is the sussy table, where you can view the values of cells.\n              Cells will be created as your pointer navigates around.\n            </p>\n          </div>\n        </div>\n        <div>\n          <div class=\"mb-1\">\n            <p><b>Operations:</b> <span id=\"operations\">0</span></p>\n            <p><b>Current line:</b> <span id=\"currentLine\">0</span></p>\n            <p><b>Lines:</b> <span id=\"lines\">50</span></p>\n\n            <p><b>Input:</b></p>\n            <div class=\"output\" id=\"inputText\">\n            </div>\n\n            <p><b>Output:</b></p>\n            <div class=\"output\" id=\"output\">\n            </div>\n          </div>\n          <div>\n            <button onclick=\"runCode(25)\">Run</button>\n            <button onclick=\"runCode(0)\">Run (per 1000 ops)</button>\n            <button onclick=\"killSussy()\">Kill</button>\n            <button disabled>Pause</button>\n            <button disabled>Step</button>\n          </div>\n          <p class=\"sm\">\n            (These features will be added soon, if i'm not lazy lol.)\n          </p>\n        </div>\n      </div>\n    </div>\n  </div>\n  <div class=\"main\">\n    <div class=\"wrap\">\n      <div class=\"mb-2\">\n        <h6>Operators</h6>\n        <p>\n          <b>Note:</b> Add <code>sussy</code> to both ends of the program!\n        </p>\n        <p>\n          <code>sus</code> - Make the pointer go down 1 cell<br />\n          <code>sus sus</code> - Make the pointer go up 1 cell<br />\n          <code>sus sus sus</code> - Increase current cell value by 1<br />\n          <code>sus sus sus sus</code> - Decrease current cell value by 1<br />\n          <code>sus sus sus sus sus</code> - Open loop<br />\n          <code>sus sus sus sus sus sus</code> - Close loop<br />\n          <code>sus sus sus sus sus sus sus</code> - Print out current cell value as char<br />\n          <code>sus sus sus sus sus sus sus sus</code> - Get input<br />\n        </p>\n      </div>\n\n      <div class=\"mb-2\">\n        <h6 class=\"mb-1\">Load Examples</h6>\n        <p>The examples will be automatically loaded on the code editor.</p>\n        <br />\n        <div id=\"examples\">\n        </div>\n      </div>\n\n      <h1 class=\"mb-1\">Sussylang</h1>\n      <p>Sussylang is a goofy ahh language</p>\n      <!-- <p>TLDR: It's a hybrid of brainf### and my boredom.</p> -->\n\n      <div class=\"rules\">\n        <h6>Rules</h6>\n        <p>\n          Every operator/command is seperated by a new line <code>\\n</code> or <kbd>enter</kbd>.\n        </p>\n        <p>\n          You start the program with a <code>sussy</code> keyword and end it with a\n          <code>sussy</code> keyword (optional).\n          Everything above that is ignored, you can use that as a comment.\n        </p>\n        <p>\n          Only the <code>sussy</code> and <code>sus</code> keywords are used.\n          It's the quantity of <code>sus</code> that determines the command/operator\n        </p>\n        <p>\n          You will start with 10 cells, use the operators/commands to navigate around them and increase/decrease their values.\n        </p>\n      </div>\n    </div>\n  </div>\n  <!-- <div class=\"button-wrapper\">\n    <div class=\"button-wrapper__inner\">\n      <button onclick=\"evaluateCode()\">Evaluate Sussy Code</button>\n    </div>\n  </div> -->\n\n  <!-- *Turn this into the minified version of the interpreter! -->\n  <script src=\"./js/sussylang.min.js\" type=\"text/javascript\"></script>\n  <script src=\"./js/general.min.js\" type=\"text/javascript\"></script>\n\n  <!-- !Development only! -->\n  <!-- <script src=\"./js/general.js\" type=\"text/javascript\"></script> -->\n  <!-- <script src=\"./js/sussylang.js\" type=\"text/javascript\"></script> -->\n</body>\n</html>"
  },
  {
    "path": "js/general.js",
    "content": "// General script for the site like auto resizing textarea.\n\nconst textarea = document.getElementById(\"sussycode\")\nconst wordCount = document.getElementById(\"charCount\")\ntextarea.addEventListener(\"input\", () => {\n  autoResize(textarea)\n  charCount(textarea)\n})\n\nfunction charCount(ta) {\n  const count = ta.value.length\n  const susses = ta.value.match(/\\bsus\\b/gi) || []\n  wordCount.innerText = `${count} Characters - ${susses.length} Susses`\n}\n\nfunction autoResize(ta) {\n  // ta.style.height = \"auto\"\n  // ta.style.height = ta.scrollHeight + \"px\"\n}\n\n// // evaluate the sussy code in textarea\n// function evaluateCode() {\n//   const sussycode = document.getElementById(\"sussycode\")\n//   console.log(sussycode.value)\n// }\n\nconst translateDictionary = '><+-[].,'.split('')\nfunction translateCode() {\n  const sussycode = document.getElementById(\"sussycode\")\n  const translated = sussycode.value\n  .replace(/\\s/g, \"\")\n  .split(\"\")\n  .map((x, i) => \"sus \".repeat(translateDictionary.findIndex(y => y === x) + 1).trim())\n  .filter(x => x) // bro i dont even know\n  .join(\"\\n\")\n  .trim()\n    \n  sussycode.value = `sussy\\n${translated}\\nsussy`\n  autoResize(textarea)\n  charCount(textarea)\n}\n\nasync function loadExample(file) {\n  const scode = document.getElementById(\"sussycode\")\n  scode.value = await fetch('./examples/' + file).then((x) => x.text())\n}\n\nfunction copyCode() {\n  const sussycode = document.getElementById(\"sussycode\")\n  sussycode.select()\n  document.execCommand(\"copy\") // why is it deprecated?\n  window.getSelection().removeAllRanges()\n}\n\nconst files = [{\n  name: 'hello_world.sus',\n  description: 'Outputs \"Hello World!\"'\n},\n{\n  name: 'fib.sus',\n  description: 'Outputs the fibonacci sequence'\n}, {\n  name: 'e.sus',\n  description: 'Outputs the euler number'\n}, {\n  name: 'golden.sus',\n  description: 'Outputs the golden ratio'\n}, {\n  name: 'squares.sus',\n  description: 'Outputs the squares of the numbers from 0 to infinity'\n}, {\n  name: 'echo.sus',\n  description: 'Outputs the input'\n}, {\n  name: 'random.sus',\n  description: 'Generates random bytes'\n}]\n\nfunction exLoad() {\n  const examples = document.getElementById(\"examples\")\n  const formatted = files.sort((a, b) => b.name.length - a.name.length).map(x => `<button onclick=\"loadExample('${x.name}')\">${x.name}</button> - <span>${x.description}</span>`).join('<br />')\n  examples.innerHTML = formatted\n}\n\nexLoad()"
  },
  {
    "path": "js/sussylang.js",
    "content": "let cells = new Array(10).fill(0)\nlet pointer = 0\nsussy = null\n\nconst tableCells = document.getElementById('tableCells')\n\nconst modes = {\n  EVAL: 'eval',\n  CODE: 'code'\n}\n\nfunction displayCellsToTable() {\n  const view = cells.map((x, i) => {\n    return `<tr${i === pointer && ' class=\"current-cell\"'}>\n    <td>${i+1}</td>\n    <td>${x}</td>\n    </tr>`\n  })\n\n  tableCells.innerHTML = `<tr>\n  <th>Cell</th>\n  <th>Value</th>\n  </tr>\n  ${view.join('\\n')}`\n}\n\nfunction switchMode(mode) {\n  const evalMode = document.getElementById(\"evalMode\")\n  const codeMode = document.getElementById(\"codeMode\")\n\n  if (mode == 'eval') {\n    evalMode.style.display = 'block'\n    codeMode.style.display = 'none'\n  } else if (mode == 'code') {\n    resetAll()\n    evalMode.style.display = 'none'\n    codeMode.style.display = 'block'\n  }\n}\n\nfunction resetAll() {\n  sussy = null\n  cells = new Array(10).fill(0)\n  pointer = 0\n  updateOperations(0)\n  displayCellsToTable()\n  updateCurrentLine(0)\n  updateCurrentOutput('')\n}\n\nfunction updateCurrentLine(current) {\n  const currentLine = document.getElementById(\"currentLine\")\n  currentLine.innerText = current\n}\n\n// on eval button click\nfunction evaluateCode() {\n  resetAll()\n\n  const sussycode = document.getElementById(\"sussycode\")\n  const input = document.getElementById(\"input\")\n  const inputText = document.getElementById(\"inputText\")\n  const lines = document.getElementById(\"lines\")\n\n  const cleaned = cleanCode(sussycode.value)\n  inputText.innerText = input.value\n  lines.innerText = cleaned.split('\\n').length\n  \n  switchMode(modes.EVAL)\n  displayCellsToTable()\n}\n\nfunction updateOperations(ops) {\n  const operations = document.getElementById(\"operations\")\n  operations.innerText = `${ops}`\n}\n\nfunction updateCellsUtilized() {\n  const cellsUtilized = document.getElementById(\"cellsUtilized\")\n  // const bytesUtilized = document.getElementById(\"bytesUtilized\")\n\n  // bytesUtilized.innerText = `${cells}`\n  cellsUtilized.innerText = `${cells.length}`\n}\n\nfunction runCode(delay) {\n  resetAll()\n  sussy = null\n  const sussycode = document.getElementById(\"sussycode\")\n  const input = document.getElementById(\"input\")\n\n  const cleaned = cleanCode(sussycode.value)\n\n  const splitted = cleaned.split('\\n')\n  const codeArray = splitted.map(x => x.trim().split(' ').length-1)\n\n  if (!input.value && codeArray.includes(7)) {\n    const outs = document.getElementById(\"output\")\n    outs.innerHTML = `<span style=\"color:red;\">(Err: Must have an input when using the input operator!)</span>`\n    return\n  }\n\n  try {\n    sussy = new SussyLang(codeArray, input.value, delay)\n    sussy.execute()\n  } catch (e) {\n    const outs = document.getElementById(\"output\")\n    outs.innerHTML += ` <span style=\"color:red;\">(Err: ${e})</span>`\n  }\n}\n\nfunction updateCurrentOutput(output) {\n  const currentOutput = document.getElementById(\"output\")\n  currentOutput.innerText = output\n}\n\nfunction killSussy() {\n  window.location.reload()\n}\n\n// translate it back to brainf* lol\n// const translateDictionary = '><+-[].,'.split('')\n\n// only read between the 2 sussies\nfunction cleanCode(code) {\n  const splitted = code\n  .trim()\n  .split('\\n')\n\n  const firstSussyindex = splitted.findIndex(x => x.trim() === 'sussy')\n\n  if (firstSussyindex === -1) return code\n  else {\n    splitted.splice(0, firstSussyindex+1)\n    const secondSussyIndex = splitted.findIndex(x => x.trim() === 'sussy')\n    if (secondSussyIndex === -1) return code\n    else {\n      splitted.splice(secondSussyIndex, splitted.length)\n      return splitted.join('\\n')\n    }\n  } // i dont even know anymore\n}\n\nclass SussyLang {\n  constructor(codeArray, inp, delay) {\n    // codeArray: [0, 2, 1, 3] >+<-\n    this.in = inp\n    this.output = null\n    this.c = null\n    this.codeArray = codeArray\n    this.ops = 0\n  \n    this.blockOpeners = {}\n    this.blockClosers = {}\n    this.bfSource = this.translateBack()\n    this.msDelay = delay\n    this.getBlocks(this.bfSource)\n\n    this.operators = {\n      '>': () => {\n        pointer += 1\n        if (pointer === cells.length) cells[pointer] = 0\n        this.c += 1\n      },\n      '<': () => {\n        pointer -= 1\n        if (pointer < 0) pointer = 0\n        this.c += 1\n      },\n      '+': () => {\n        if (cells[pointer]+1 === 256) cells[pointer] = 0\n        else cells[pointer] += 1\n\n        // cells[pointer] += 1\n        this.c++\n      },\n      '-': () => {\n        if (cells[pointer]-1 === -1) cells[pointer] = 255\n        else cells[pointer] -= 1\n\n        // cells[pointer] -= 1\n        this.c++\n      },\n      '[': () => {\n        if (!cells[pointer]) this.c = this.blockOpeners[this.c] + 1\n        else this.c++\n      },\n      ']': () => {\n        if (cells[pointer]) this.c = this.blockClosers[this.c] + 1\n        else this.c++\n      },\n      '.': () => {\n        const m = String.fromCharCode(cells[pointer])\n        this.output += m\n        this.c++\n\n        if (this.msDelay) {\n          const ots = document.getElementById(\"output\")\n          ots.innerText = this.output\n        }\n      },\n      ',': () => {\n        if (!this.in.length) return false\n        cells[pointer] = this.in.charCodeAt(0)\n        this.in = this.in.substring(1)\n        this.c++\n      }\n    }\n\n  }\n\n  translateBack() {\n    return this.codeArray.map(x => translateDictionary[x]).join('')\n  }\n\n  getBlocks(code) {\n    let i = 0\n    let match, open\n    const brackets = /\\[|\\]/g\n    const stack = []\n    while (i < code.length) {\n      match = code.substring(i).search(brackets)\n      if (match < 0) break\n      \n      match += i\n      \n      if (code[match] === '[') {\n        stack.push(match)\n      } else {\n        open = stack.pop()\n        this.blockOpeners[open] = match\n        this.blockClosers[match] = open\n      }\n\n      i = match + 1\n    }\n    if (stack.length) throw 'Loops must be closed!'\n  }\n\n  async execute() {\n    resetAll()\n    this.c = 0\n    this.output = ''\n    this.input = input\n    const source = this.bfSource\n    var l = source.length\n    while (this.c < l) {\n      this.ops++\n      if (this.operators[source[this.c]]() === false) break\n\n      if (this.msDelay) {\n        displayCellsToTable()\n        updateCurrentLine(this.c)\n        updateOperations(this.ops)\n        updateCellsUtilized()\n        await new Promise((resolve) => setTimeout(resolve, this.msDelay))\n      } else if (this.ops % 1000 === 0) {\n        displayCellsToTable()\n        updateCurrentLine(this.c)\n        updateCurrentOutput(this.output)\n        updateOperations(this.ops)\n        updateCellsUtilized()\n        await new Promise((resolve) => setTimeout(resolve, 1)) // will lag if it's too fast\n      }\n    }\n    return this.output\n  }\n}\n"
  },
  {
    "path": "style.css",
    "content": "@import url('https://fonts.googleapis.com/css2?family=PT+Serif:ital,wght@0,400;0,700;1,400;1,700&display=swap');\n\n* {\n  margin: 0;\n  padding: 0;\n}\n\n::-webkit-scrollbar {\n  background-color: rgba(0, 0, 0, 0.182);\n  border-radius: 5px;\n  width: 8px;\n}\n\n::-webkit-scrollbar-thumb {\n  background-color: var(--color-primary);\n  border-radius: 5px;\n}\n\n:root {\n  --color-primary: #5EBEC4;\n  --color-primary-dark: #4DA1A0;\n\n  --color-neutral: #FDF5DF;\n  --color-neutral-dark: #fbecc0;\n\n  --color-accent-dark: #dd2776;\n  --color-accent: #F92C85;\n  --color-accent-light: #f92c852f;\n  --color-gray: #fafafa;\n  --color-gray-dark: #7b7b7b;\n  \n  --font-primary: 'PT Serif', sans-serif;\n  --font-header: sans-serif;\n}\n\nbody {\n  background-color: var(--color-neutral);\n}\n\nh1, h2, h3, h4, h5, h6 {\n  font-family: var(--font-header);\n  color: var(--color-primary);\n}\n\nh1 {\n  font-size: 3.5rem;\n}\n\nh6 {\n  font-size: 1.5rem;\n  text-transform: uppercase;\n  font-weight: bolder;\n}\n\np, li, table {\n  font-family: var(--font-primary);\n  font-size: 1.25rem;\n  line-height: 1.5;\n}\n\nul {\n  list-style-position: inside;\n}\n\ncode::before, code::after {\n  content: \"`\";\n}\n\ncode {\n  color: var(--color-accent);\n  /* background-color: var(--color-accent-light); */\n  font-size: 1rem;\n  /* padding: 0 .6rem; */\n  border-radius: 5px;\n  font-family: monospace;\n}\n\n#examples button {\n  margin-bottom: .25rem;\n}\n\nkbd {\n  background-color: var(--color-gray);\n  color: var(--color-gray-dark);\n  font-size: 1rem;\n  padding: .25rem .75rem;\n  border-radius: 5px;\n  text-transform: uppercase;\n  box-shadow: 0 1.5px 3px rgba(0, 0, 0, 0.47);\n}\n\ntextarea {\n  background-color: var(--color-gray);\n  outline: none;\n  border: none;\n  width: 100%;\n  resize: none;\n  height: auto;\n  scrollbar-width: 0;\n}\n\nbutton {\n  background-color: var(--color-accent);\n  color: var(--color-neutral);\n  font-size: .75rem;\n  padding: .5rem 1rem;\n  border-radius: 5px;\n  border: none;\n  cursor: pointer;\n}\n\nbutton:hover {\n  background-color: var(--color-accent-dark);\n}\n\ntable {\n  table-layout: fixed;\n  margin-left: auto;\n  margin-right: auto;\n}\n\n#examples span {\n  font-family: monospace;\n  font-size: 1rem;\n  font-weight: bold;\n}\n\n/* .wrap {\n  padding-top: .1rem;\n} */\n\ntable, td, th, tr {\n  border: 1px solid #000;\n  border-collapse: collapse;\n  padding: 2px;\n  font-size: 1rem;\n  text-align: left;\n  width: 5rem;\n}\n\ntd {\n  padding: 0 5rem 0 .5rem;\n}\n\nth {\n  padding: 0 .5rem 0 .5rem;\n  background-color: var(--color-neutral-dark);\n}\n\nbutton:disabled {\n  opacity: .5;\n}\n\n.output {\n  padding: 1rem;\n  font-family: 'Courier New', Courier, monospace;\n  max-height: 5rem;\n  overflow-y: scroll;\n}\n\n.sm {\n  margin-top: 5px;\n  opacity: .5;\n  font-size: smaller;\n}\n\n.secondary-btn {\n  background-color: var(--color-primary);\n}\n\n.secondary-btn:hover {\n  background-color: var(--color-primary-dark);\n}\n\n.current-cell {\n  background-color: var(--color-accent-light);\n}\n\n.table-view {\n  display: flex;\n  margin-bottom: 2rem;\n  max-height: 20rem;\n  overflow-y: scroll;\n}\n\n.table-view p {\n  margin-bottom: .5rem;\n}\n\n.rules p {\n  margin-bottom: 1rem;\n}\n\n.main {\n  padding: 2rem;\n}\n\n.interpreter {\n  padding: 1rem;\n}\n\n.mb-1 {\n  margin-bottom: 1rem;\n}\n\n.ml-1 {\n  margin-left: 1.5rem;\n}\n\n.rules {\n  margin-top: 2.5rem;\n}\n\n.textarea-wrapper {\n  padding: .5rem;\n  background-color: var(--color-gray);\n}\n\n/* .button-wrapper {\n  position: absolute;\n  bottom: 0;\n}\n\n.button-wrapper__inner {\n  padding: 2rem;\n  background-color: var(--color-neutral-dark);\n  border-radius: 0 25px 0 0;\n  box-shadow: rgba(0, 0, 0, 0.07) 0px 1px 2px, rgba(0, 0, 0, 0.07) 0px 2px 4px, rgba(0, 0, 0, 0.07) 0px 4px 8px, rgba(0, 0, 0, 0.07) 0px 8px 16px, rgba(0, 0, 0, 0.07) 0px 16px 32px, rgba(0, 0, 0, 0.07) 0px 32px 64px;\n} */\n\n.word-counter {\n  background-color: var(--color-primary-dark);\n  color: #fff;\n  padding: .25rem .5rem;\n}\n\n.word-counter p {\n  font-family: monospace;\n  font-size: 1rem;\n  font-weight: bold;\n}\n\n.table-text {\n  display: none;\n}\n\n.mb-2 {\n  margin-bottom: 3.5rem;\n}\n\n@media screen and (max-width: 600px) {\n  p, code, kbd {\n    font-size: 1rem;\n  }\n\n  #examples span {\n    font-size: .75rem;\n  }\n}\n\n/* If the screen is big enough the sussy area and rules will be displayed side by side */\n@media screen and (min-width: 1080px) {\n  body {\n    display: flex;\n    overflow-y: hidden;\n  }\n\n  .table-text {\n    display: block;\n  }\n\n  .interpreter, .main {\n    flex: 1;\n    max-height: 95vh;\n  }\n\n  .main {\n    overflow-y: scroll;\n  }\n\n  .interpreter {\n    padding: 2rem;\n  }\n\n  button {\n    font-size: 1rem;\n    cursor: pointer;\n  }\n}\n\n#credit {\n  opacity: 25%;\n  font-size: .75rem;\n  text-align: center;\n}"
  }
]