(function(){
  'use strict';

  var Interpreter = new Brainfuckme();

  var $ = function(selector) {
    return document.querySelector(selector);
  };

  var $$ = function(selector, node) {
    return node.querySelector(selector);
  };

  var $$$ = function(selector) {
    return document.querySelectorAll(selector);
  };

  var mainEl = $('#main');
  var logEl = $$('#log', mainEl);
  var arrayEl = $$('#array', mainEl);
  var inputEl = $$('#input', mainEl);
  var outputEl = $$('#output', mainEl);
  var consoleEl = $$('#console', mainEl);

  var inputsBtn = $$$('.btnInput');
  for (var i = 0, sum = inputsBtn.length; i < sum; i++) {
    inputsBtn[i].onclick = function(e) {
      e.preventDefault();
      consoleEl.value += this.text;
      // consoleEl.focus();
    };
  }

  var backBtn = $('#btnBack');
  backBtn.onclick = function(e) {
    e.preventDefault();
    consoleEl.value = consoleEl.value.split('').slice(0, -1).join('');
    // consoleEl.focus();
  };

  var runBtn = $('#btnRun');
  runBtn.onclick = function(e) {
    e.preventDefault();
    this.disabled = true;
    Interpreter.reset();
    outputEl.value = '';
    Interpreter.run(
      consoleEl.value.split(''),  // source code
      inputEl.value.split(''),    // input data
      {log: true},                // options
      function(output){           // callback
        console.log(output);
        outputEl.value = output.join('');
        this.disabled = false;
      });
  };

  var resetBtn = $('#btnReset').onclick = function(e) {
    e.preventDefault();
    Interpreter.reset();
    consoleEl.value = '';
    // consoleEl.value = ' ++++++++++[>+++++++<-]>.';
  };

}());

// ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.
// ++++++++++[>+++++++<-]>.
// +++[>++<-]>.
@@ -738,36 +738,8 @@
 xt;%0A
-      // consoleEl.focus();%0A
     
@@ -910,34 +910,8 @@
 ');%0A
-    // consoleEl.focus();%0A
   %7D;
@@ -998,24 +998,55 @@
 ault();%0A
+%0A
     
-this
+var button = this;%0A    %0A    button
 .disable
@@ -1101,24 +1101,54 @@
 value = '';%0A
+    %0A    console.time('run');%0A
     Interpre
@@ -1177,27 +1177,25 @@
 El.value
-.split(''),
+,        
   // sou
@@ -1235,18 +1235,16 @@
 t(''),  
- 
- 
 // input
@@ -1267,18 +1267,16 @@
 : true%7D,
-  
         
@@ -1315,18 +1315,16 @@
 output)%7B
-  
         
@@ -1415,20 +1415,22 @@
         
-this
+button
 .disable
@@ -1440,16 +1440,48 @@
  false;%0A
+        console.timeEnd('run');%0A
       %7D)
@@ -1621,18 +1621,27 @@
 = '';%0A  
-  
+%7D;%0A%0A%7D());%0A%0A
 // conso
@@ -1682,29 +1682,16 @@
 %3C-%5D%3E.';%0A
-  %7D;%0A%0A%7D());%0A%0A
 // +++++

Add regex for source code trimming