[
  {
    "path": ".editorconfig",
    "content": "# editorconfig.org\nroot = true\n\n[*]\nindent_style = space\nindent_size = 2\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\n\n[*.md]\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": ".eslintrc",
    "content": "{\n  \"rules\": {\n    \"comma-dangle\": [2, \"always-multiline\"],\n  },\n  \"extends\": [ \"standard\" ],\n  \"globals\": {\n    \"define\": true,\n    \"describe\": true,\n    \"before\": true,\n    \"after\": true,\n    \"it\": true,\n    \"expect\": true\n  },\n  \"env\": {\n    \"es6\": true,\n    \"browser\": true,\n    \"node\": true\n  },\n  \"ecmaFeatures\": {\n    \"modules\": true\n  },\n}\n"
  },
  {
    "path": ".gitignore",
    "content": "~*\ngh-pages\nnode_modules\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: node_js\nnode_js:\n  - 8\nnotifications:\n  slack: blivesta:ygWmRLL4fyU0s7FFlVHSsJnS\n  email: false\n"
  },
  {
    "path": "README.md",
    "content": "# Chaffle\n\n[![npm version](https://img.shields.io/npm/v/chaffle.svg?style=flat-square)](https://www.npmjs.com/package/chaffle)\n[![Build Status](https://img.shields.io/travis/blivesta/chaffle/master.svg?style=flat-square)](https://travis-ci.org/blivesta/chaffle)\n\nShuffle Characters Randomly.\n\n## Demo\n\nhttp://git.blivesta.com/chaffle/\n\n## Install\n\n```html\n<script src=\"YOUR-PROJECT/chaffle.min.js\"></script>\n<!-- OR CDN -->\n<script src=\"https://unpkg.com/chaffle/chaffle.min.js\"></script>\n```\n\nnpm\n\n```html\n$ npm install chaffle\n```\n\n## Usage\n\n### Markup\n\n```html\n<p data-chaffle=\"en\">English</p>\n<p data-chaffle=\"ja\">日本語</p>\n<p data-chaffle=\"ja-hiragana\">ひらがな</p>\n<p data-chaffle=\"ja-katakana\">カタカナ</p>\n<p data-chaffle=\"ua\">Українська</p>\n<p data-chaffle=\"cn\">中文</p>\n<!-- data options -->\n<p data-chaffle=\"en\" data-chaffle-speed=\"100\" data-chaffle-delay=\"200\">\n  Data options\n</p>\n```\n\n### Call the Chaffle\n\n```js\nconst elements = document.querySelectorAll(\"[data-chaffle]\");\nArray.prototype.forEach.call(elements, function(el) {\n  const chaffle = new Chaffle(el, {\n    /* options */\n  });\n  chaffle.init();\n});\n```\n\ne.g: mouseover\n\n```js\nimport Chaffle from \"chaffle\";\n\nconst elements = document.querySelectorAll(\"[data-chaffle]\");\nArray.prototype.forEach.call(elements, function(el) {\n  const chaffle = new Chaffle(el, {\n    /* options */\n  });\n  el.addEventListener(\"mouseover\", function() {\n    chaffle.init();\n  });\n});\n```\n\n## Options\n\n```html\n<p data-chaffle=\"en\" data-chaffle-speed=\"100\" data-chaffle-delay=\"200\">\n  Data options\n</p>\n```\n\nOR\n\n```js\nvar chaffle = new Chaffle(el, {\n  lang: \"en\", // default: 'en'\n  // 'en' || 'ja' || 'ja-hiragana' || 'ja-katakana' || 'ua' || 'cn'\n  speed: 20, // default: 20\n  delay: 100 // default: 100\n});\n```\n\n## License\n\nReleased under the MIT license.\n"
  },
  {
    "path": "docs/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\">\n  <meta name=\"description\" content=\"Shuffle Characters Randomly.\">\n  <meta property=\"og:title\" content=\"Chaffle\">\n  <meta property=\"og:type\" content=\"website\">\n  <meta property=\"og:url\" content=\"http://git.blivesta.com/chaffle/\">\n  <meta property=\"og:image\" content=\"http://www.blivesta.com/ico/blivesta-300.png\">\n  <meta property=\"og:site_name\" content=\"Chaffle\">\n  <meta property=\"og:description\" content=\"Shuffle Characters Randomly.\">\n  <meta property=\"fb:app_id\" content=\"1001771893195804\">\n  <meta name=\"twitter:card\" content=\"summary\">\n  <meta name=\"twitter:site\" content=\"@blivesta\">\n  <meta name=\"twitter:creator\" content=\"@blivesta\">\n  <title>Chaffle | Shuffle Characters Randomly.</title>\n  <link rel=\"apple-touch-icon-precomposed\" sizes=\"144x144\" href=\"//www.blivesta.com/ico/apple-touch-icon-144-precomposed.png\">\n  <link rel=\"shortcut icon\" href=\"//www.blivesta.com/ico/favicon.ico\">\n  <link rel=\"stylesheet\" href=\"https://unpkg.com/sircus@3.0.0/css/sircus.min.css\" charset=\"utf-8\" />\n  <style>\n    #carbonads .carbon-wrap .carbon-text {\n      padding-top: 10px;\n      display: block;\n    }\n    #carbonads a {\n      color: #999;\n    }\n  </style>\n</head>\n<body>\n  <header class=\"Container t-gutter t-ptGt t-pbGt\">\n    <h1 class=\"js-loaded t-fontGt t-ptGt\" data-chaffle data-chaffle-onLoad>Chaffle.js</h1>\n    <h2 class=\"t-mbXl\" data-chaffle=\"en\">Shuffle Characters Randomly.</h2>\n    <ul class=\"ListInline t-mbGt t-alignMiddle\">\n      <li>\n        <a class=\"Button\" href=\"https://github.com/blivesta/chaffle\" target=\"_blank\">Download on GitHub</a>\n      </li>\n      <li class=\"t-mbXs\">\n        <iframe class=\"github-btn\" src=\"http://ghbtns.com/github-btn.html?user=blivesta&amp;repo=chaffle&amp;type=star&amp;count=true\" allowtransparency=\"true\" frameborder=\"0\" scrolling=\"0\" width=\"95\" height=\"20\"></iframe>\n      </li>\n      <li class=\"t-mbXs\">\n        <iframe id=\"twitter-widget-2\" scrolling=\"no\" frameborder=\"0\" allowtransparency=\"true\" class=\"twitter-share-button twitter-share-button-rendered twitter-tweet-button\" title=\"Twitter Tweet Button\" src=\"http://platform.twitter.com/widgets/tweet_button.a9003d9964444592507bbb36b98c709b.en.html#dnt=false&amp;id=twitter-widget-2&amp;lang=en&amp;original_referer=http%3A%2F%2Fgit.blivesta.com%2Fchaffle%2F&amp;size=m&amp;text=Chaffle: Shuffle Characters Randomly\" style=\"position: static; visibility: visible; width: 61px; height: 20px;\" data-url=\"http://git.blivesta.com/chaffle/\"></iframe>\n      </li>\n    </ul>\n    <p class=\"carbonAds t-none t-sm-block t-fixed t-top0 t-right0 t-fontXs t-paSm t-mb0\" style=\"width: 130px; z-index: 1000;\">\n      <script async type=\"text/javascript\" src=\"//cdn.carbonads.com/carbon.js?zoneid=1673&serve=C6AILKT&placement=blivesta\" id=\"_carbonads_js\"></script>\n    </p>\n  </header>\n\n  <main role=\"main\">\n\n    <section class=\"Container t-gutter t-ptLg t-mbGt\">\n      <h2 class=\"t-pbSm t-mbXl t-borderBlack t-borderBottom2x \">Example: mouseover</h2>\n\n      <div class=\"Grid t-borderBlack t-borderBottom t-pbLg\">\n        <div class=\"Grid-col t-sm-width4of12\">\n          <p data-chaffle=\"en\">English</p>\n        </div>\n\n        <div class=\"Grid-col t-sm-width4of12\">\n          <p data-chaffle=\"ja\">日本語</p>\n        </div>\n\n        <div class=\"Grid-col t-sm-width4of12\">\n          <p data-chaffle=\"ja-hiragana\">ひらがな</p>\n        </div>\n\n        <div class=\"Grid-col t-sm-width4of12\">\n          <p data-chaffle=\"ja-katakana\">カタカナ</p>\n        </div>\n\n        <div class=\"Grid-col t-sm-width4of12\">\n          <p data-chaffle=\"ua\">Українська</p>\n        </div>\n\n        <div class=\"Grid-col t-sm-width4of12\">\n          <p data-chaffle=\"cn\">中文</p>\n        </div>\n      </div>\n    </section>\n\n\n    <section class=\"Container t-gutter t-ptHg\">\n      <h2 class=\"t-pbSm t-mbXl t-borderBlack t-borderBottom2x \">Usage</h2>\n\n      <article class=\"Grid t-gutterReset\">\n        <div class=\"Grid-col t-sm-width4of12\">\n          <h3 class=\"t-mt0 t-mbSm\">Link required files</h3>\n          <ul class=\"ListReset\">\n            <li><a href=\"https://github.com/blivesta/chaffle\" target=\"_blank\">Download on GitHub</a></li>\n            <li><a href=\"https://www.npmjs.com/package/chaffle\" target=\"_blank\">npm</a>: <code class=\"t-colorGray40\">$npm install chaffle</code></li>\n          </ul>\n        </div>\n\n        <div class=\"Grid-col t-sm-width8of12 t-mbHg\">\n          <script src=\"https://gist.github.com/blivesta/2c7f7c82d35b0fa2a0e1ac11af2b4965.js\"></script>\n        </div>\n      </article>\n\n      <article class=\"Grid t-gutterReset\">\n        <div class=\"Grid-col t-sm-width4of12\">\n          <h3 class=\"t-mt0\">HTML Markup</h3>\n        </div>\n\n        <div class=\"Grid-col t-sm-width8of12 t-mbHg\">\n          <script src=\"https://gist.github.com/blivesta/c24393e10c4ae3a5949ca8587922722d.js\"></script>\n        </div>\n      </article>\n\n      <article class=\"Grid t-gutterReset\">\n        <div class=\"Grid-col t-sm-width4of12\">\n          <h3 class=\"t-mt0 \">Call the Chaffle</h3>\n        </div>\n\n        <div class=\"Grid-col t-sm-width8of12 t-mbHg\">\n          <script src=\"https://gist.github.com/blivesta/3ad4c355b3135bef7dc28943998f96eb.js\"></script>\n          <script src=\"https://gist.github.com/blivesta/5314944693cb8c1756c105b2b9b337e1.js\"></script>\n        </div>\n      </article>\n\n      <article class=\"Grid t-gutterReset\">\n        <div class=\"Grid-col t-sm-width4of12\">\n          <h3 class=\"t-mt0\">Options</h3>\n        </div>\n\n        <div class=\"Grid-col t-sm-width8of12\">\n          <script src=\"https://gist.github.com/blivesta/71f819c7a2c1b1e743acc85b1f9534d4.js\"></script>\n        </div>\n      </article>\n\n    </section>\n\n  </main>\n\n  <footer class=\"Container t-gutter t-ptHg\">\n    <div class=\" t-borderBlack t-borderTop2x t-ptXl t-pbMd\">\n\n      <div class=\"Grid t-gutterReset\">\n        <div class=\"Grid-col t-sm-widthHalf\">\n          <h3 class=\"t-mt0\">OTHER PROJECTS</h3>\n          <ul class=\"ListInline\">\n            <li><a href=\"http://sircus.blivesta.com/\" target=\"_blank\">Sircus</a></li>\n            <li><a href=\"http://git.blivesta.com/animsition/\" target=\"_blank\">Animsition</a></li>\n            <li><a href=\"http://git.blivesta.com/drawer/\">Drawer</a></li>\n            <li><a href=\"http://git.blivesta.com/crosscover/\">Crosscover</a></li>\n            <li><a href=\"https://github.com/blivesta/svgpack\">SVGPack</a></li>\n          </ul>\n        </div>\n\n        <div class=\"Grid-col t-sm-widthHalf t-sm-alignRight\">\n          <p class=\"t-mb0\">\n            <small>Released under the MIT license.</small>\n          </p>\n          <p>\n            <small>Create by <a href=\"http://blivesta.com\" target=\"_blank\">blivesta</a></small>\n          </p>\n        </div>\n      </div>\n\n    </div>\n\n  </footer>\n\n\n  <script src=\"chaffle.min.js\" charset=\"utf-8\"></script>\n\n  <script>\n    var elements = document.querySelectorAll('[data-chaffle]');\n    var elm = document.querySelectorAll('[data-chaffle-onLoad]');\n\n    Array.prototype.forEach.call(elements, function (el) {\n      var chaffle = new Chaffle(el)\n      el.addEventListener('mouseover', function () {\n        chaffle.init();\n      });\n    });\n\n    Array.prototype.forEach.call(elm, function (el) {\n      var chaffle = new Chaffle(el, {\n        delay: 200\n      })\n      setInterval(function(){\n        chaffle.init();\n      }, 8000)\n    });\n  </script>\n\n  <!-- Google analytics -->\n  <script>\n    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-50883754-1', 'blivesta.com');ga('require', 'displayfeatures');ga('send', 'pageview');\n  </script>\n  <!-- Twitter -->\n  <script>\n    !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');\n  </script>\n\n</body>\n</html>\n"
  },
  {
    "path": "karma.conf.js",
    "content": "module.exports = function (config) {\n  config.set({\n    autoWatch: true,\n    browsers: ['PhantomJS'],\n    frameworks: ['mocha', 'chai'],\n    files: [\n      'test/fixtures/fixture.html',\n      'test/index.js',\n    ],\n    plugins: [\n      'karma-chai',\n      'karma-phantomjs-launcher',\n      'karma-html2js-preprocessor',\n      'karma-mocha',\n      'karma-mocha-reporter',\n      'karma-webpack',\n    ],\n    preprocessors: {\n      'test/fixtures/fixture.html': ['html2js'],\n      'test/index.js': ['webpack'],\n    },\n    proxies: {\n      '/test/fixtures/': '/base/test/fixtures/',\n    },\n    reporters: ['mocha'],\n    webpack: {\n      devtool: 'inline-source-map',\n      module: {\n        loaders: [\n          {\n            test: /\\.js$/,\n            loader: 'babel-loader',\n            exclude: /node_modules/,\n            query: {\n              presets: ['es2015'],\n              plugins: ['babel-plugin-espower'],\n            },\n          },\n        ],\n      },\n    },\n  })\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"chaffle\",\n  \"version\": \"2.1.0\",\n  \"description\": \"Shuffle Characters Randomly.\",\n  \"main\": \"src/chaffle.js\",\n  \"scripts\": {\n    \"dev\": \"karma start\",\n    \"lint\": \"eslint ./src/chaffle.js\",\n    \"minify\": \"uglifyjs ./src/chaffle.js -o ./docs/chaffle.min.js\",\n    \"start\": \"npm run lint && npm run minify && npm run dev\",\n    \"serve\": \"browser-sync start --server ./docs --files index.html\",\n    \"test\": \"karma start --single-run\"\n  },\n  \"devDependencies\": {\n    \"browser-sync\": \"^2.14.0\",\n    \"babel-core\": \"^6.7.4\",\n    \"babel-loader\": \"^6.2.4\",\n    \"babel-plugin-espower\": \"^2.1.2\",\n    \"babel-preset-es2015\": \"^6.6.0\",\n    \"chai\": \"^4.2.0\",\n    \"eslint\": \"^6.8.0\",\n    \"eslint-config-standard\": \"^5.1.0\",\n    \"eslint-plugin-standard\": \"^1.3.2\",\n    \"eslint-plugin-promise\": \"^1.1.0\",\n    \"karma\": \"^4.4.1\",\n    \"karma-chai\": \"^0.1.0\",\n    \"karma-html2js-preprocessor\": \"^1.1.0\",\n    \"karma-mocha\": \"^1.3.0\",\n    \"karma-mocha-reporter\": \"^2.0.0\",\n    \"karma-phantomjs-launcher\": \"^1.0.0\",\n    \"karma-webpack\": \"^1.7.0\",\n    \"mocha\": \"^7.0.0\",\n    \"phantomjs-prebuilt\": \"^2.1.7\",\n    \"uglify-js\": \"^3.7.4\",\n    \"webpack\": \"^1.12.14\"\n  },\n  \"repository\": {\n    \"url\": \"https://github.com/blivesta/chaffle.git\",\n    \"type\": \"git\"\n  },\n  \"license\": \"MIT\",\n  \"keywords\": [\n    \"effect\"\n  ],\n  \"author\": {\n    \"name\": \"blivesta\",\n    \"url\": \"http://www.blivesta.com\"\n  }\n}\n"
  },
  {
    "path": "src/chaffle.js",
    "content": "/*!\n * Chaffle\n * Shuffle Characters Randomly.\n * http://blivesta.github.io/chaffle\n * License : MIT\n * Author : blivesta (http://blivesta.com/)\n */\n(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    define([], factory)\n  } else if (typeof exports === 'object') {\n    module.exports = factory()\n  } else {\n    root.Chaffle = factory()\n  }\n})(this, function () {\n  'use strict'\n\n  function extend () {\n    var extended = {}\n    var deep = false\n\n    if (Object.prototype.toString.call(arguments[0]) === '[object Boolean]') {\n      deep = arguments[0]\n      i++\n    }\n\n    function merge (obj) {\n      for (var prop in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n          if (deep && Object.prototype.toString.call(obj[prop]) === '[object Object]') {\n            extended[prop] = extend(true, extended[prop], obj[prop])\n          } else {\n            extended[prop] = obj[prop]\n          }\n        }\n      }\n    }\n\n    for (var i = 0; i < arguments.length; i++) {\n      var obj = arguments[i]\n      merge(obj)\n    }\n\n    return extended\n  }\n\n  function Chaffle (element, options) {\n    var data = {}\n    var dataLang = element.getAttribute('data-chaffle')\n    var dataSpeed = element.getAttribute('data-chaffle-speed')\n    var dataDelay = element.getAttribute('data-chaffle-delay')\n\n    if (dataLang.length !== 0) data.lang = dataLang\n    if (dataSpeed !== null) data.speed = Number(dataSpeed)\n    if (dataDelay !== null) data.delay = Number(dataDelay)\n\n    this.options = {\n      lang: 'en',\n      speed: 20,\n      delay: 100,\n    }\n\n    this.options = extend(this.options, options, data)\n    this.element = element\n    this.text = this.element.textContent\n    this.substitution = ''\n    this.state = false\n    this.shuffleProps = []\n    this.reinstateProps = []\n  }\n\n  Chaffle.prototype = {\n    constructor: Chaffle,\n    init: function () {\n      var self = this\n\n      if (self.state) return\n\n      self.clearShuffleTimer()\n      self.clearReinstateTimer()\n\n      self.state = true\n      self.substitution = ''\n      self.shuffleProps = []\n      self.reinstateProps = []\n\n      var shuffleTimer = setInterval(function () {\n        self.shuffle()\n      }, self.options.speed)\n\n      var reinstateTimer = setInterval(function () {\n        self.reinstate()\n      }, self.options.delay)\n\n      self.shuffleProps = shuffleTimer\n      self.reinstateProps = reinstateTimer\n    },\n\n    shuffle: function () {\n      this.element.textContent = this.substitution\n\n      var textLength = this.text.length\n      var substitutionLength = this.substitution.length\n\n      if ((textLength - substitutionLength) > 0) {\n        for (var i = 0; i <= textLength - substitutionLength; i++) {\n          this.element.textContent = this.element.textContent + this.randomStr()\n        }\n      } else {\n        this.clearShuffleTimer()\n      }\n    },\n\n    reinstate: function () {\n      var textLength = this.text.length\n      var substitutionLength = this.substitution.length\n\n      if (substitutionLength < textLength) {\n        this.element.textContent = this.substitution = this.text.substr(0, substitutionLength + 1)\n      } else {\n        this.clearReinstateTimer()\n      }\n\n      this.state = false\n    },\n\n    clearShuffleTimer: function () {\n      return clearInterval(this.shuffleProps)\n    },\n\n    clearReinstateTimer: function () {\n      return clearInterval(this.reinstateProps)\n    },\n\n    randomStr: function () {\n      var str\n      switch (this.options.lang) {\n        case 'en':\n          str = String.fromCharCode(33 + Math.round(Math.random() * 99))\n          break\n\n        case 'ja':\n          str = String.fromCharCode(19968 + Math.round(Math.random() * 80))\n          break\n\n        case 'ja-hiragana':\n          str = String.fromCharCode(12353 + Math.round(Math.random() * 85))\n          break\n\n        case 'ja-katakana':\n          str = String.fromCharCode(12449 + Math.round(Math.random() * 85))\n          break\n\n        case 'ua':\n          str = String.fromCharCode(1040 + Math.round(Math.random() * 55))\n          break\n\n        case 'cn':\n          str = String.fromCharCode(19968 + Math.floor(Math.random() * 20901))\n          break\n      }\n      return str\n    },\n  }\n\n  return Chaffle\n})\n"
  },
  {
    "path": "test/fixtures/fixture.html",
    "content": "  <h1 class=\"default\" data-chaffle=\"en\">Default</h1>\n  <h2 class=\"dataOpt\" data-chaffle=\"ja\" data-chaffle-speed=\"100\" data-chaffle-delay=\"200\">Data options</h2>\n"
  },
  {
    "path": "test/index.js",
    "content": "import Chaffle from '../src/chaffle'\n\ndescribe('Chaffle', () => {\n  before(() => {\n    document.body.innerHTML = window.__html__['test/fixtures/fixture.html']\n  })\n\n  after(() => {\n    document.body.innerHTML = ''\n  })\n\n  describe('type of options', () => {\n    it('lang', (done) => {\n      const element = document.querySelectorAll('.default')\n      Array.prototype.forEach.call(element, function (el) {\n        const chaffle = new Chaffle(el)\n        expect(chaffle.options.lang).to.be.a('string')\n        done()\n      })\n    })\n\n    it('speed', (done) => {\n      const element = document.querySelectorAll('.default')\n      Array.prototype.forEach.call(element, function (el) {\n        const chaffle = new Chaffle(el)\n        expect(chaffle.options.speed).to.be.a('number')\n        done()\n      })\n    })\n\n    it('delay', (done) => {\n      const element = document.querySelectorAll('.default')\n      Array.prototype.forEach.call(element, function (el) {\n        const chaffle = new Chaffle(el)\n        expect(chaffle.options.delay).to.be.a('number')\n        done()\n      })\n    })\n  })\n\n  describe('data options', () => {\n    it('lang', (done) => {\n      const element = document.querySelectorAll('.dataOpt')\n      Array.prototype.forEach.call(element, function (el) {\n        const chaffle = new Chaffle(el)\n        expect(chaffle.options.lang).to.equal('ja')\n        done()\n      })\n    })\n\n    it('speed', (done) => {\n      const element = document.querySelectorAll('.dataOpt')\n      Array.prototype.forEach.call(element, function (el) {\n        const chaffle = new Chaffle(el)\n        expect(chaffle.options.speed).to.equal(100)\n        done()\n      })\n    })\n\n    it('delay', (done) => {\n      const element = document.querySelectorAll('.dataOpt')\n      Array.prototype.forEach.call(element, function (el) {\n        const chaffle = new Chaffle(el)\n        expect(chaffle.options.delay).to.equal(200)\n        done()\n      })\n    })\n  })\n})\n"
  }
]