text: //Dont change it
  requirejs(['ext_editor_1', 'jquery_190', 'raphael_210'],
      function (ext, $, TableComponent) {
  
          var cur_slide = {};
  
          ext.set_start_game(function (this_e) {
          });
  
          ext.set_process_in(function (this_e, data) {
              cur_slide["in"] = data[0];
          });
  
          ext.set_process_out(function (this_e, data) {
              cur_slide["out"] = data[0];
          });
  
          ext.set_process_ext(function (this_e, data) {
              cur_slide.ext = data;
              this_e.addAnimationSlide(cur_slide);
              cur_slide = {};
          });
  
          ext.set_process_err(function (this_e, data) {
              cur_slide['error'] = data[0];
              this_e.addAnimationSlide(cur_slide);
              cur_slide = {};
          });
  
          ext.set_animate_success_slide(function (this_e, options) {
              var $h = $(this_e.setHtmlSlide('<div class="animation-success"><div></div></div>'));
              this_e.setAnimationHeight(115);
          });
  
          ext.set_animate_slide(function (this_e, data, options) {
              var $content = $(this_e.setHtmlSlide(ext.get_template('animation'))).find('.animation-content');
              if (!data) {
                  console.log("data is undefined");
                  return false;
              }
  
              //YOUR FUNCTION NAME
              var fname = 'letter_queue';
  
              var checkioInput = data.in;
              var checkioInputStr = ' ' + fname + '(' + JSON.stringify(checkioInput)  + ')';
  
              var failError = function(dError) {
                  $content.find('.call').html('Fail: ' + checkioInputStr);
                  $content.find('.output').html(dError.replace(/\n/g, ","));
  
                  $content.find('.output').addClass('error');
                  $content.find('.call').addClass('error');
                  $content.find('.answer').remove();
                  $content.find('.explanation').remove();
                  this_e.setAnimationHeight($content.height() + 60);
              };
  
              if (data.error) {
                  failError(data.error);
                  return false;
              }
  
              if (data.ext && data.ext.inspector_fail) {
                  failError(data.ext.inspector_result_addon);
                  return false;
              }
  
              var rightResult = data.ext["answer"];
              var userResult = data.out;
              var result = data.ext["result"];
              var result_addon = data.ext["result_addon"];
  
  
              //if you need additional info from tests (if exists)
              var explanation = data.ext["explanation"];
  
              $content.find('.output').html('&nbsp;Your result:&nbsp;' + JSON.stringify(userResult));
  
              if (!result) {
                  $content.find('.call').html('Fail: ' + checkioInputStr);
                  $content.find('.answer').html('Right result:&nbsp;' + JSON.stringify(rightResult));
                  $content.find('.answer').addClass('error');
                  $content.find('.output').addClass('error');
                  $content.find('.call').addClass('error');
              }
              else {
                  $content.find('.call').html('Pass: ' + checkioInputStr);
                  $content.find('.answer').remove();
              }
  
              var queue = [];
              var $table = $content.find(".explanation table");
              for (var i = 0; i < checkioInput.length; i++) {
                  var $tr = $("<tr></tr>");
                  var c = checkioInput[i];
                  if (c.lastIndexOf("PUSH", 0) === 0) {
                      var ch = c.split(" ")[1];
                      queue.push(ch);
                  }
                  else if (queue.length > 0) {
                      queue.shift();
                  }
                  $tr.append($("<td></td>").text(c));
                  $tr.append($("<td></td>").text(queue.join("")));
                  $table.append($tr);
              }
  
  
              this_e.setAnimationHeight($content.height() + 60);
  
          });
  
          //This is for Tryit (but not necessary)
  //        var $tryit;
  //        ext.set_console_process_ret(function (this_e, ret) {
  //            $tryit.find(".checkio-result").html("Result<br>" + ret);
  //        });
  //
  //        ext.set_generate_animation_panel(function (this_e) {
  //            $tryit = $(this_e.setHtmlTryIt(ext.get_template('tryit'))).find('.tryit-content');
  //            $tryit.find('.bn-check').click(function (e) {
  //                e.preventDefault();
  //                this_e.sendToConsoleCheckiO("something");
  //            });
  //        });
  
          var colorOrange4 = "#F0801A";
          var colorOrange3 = "#FA8F00";
          var colorOrange2 = "#FAA600";
          var colorOrange1 = "#FABA00";
  
          var colorBlue4 = "#294270";
          var colorBlue3 = "#006CA9";
          var colorBlue2 = "#65A1CF";
          var colorBlue1 = "#8FC7ED";
  
          var colorGrey4 = "#737370";
          var colorGrey3 = "#9D9E9E";
          var colorGrey2 = "#C5C6C6";
          var colorGrey1 = "#EBEDED";
  
          var colorWhite = "#FFFFFF";
          //Your Additional functions or objects inside scope
          //
          //
          //
  
  
      }
  );
  