changeset 18:392c2a5ebab4

Amber 0.24.0.
author Mikhail Kryshen <mikhail@kryshen.net>
date Mon, 17 Feb 2020 04:14:04 +0300
parents 4943c163d0b4
children 733ad1ed5548
files Gruntfile.js README.md bower.json config-browser.js config-node.js deploy.js index.html local.amd.json package-lock.json package.json src/Serpentron.st
diffstat 11 files changed, 1151 insertions(+), 114 deletions(-) [+]
line diff
     1.1 --- a/Gruntfile.js	Thu Apr 13 15:44:35 2017 +0300
     1.2 +++ b/Gruntfile.js	Mon Feb 17 04:14:04 2020 +0300
     1.3 @@ -4,18 +4,32 @@
     1.4      // These plugins provide necessary tasks.
     1.5      grunt.loadNpmTasks('grunt-contrib-clean');
     1.6      grunt.loadNpmTasks('grunt-contrib-requirejs');
     1.7 -    grunt.loadNpmTasks('grunt-execute');
     1.8 -    grunt.loadNpmTasks('amber-dev');
     1.9 +    grunt.loadNpmTasks('grunt-exec');
    1.10 +    grunt.loadNpmTasks('@ambers/sdk');
    1.11  
    1.12      var path = require('path'),
    1.13 -        helpers = require('amber-dev').helpers;
    1.14 +        helpers = require('@ambers/sdk').helpers;
    1.15  
    1.16      // Default task.
    1.17      grunt.registerTask('default', ['amdconfig:app', 'amberc:all']);
    1.18 -    grunt.registerTask('test', ['amdconfig:app', 'requirejs:test_runner', 'execute:test_runner', 'clean:test_runner']);
    1.19 +    grunt.registerTask('test', ['amdconfig:app', 'requirejs:test_runner', 'exec:test_runner', 'clean:test_runner']);
    1.20      grunt.registerTask('devel', ['amdconfig:app', 'requirejs:devel']);
    1.21      grunt.registerTask('deploy', ['amdconfig:app', 'requirejs:deploy']);
    1.22  
    1.23 +    var id = function (x) {
    1.24 +        return x
    1.25 +    };
    1.26 +
    1.27 +    function mkDefine (deps, cb) {
    1.28 +        return "define(" + JSON.stringify(deps) + "," + cb + ");"
    1.29 +    }
    1.30 +
    1.31 +    var cbRequireAndPromiseMain = function (require) {
    1.32 +        return new Promise(function (resolve, reject) {
    1.33 +            require(["app/main"], resolve, reject);
    1.34 +        });
    1.35 +    };
    1.36 +
    1.37      // Project configuration.
    1.38      grunt.initConfig({
    1.39          // Metadata.
    1.40 @@ -28,16 +42,16 @@
    1.41          // task configuration
    1.42          amberc: {
    1.43              options: {
    1.44 -                amber_dir: path.join(__dirname, "bower_components", "amber"),
    1.45 +                amber_dir: path.join(__dirname, "node_modules", "@ambers", "lang"),
    1.46                  configFile: "config.js"
    1.47              },
    1.48              all: {
    1.49                  src: [
    1.50 -                    'src/Serpentron.st', // list all sources in dependency order
    1.51 +                    'src/Serpentron.st', 'src/Serpentron-Backend.st', // list all sources in dependency order
    1.52                      'src/Serpentron-Tests.st' // list all tests in dependency order
    1.53                  ],
    1.54                  amd_namespace: 'amber-serpentron',
    1.55 -                libraries: ['amber_core/SUnit', 'amber/web/Web', 'silk/Silk']
    1.56 +                libraries: ['amber/core/SUnit', 'silk/Silk']
    1.57              }
    1.58          },
    1.59  
    1.60 @@ -45,55 +59,58 @@
    1.61  
    1.62          requirejs: {
    1.63              options: {
    1.64 +                mainConfigFile: "config.js",
    1.65 +                paths: {
    1.66 +                    "es6-promise/auto": "node_modules/es6-promise/dist/es6-promise.auto"
    1.67 +                },
    1.68                  useStrict: true
    1.69              },
    1.70              deploy: {
    1.71                  options: {
    1.72 -                    mainConfigFile: "config.js",
    1.73                      rawText: {
    1.74 -                        "amber/compatibility": "/*stub*/",
    1.75 -                        "amber/Platform": "/*stub*/",
    1.76 -                        "app": 'define(["deploy"],function(x){return x});'
    1.77 +                        "helios/index": "",
    1.78 +                        "app": mkDefine(["require", "es6-promise/auto"], cbRequireAndPromiseMain),
    1.79 +                        "app/main": mkDefine(["deploy", "amber/core/Platform-Browser"], id)
    1.80                      },
    1.81                      pragmas: {
    1.82                          excludeIdeData: true,
    1.83                          excludeDebugContexts: true
    1.84                      },
    1.85 -                    include: ['config', 'config-browser', 'node_modules/requirejs/require', 'app', 'amber/lazypack'],
    1.86 +                    include: ['config', 'node_modules/requirejs/require', 'app'],
    1.87 +                    findNestedDependencies: true,
    1.88 +                    exclude: ['helios/index'],
    1.89                      optimize: "uglify2",
    1.90                      out: "the.js"
    1.91                  }
    1.92              },
    1.93              devel: {
    1.94                  options: {
    1.95 -                    mainConfigFile: "config.js",
    1.96                      rawText: {
    1.97 -                        "amber/compatibility": "/*stub*/",
    1.98 -                        "amber/Platform": "/*stub*/",
    1.99 -                        "app": 'define(["devel"],function(x){return x});'
   1.100 +                        "app": mkDefine(["require", "es6-promise/auto"], cbRequireAndPromiseMain),
   1.101 +                        "app/main": mkDefine(["devel", "amber/core/Platform-Browser"], id)
   1.102                      },
   1.103 -                    include: ['config', 'config-browser', 'node_modules/requirejs/require', 'app'],
   1.104 -                    exclude: ['devel'],
   1.105 +                    include: ['config', 'node_modules/requirejs/require', 'app', 'app/main'],
   1.106 +                    exclude: ['devel', 'amber/core/Platform-Browser'],
   1.107                      out: "the.js"
   1.108                  }
   1.109              },
   1.110              test_runner: {
   1.111                  options: {
   1.112 -                    mainConfigFile: "config.js",
   1.113                      rawText: {
   1.114 -                        "app": "(" + function () {
   1.115 -                            define(["testing", "amber_devkit/NodeTestRunner"], function (amber) {
   1.116 -                                amber.initialize().then(function () {
   1.117 -                                    amber.globals.NodeTestRunner._main();
   1.118 -                                });
   1.119 +                        "jquery": "/* do not load in node test runner */",
   1.120 +                        "app/main": mkDefine(["testing", "amber/core/Platform-Node", "amber_devkit/NodeTestRunner"], function (amber) {
   1.121 +                            amber.initialize().then(function () {
   1.122 +                                amber.globals.NodeTestRunner._main();
   1.123                              });
   1.124 -                        } + "());"
   1.125 +                        }),
   1.126 +                        "app": mkDefine(["require"], cbRequireAndPromiseMain)
   1.127                      },
   1.128                      paths: {"amber_devkit": helpers.libPath},
   1.129                      pragmas: {
   1.130                          excludeIdeData: true
   1.131                      },
   1.132 -                    include: ['config-node', 'app', 'amber/lazypack'],
   1.133 +                    include: ['app'],
   1.134 +                    findNestedDependencies: true,
   1.135                      insertRequire: ['app'],
   1.136                      optimize: "none",
   1.137                      wrap: helpers.nodeWrapperWithShebang,
   1.138 @@ -102,10 +119,8 @@
   1.139              }
   1.140          },
   1.141  
   1.142 -        execute: {
   1.143 -            test_runner: {
   1.144 -                src: ['test_runner.js']
   1.145 -            }
   1.146 +        exec: {
   1.147 +            test_runner: 'node test_runner.js'
   1.148          },
   1.149  
   1.150          clean: {
     2.1 --- a/README.md	Thu Apr 13 15:44:35 2017 +0300
     2.2 +++ b/README.md	Mon Feb 17 04:14:04 2020 +0300
     2.3 @@ -9,15 +9,13 @@
     2.4  
     2.5  ## Getting Started
     2.6  
     2.7 -Install Amber and create an Amber project, as shown in
     2.8 -[Amber Instructions](https://github.com/amber-smalltalk/amber#prerequisites).
     2.9 +Install Amber as shown in
    2.10 +[Amber Instructions](https://lolg.it/amber/amber#prerequisities).
    2.11  
    2.12  To bring project alive after cloning the repository:
    2.13  
    2.14  ```sh
    2.15 -npm install
    2.16 -bower install
    2.17 -grunt default devel
    2.18 +npm run init
    2.19  ```
    2.20  
    2.21  Developing the project (after brought alive): start server with 
     3.1 --- a/bower.json	Thu Apr 13 15:44:35 2017 +0300
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,39 +0,0 @@
     3.4 -{
     3.5 -  "name": "serpentron",
     3.6 -  "description": "Implementation of a classic arcade game. Survive as long as possible without hitting anything.",
     3.7 -  "ignore": [
     3.8 -    "**/.*",
     3.9 -    "node_modules",
    3.10 -    "bower_components",
    3.11 -    "/*.js",
    3.12 -    "/*.html",
    3.13 -    "test",
    3.14 -    "tests"
    3.15 -  ],
    3.16 -  "authors": [
    3.17 -    {
    3.18 -      "name": "Mikhail Kryshen",
    3.19 -      "email": "mikhail@kryshen.net"
    3.20 -    }
    3.21 -  ],
    3.22 -  "homepage": "http://www.games1729.com/serpentron/",
    3.23 -  "keywords": [
    3.24 -    "Amber",
    3.25 -    "Smalltalk"
    3.26 -  ],
    3.27 -  "license": [
    3.28 -    "GPL-3.0"
    3.29 -  ],
    3.30 -  "private": false,
    3.31 -  "dependencies": {
    3.32 -    "amber": "^0.18.3",
    3.33 -    "amber-compat-es2015": "^0.1.5",
    3.34 -    "domite": "^0.6.0",
    3.35 -    "silk": "^0.2.3"
    3.36 -  },
    3.37 -  "devDependencies": {
    3.38 -    "amber-contrib-legacy": "^0.4.2",
    3.39 -    "amber-ide-starter-dialog": "^0.1.0",
    3.40 -    "helios": "^0.7.1"
    3.41 -  }
    3.42 -}
     4.1 --- a/config-browser.js	Thu Apr 13 15:44:35 2017 +0300
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,2 +0,0 @@
     4.4 -define("amber/Platform", ["amber_core/Platform-Browser"], {});
     4.5 -define("amber/compatibility", ["amber/browser-compatibility"], {});
     5.1 --- a/config-node.js	Thu Apr 13 15:44:35 2017 +0300
     5.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.3 @@ -1,7 +0,0 @@
     5.4 -// This file is used to make additional changes
     5.5 -// when building an app to run in node.js.
     5.6 -// Free to edit. You can break tests (cli test runner uses
     5.7 -// this to build itself - it is a node executable).
     5.8 -define("amber/Platform", ["amber_core/Platform-Node"], {});
     5.9 -define("amber/compatibility", ["amber/node-compatibility"], {});
    5.10 -define("jquery", {});
     6.1 --- a/deploy.js	Thu Apr 13 15:44:35 2017 +0300
     6.2 +++ b/deploy.js	Mon Feb 17 04:14:04 2020 +0300
     6.3 @@ -1,8 +1,5 @@
     6.4  define([
     6.5      'amber/deploy',
     6.6 -    // Should not be required in deployment,
     6.7 -    // but something still tries to load it.
     6.8 -    'jquery',
     6.9      // --- packages to be deployed begin here ---
    6.10      'amber-serpentron/Serpentron'
    6.11      // --- packages to be deployed end here ---
     7.1 --- a/index.html	Thu Apr 13 15:44:35 2017 +0300
     7.2 +++ b/index.html	Mon Feb 17 04:14:04 2020 +0300
     7.3 @@ -153,15 +153,20 @@
     7.4      <body>
     7.5          <div id="serpentron"></div>
     7.6          <script type='text/javascript'>
     7.7 -         require(['app'], function (amber) {
     7.8 -             amber.initialize({
     7.9 -                 //used for all new packages in IDE
    7.10 -                 'transport.defaultAmdNamespace': "amber-serpentron"
    7.11 -             }).then(function () {
    7.12 -                 require(["amber-ide-starter-dialog"], function (dlg) { dlg.start(); });
    7.13 -                 amber.globals.Serpentron._start();
    7.14 -             });
    7.15 -         });
    7.16 +          var global = typeof global === "undefined" ? window : global || window;
    7.17 +          new Promise(function (resolve, reject) {
    7.18 +              require(['app'], resolve, reject);
    7.19 +          }).then(function (amber) {
    7.20 +              return amber.initialize({
    7.21 +                  //used for all new packages in IDE
    7.22 +                  'transport.defaultAmdNamespace': "amber-serpentron"
    7.23 +              }).then(function () {
    7.24 +                  require(["amber-ide-starter-dialog"], function (dlg) {
    7.25 +                      dlg.start();
    7.26 +                  });
    7.27 +                  amber.globals.Serpentron._start();
    7.28 +              });
    7.29 +          });
    7.30          </script>
    7.31      </body>
    7.32  </html>
     8.1 --- a/local.amd.json	Thu Apr 13 15:44:35 2017 +0300
     8.2 +++ b/local.amd.json	Mon Feb 17 04:14:04 2020 +0300
     8.3 @@ -1,5 +1,5 @@
     8.4  {
     8.5 -    "paths": {
     8.6 -        "amber-serpentron": "src"
     8.7 -    }
     8.8 +  "paths": {
     8.9 +    "amber-serpentron": "src"
    8.10 +  }
    8.11  }
    8.12 \ No newline at end of file
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/package-lock.json	Mon Feb 17 04:14:04 2020 +0300
     9.3 @@ -0,0 +1,1065 @@
     9.4 +{
     9.5 +  "name": "serpentron",
     9.6 +  "version": "1.0.1",
     9.7 +  "lockfileVersion": 1,
     9.8 +  "requires": true,
     9.9 +  "dependencies": {
    9.10 +    "@ambers/contrib-jquery": {
    9.11 +      "version": "0.7.0",
    9.12 +      "resolved": "https://registry.npmjs.org/@ambers/contrib-jquery/-/contrib-jquery-0.7.0.tgz",
    9.13 +      "integrity": "sha512-3rXVCaGr8zsZz0HdbGtsKCRHaf1dC1SHyU7ttWAI/V7x+M7w5VYfsKTvhHCUu0rXLM/4MwElPZafzlxW84qHNA==",
    9.14 +      "dev": true,
    9.15 +      "requires": {
    9.16 +        "@ambers/lang": ">0.22.6",
    9.17 +        "jquery": ">=2"
    9.18 +      }
    9.19 +    },
    9.20 +    "@ambers/contrib-legacy": {
    9.21 +      "version": "0.8.9",
    9.22 +      "resolved": "https://registry.npmjs.org/@ambers/contrib-legacy/-/contrib-legacy-0.8.9.tgz",
    9.23 +      "integrity": "sha512-X/slvxURIV0GPTNOju7x0JpSKDSFY3DCNxhhYoIYmIG6KBPtqXb+MckDy37EYK0t1X9UDxdCaHTYH54oipLtfg==",
    9.24 +      "dev": true,
    9.25 +      "requires": {
    9.26 +        "@ambers/contrib-web": ">=0.7.3",
    9.27 +        "@ambers/lang": ">0.23.0",
    9.28 +        "codemirror": ">=5.44.0",
    9.29 +        "jquery-ui-dist": ">=1.9.2",
    9.30 +        "require-css": "^0.1.10"
    9.31 +      }
    9.32 +    },
    9.33 +    "@ambers/contrib-web": {
    9.34 +      "version": "0.8.2",
    9.35 +      "resolved": "https://registry.npmjs.org/@ambers/contrib-web/-/contrib-web-0.8.2.tgz",
    9.36 +      "integrity": "sha512-KF25OAJBqAY6MKNDNZ0LN+oXsrzV4uTbi5EobOX0BMB+aQgbxRTQ74yPsJk2eMjBkCOQD0p28haO6JF8heFLHw==",
    9.37 +      "dev": true,
    9.38 +      "requires": {
    9.39 +        "@ambers/contrib-jquery": ">=0.5.0",
    9.40 +        "@ambers/lang": ">0.22.6"
    9.41 +      }
    9.42 +    },
    9.43 +    "@ambers/domite": {
    9.44 +      "version": "0.9.0",
    9.45 +      "resolved": "https://registry.npmjs.org/@ambers/domite/-/domite-0.9.0.tgz",
    9.46 +      "integrity": "sha512-Ai39VZIxFaJr8gomTI+1SDg6QBnELJMMJwP5R4YHFFanWE811miowGHai9kI21CzJlkoxG7LAdeEfvY10yrFCA==",
    9.47 +      "requires": {
    9.48 +        "@ambers/lang": ">0.22.6"
    9.49 +      }
    9.50 +    },
    9.51 +    "@ambers/helios": {
    9.52 +      "version": "0.11.12",
    9.53 +      "resolved": "https://registry.npmjs.org/@ambers/helios/-/helios-0.11.12.tgz",
    9.54 +      "integrity": "sha512-gtuLozVGujvTkllmvjyZ9hB3qQb5gaqsaPmuZiG+G+Cubb/bVv3N8kLmNPhxpyJtnUQs0rk9QvbOKq7fqvQhQg==",
    9.55 +      "dev": true,
    9.56 +      "requires": {
    9.57 +        "@ambers/contrib-web": ">=0.7.3",
    9.58 +        "@ambers/lang": ">0.23.0",
    9.59 +        "bootstrap": "^3.3.7",
    9.60 +        "codemirror": ">=5.44.0",
    9.61 +        "es6-promise": "^4.2.4",
    9.62 +        "jquery-ui-dist": ">=1.9.2",
    9.63 +        "require-css": "^0.1.10",
    9.64 +        "showdown": "^0.5.0",
    9.65 +        "typeahead.js": "^0.10.5"
    9.66 +      }
    9.67 +    },
    9.68 +    "@ambers/ide-starter-modal": {
    9.69 +      "version": "0.2.0",
    9.70 +      "resolved": "https://registry.npmjs.org/@ambers/ide-starter-modal/-/ide-starter-modal-0.2.0.tgz",
    9.71 +      "integrity": "sha512-ckCLdvbudDkXP+mdIOWUI9WY7n+Qdnu2kJ3tKFizYWWQZFJe7tmnroz6BauFpocplr+bRFhY80I/8VKYdN43tA==",
    9.72 +      "dev": true,
    9.73 +      "requires": {
    9.74 +        "mousetrap": "^1.6.2",
    9.75 +        "require-css": "^0.1.10",
    9.76 +        "tingle.js": "^0.13.2"
    9.77 +      }
    9.78 +    },
    9.79 +    "@ambers/lang": {
    9.80 +      "version": "0.24.0",
    9.81 +      "resolved": "https://registry.npmjs.org/@ambers/lang/-/lang-0.24.0.tgz",
    9.82 +      "integrity": "sha512-WahzI5NIbQN0qZqsL2cpObwq0oqexYck21gEZrqiYvKPsr/52DGC9gcrSX+mqqqNhLp2VigJUVI06w4BwydblQ=="
    9.83 +    },
    9.84 +    "@ambers/sdk": {
    9.85 +      "version": "0.12.1",
    9.86 +      "resolved": "https://registry.npmjs.org/@ambers/sdk/-/sdk-0.12.1.tgz",
    9.87 +      "integrity": "sha512-V0kQiIEJLxbcWIU4zFV8WL5FFWg8YzXViicW4Uf9I4XfUxhkBly+/FUQUeTG2ybIrddU8b4RFeaEyTZJG3fNYw==",
    9.88 +      "dev": true,
    9.89 +      "requires": {
    9.90 +        "amd-config-builder": "^0.3.0",
    9.91 +        "amdefine": ">=0.1.1",
    9.92 +        "requirejs": "^2.1.19",
    9.93 +        "requirejs-text": "^2.0.12"
    9.94 +      }
    9.95 +    },
    9.96 +    "@ambers/silk": {
    9.97 +      "version": "0.5.1",
    9.98 +      "resolved": "https://registry.npmjs.org/@ambers/silk/-/silk-0.5.1.tgz",
    9.99 +      "integrity": "sha512-ntUJtp8CyCNzXLJAi+l6ymE/+m60fBJTqYpFC0rfm3pOfyXhc99SWQ8j+8eaLFNpkjfI2cGdE8JPox1kc3BhDg==",
   9.100 +      "requires": {
   9.101 +        "@ambers/domite": "^0.9.0",
   9.102 +        "@ambers/lang": ">0.22.6"
   9.103 +      }
   9.104 +    },
   9.105 +    "abbrev": {
   9.106 +      "version": "1.1.1",
   9.107 +      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
   9.108 +      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
   9.109 +      "dev": true
   9.110 +    },
   9.111 +    "amd-config-builder": {
   9.112 +      "version": "0.3.1",
   9.113 +      "resolved": "https://registry.npmjs.org/amd-config-builder/-/amd-config-builder-0.3.1.tgz",
   9.114 +      "integrity": "sha512-jdBYOTApia0Y/A9k3j2mRa5/iFVMcKc/LypC+bcfVXwrMRn1DeautuzQ88jXJ4DKIFWQcOjTVMNmcebBvu+4Iw==",
   9.115 +      "dev": true,
   9.116 +      "requires": {
   9.117 +        "findit2": "^2.2.3",
   9.118 +        "lodash": "^2.4.1"
   9.119 +      }
   9.120 +    },
   9.121 +    "amdefine": {
   9.122 +      "version": "1.0.1",
   9.123 +      "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
   9.124 +      "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
   9.125 +      "dev": true
   9.126 +    },
   9.127 +    "ansi-styles": {
   9.128 +      "version": "3.2.1",
   9.129 +      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
   9.130 +      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
   9.131 +      "dev": true,
   9.132 +      "requires": {
   9.133 +        "color-convert": "^1.9.0"
   9.134 +      }
   9.135 +    },
   9.136 +    "argparse": {
   9.137 +      "version": "1.0.10",
   9.138 +      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
   9.139 +      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
   9.140 +      "dev": true,
   9.141 +      "requires": {
   9.142 +        "sprintf-js": "~1.0.2"
   9.143 +      },
   9.144 +      "dependencies": {
   9.145 +        "sprintf-js": {
   9.146 +          "version": "1.0.3",
   9.147 +          "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
   9.148 +          "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
   9.149 +          "dev": true
   9.150 +        }
   9.151 +      }
   9.152 +    },
   9.153 +    "array-find-index": {
   9.154 +      "version": "1.0.2",
   9.155 +      "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
   9.156 +      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
   9.157 +      "dev": true
   9.158 +    },
   9.159 +    "async": {
   9.160 +      "version": "1.5.2",
   9.161 +      "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
   9.162 +      "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
   9.163 +      "dev": true
   9.164 +    },
   9.165 +    "balanced-match": {
   9.166 +      "version": "1.0.0",
   9.167 +      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
   9.168 +      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
   9.169 +      "dev": true
   9.170 +    },
   9.171 +    "bootstrap": {
   9.172 +      "version": "3.4.1",
   9.173 +      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz",
   9.174 +      "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==",
   9.175 +      "dev": true
   9.176 +    },
   9.177 +    "brace-expansion": {
   9.178 +      "version": "1.1.11",
   9.179 +      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
   9.180 +      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
   9.181 +      "dev": true,
   9.182 +      "requires": {
   9.183 +        "balanced-match": "^1.0.0",
   9.184 +        "concat-map": "0.0.1"
   9.185 +      }
   9.186 +    },
   9.187 +    "camelcase": {
   9.188 +      "version": "2.1.1",
   9.189 +      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
   9.190 +      "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
   9.191 +      "dev": true
   9.192 +    },
   9.193 +    "camelcase-keys": {
   9.194 +      "version": "2.1.0",
   9.195 +      "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
   9.196 +      "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
   9.197 +      "dev": true,
   9.198 +      "requires": {
   9.199 +        "camelcase": "^2.0.0",
   9.200 +        "map-obj": "^1.0.0"
   9.201 +      }
   9.202 +    },
   9.203 +    "chalk": {
   9.204 +      "version": "2.4.2",
   9.205 +      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
   9.206 +      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
   9.207 +      "dev": true,
   9.208 +      "requires": {
   9.209 +        "ansi-styles": "^3.2.1",
   9.210 +        "escape-string-regexp": "^1.0.5",
   9.211 +        "supports-color": "^5.3.0"
   9.212 +      }
   9.213 +    },
   9.214 +    "codemirror": {
   9.215 +      "version": "5.51.0",
   9.216 +      "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.51.0.tgz",
   9.217 +      "integrity": "sha512-vyuYYRv3eXL0SCuZA4spRFlKNzQAewHcipRQCOKgRy7VNAvZxTKzbItdbCl4S5AgPZ5g3WkHp+ibWQwv9TLG7Q==",
   9.218 +      "dev": true
   9.219 +    },
   9.220 +    "coffeescript": {
   9.221 +      "version": "1.10.0",
   9.222 +      "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz",
   9.223 +      "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=",
   9.224 +      "dev": true
   9.225 +    },
   9.226 +    "color-convert": {
   9.227 +      "version": "1.9.3",
   9.228 +      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
   9.229 +      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
   9.230 +      "dev": true,
   9.231 +      "requires": {
   9.232 +        "color-name": "1.1.3"
   9.233 +      }
   9.234 +    },
   9.235 +    "color-name": {
   9.236 +      "version": "1.1.3",
   9.237 +      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
   9.238 +      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
   9.239 +      "dev": true
   9.240 +    },
   9.241 +    "colors": {
   9.242 +      "version": "1.1.2",
   9.243 +      "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
   9.244 +      "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
   9.245 +      "dev": true
   9.246 +    },
   9.247 +    "concat-map": {
   9.248 +      "version": "0.0.1",
   9.249 +      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
   9.250 +      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
   9.251 +      "dev": true
   9.252 +    },
   9.253 +    "currently-unhandled": {
   9.254 +      "version": "0.4.1",
   9.255 +      "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
   9.256 +      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
   9.257 +      "dev": true,
   9.258 +      "requires": {
   9.259 +        "array-find-index": "^1.0.1"
   9.260 +      }
   9.261 +    },
   9.262 +    "dateformat": {
   9.263 +      "version": "1.0.12",
   9.264 +      "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz",
   9.265 +      "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=",
   9.266 +      "dev": true,
   9.267 +      "requires": {
   9.268 +        "get-stdin": "^4.0.1",
   9.269 +        "meow": "^3.3.0"
   9.270 +      }
   9.271 +    },
   9.272 +    "decamelize": {
   9.273 +      "version": "1.2.0",
   9.274 +      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
   9.275 +      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
   9.276 +      "dev": true
   9.277 +    },
   9.278 +    "error-ex": {
   9.279 +      "version": "1.3.2",
   9.280 +      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
   9.281 +      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
   9.282 +      "dev": true,
   9.283 +      "requires": {
   9.284 +        "is-arrayish": "^0.2.1"
   9.285 +      }
   9.286 +    },
   9.287 +    "es6-promise": {
   9.288 +      "version": "4.2.8",
   9.289 +      "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
   9.290 +      "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
   9.291 +    },
   9.292 +    "escape-string-regexp": {
   9.293 +      "version": "1.0.5",
   9.294 +      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
   9.295 +      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
   9.296 +      "dev": true
   9.297 +    },
   9.298 +    "esprima": {
   9.299 +      "version": "4.0.1",
   9.300 +      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
   9.301 +      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
   9.302 +      "dev": true
   9.303 +    },
   9.304 +    "eventemitter2": {
   9.305 +      "version": "0.4.14",
   9.306 +      "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
   9.307 +      "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=",
   9.308 +      "dev": true
   9.309 +    },
   9.310 +    "exit": {
   9.311 +      "version": "0.1.2",
   9.312 +      "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
   9.313 +      "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
   9.314 +      "dev": true
   9.315 +    },
   9.316 +    "find-up": {
   9.317 +      "version": "1.1.2",
   9.318 +      "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
   9.319 +      "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
   9.320 +      "dev": true,
   9.321 +      "requires": {
   9.322 +        "path-exists": "^2.0.0",
   9.323 +        "pinkie-promise": "^2.0.0"
   9.324 +      }
   9.325 +    },
   9.326 +    "findit2": {
   9.327 +      "version": "2.2.3",
   9.328 +      "resolved": "https://registry.npmjs.org/findit2/-/findit2-2.2.3.tgz",
   9.329 +      "integrity": "sha1-WKRmaX34piBc39vzlVNri9d3pfY=",
   9.330 +      "dev": true
   9.331 +    },
   9.332 +    "findup-sync": {
   9.333 +      "version": "0.3.0",
   9.334 +      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz",
   9.335 +      "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
   9.336 +      "dev": true,
   9.337 +      "requires": {
   9.338 +        "glob": "~5.0.0"
   9.339 +      },
   9.340 +      "dependencies": {
   9.341 +        "glob": {
   9.342 +          "version": "5.0.15",
   9.343 +          "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
   9.344 +          "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
   9.345 +          "dev": true,
   9.346 +          "requires": {
   9.347 +            "inflight": "^1.0.4",
   9.348 +            "inherits": "2",
   9.349 +            "minimatch": "2 || 3",
   9.350 +            "once": "^1.3.0",
   9.351 +            "path-is-absolute": "^1.0.0"
   9.352 +          }
   9.353 +        }
   9.354 +      }
   9.355 +    },
   9.356 +    "fs.realpath": {
   9.357 +      "version": "1.0.0",
   9.358 +      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
   9.359 +      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
   9.360 +      "dev": true
   9.361 +    },
   9.362 +    "get-stdin": {
   9.363 +      "version": "4.0.1",
   9.364 +      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
   9.365 +      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
   9.366 +      "dev": true
   9.367 +    },
   9.368 +    "getobject": {
   9.369 +      "version": "0.1.0",
   9.370 +      "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
   9.371 +      "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=",
   9.372 +      "dev": true
   9.373 +    },
   9.374 +    "glob": {
   9.375 +      "version": "7.0.6",
   9.376 +      "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
   9.377 +      "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
   9.378 +      "dev": true,
   9.379 +      "requires": {
   9.380 +        "fs.realpath": "^1.0.0",
   9.381 +        "inflight": "^1.0.4",
   9.382 +        "inherits": "2",
   9.383 +        "minimatch": "^3.0.2",
   9.384 +        "once": "^1.3.0",
   9.385 +        "path-is-absolute": "^1.0.0"
   9.386 +      }
   9.387 +    },
   9.388 +    "graceful-fs": {
   9.389 +      "version": "4.2.2",
   9.390 +      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
   9.391 +      "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==",
   9.392 +      "dev": true
   9.393 +    },
   9.394 +    "grunt": {
   9.395 +      "version": "1.0.4",
   9.396 +      "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.4.tgz",
   9.397 +      "integrity": "sha512-PYsMOrOC+MsdGEkFVwMaMyc6Ob7pKmq+deg1Sjr+vvMWp35sztfwKE7qoN51V+UEtHsyNuMcGdgMLFkBHvMxHQ==",
   9.398 +      "dev": true,
   9.399 +      "requires": {
   9.400 +        "coffeescript": "~1.10.0",
   9.401 +        "dateformat": "~1.0.12",
   9.402 +        "eventemitter2": "~0.4.13",
   9.403 +        "exit": "~0.1.1",
   9.404 +        "findup-sync": "~0.3.0",
   9.405 +        "glob": "~7.0.0",
   9.406 +        "grunt-cli": "~1.2.0",
   9.407 +        "grunt-known-options": "~1.1.0",
   9.408 +        "grunt-legacy-log": "~2.0.0",
   9.409 +        "grunt-legacy-util": "~1.1.1",
   9.410 +        "iconv-lite": "~0.4.13",
   9.411 +        "js-yaml": "~3.13.0",
   9.412 +        "minimatch": "~3.0.2",
   9.413 +        "mkdirp": "~0.5.1",
   9.414 +        "nopt": "~3.0.6",
   9.415 +        "path-is-absolute": "~1.0.0",
   9.416 +        "rimraf": "~2.6.2"
   9.417 +      },
   9.418 +      "dependencies": {
   9.419 +        "grunt-cli": {
   9.420 +          "version": "1.2.0",
   9.421 +          "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz",
   9.422 +          "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=",
   9.423 +          "dev": true,
   9.424 +          "requires": {
   9.425 +            "findup-sync": "~0.3.0",
   9.426 +            "grunt-known-options": "~1.1.0",
   9.427 +            "nopt": "~3.0.6",
   9.428 +            "resolve": "~1.1.0"
   9.429 +          }
   9.430 +        },
   9.431 +        "resolve": {
   9.432 +          "version": "1.1.7",
   9.433 +          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
   9.434 +          "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
   9.435 +          "dev": true
   9.436 +        }
   9.437 +      }
   9.438 +    },
   9.439 +    "grunt-contrib-clean": {
   9.440 +      "version": "1.1.0",
   9.441 +      "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.1.0.tgz",
   9.442 +      "integrity": "sha1-Vkq/LQN4qYOhW54/MO51tzjEBjg=",
   9.443 +      "dev": true,
   9.444 +      "requires": {
   9.445 +        "async": "^1.5.2",
   9.446 +        "rimraf": "^2.5.1"
   9.447 +      }
   9.448 +    },
   9.449 +    "grunt-contrib-requirejs": {
   9.450 +      "version": "1.0.0",
   9.451 +      "resolved": "https://registry.npmjs.org/grunt-contrib-requirejs/-/grunt-contrib-requirejs-1.0.0.tgz",
   9.452 +      "integrity": "sha1-7BZwyvwycTkC7lNWlFRxWy48utU=",
   9.453 +      "dev": true,
   9.454 +      "requires": {
   9.455 +        "requirejs": "^2.1.0"
   9.456 +      }
   9.457 +    },
   9.458 +    "grunt-exec": {
   9.459 +      "version": "3.0.0",
   9.460 +      "resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-3.0.0.tgz",
   9.461 +      "integrity": "sha512-cgAlreXf3muSYS5LzW0Cc4xHK03BjFOYk0MqCQ/MZ3k1Xz2GU7D+IAJg4UKicxpO+XdONJdx/NJ6kpy2wI+uHg==",
   9.462 +      "dev": true
   9.463 +    },
   9.464 +    "grunt-known-options": {
   9.465 +      "version": "1.1.1",
   9.466 +      "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz",
   9.467 +      "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==",
   9.468 +      "dev": true
   9.469 +    },
   9.470 +    "grunt-legacy-log": {
   9.471 +      "version": "2.0.0",
   9.472 +      "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz",
   9.473 +      "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==",
   9.474 +      "dev": true,
   9.475 +      "requires": {
   9.476 +        "colors": "~1.1.2",
   9.477 +        "grunt-legacy-log-utils": "~2.0.0",
   9.478 +        "hooker": "~0.2.3",
   9.479 +        "lodash": "~4.17.5"
   9.480 +      },
   9.481 +      "dependencies": {
   9.482 +        "lodash": {
   9.483 +          "version": "4.17.15",
   9.484 +          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
   9.485 +          "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
   9.486 +          "dev": true
   9.487 +        }
   9.488 +      }
   9.489 +    },
   9.490 +    "grunt-legacy-log-utils": {
   9.491 +      "version": "2.0.1",
   9.492 +      "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz",
   9.493 +      "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==",
   9.494 +      "dev": true,
   9.495 +      "requires": {
   9.496 +        "chalk": "~2.4.1",
   9.497 +        "lodash": "~4.17.10"
   9.498 +      },
   9.499 +      "dependencies": {
   9.500 +        "lodash": {
   9.501 +          "version": "4.17.15",
   9.502 +          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
   9.503 +          "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
   9.504 +          "dev": true
   9.505 +        }
   9.506 +      }
   9.507 +    },
   9.508 +    "grunt-legacy-util": {
   9.509 +      "version": "1.1.1",
   9.510 +      "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz",
   9.511 +      "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==",
   9.512 +      "dev": true,
   9.513 +      "requires": {
   9.514 +        "async": "~1.5.2",
   9.515 +        "exit": "~0.1.1",
   9.516 +        "getobject": "~0.1.0",
   9.517 +        "hooker": "~0.2.3",
   9.518 +        "lodash": "~4.17.10",
   9.519 +        "underscore.string": "~3.3.4",
   9.520 +        "which": "~1.3.0"
   9.521 +      },
   9.522 +      "dependencies": {
   9.523 +        "lodash": {
   9.524 +          "version": "4.17.15",
   9.525 +          "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
   9.526 +          "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
   9.527 +          "dev": true
   9.528 +        }
   9.529 +      }
   9.530 +    },
   9.531 +    "has-flag": {
   9.532 +      "version": "3.0.0",
   9.533 +      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
   9.534 +      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
   9.535 +      "dev": true
   9.536 +    },
   9.537 +    "hooker": {
   9.538 +      "version": "0.2.3",
   9.539 +      "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
   9.540 +      "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=",
   9.541 +      "dev": true
   9.542 +    },
   9.543 +    "hosted-git-info": {
   9.544 +      "version": "2.8.4",
   9.545 +      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz",
   9.546 +      "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==",
   9.547 +      "dev": true
   9.548 +    },
   9.549 +    "iconv-lite": {
   9.550 +      "version": "0.4.24",
   9.551 +      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
   9.552 +      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
   9.553 +      "dev": true,
   9.554 +      "requires": {
   9.555 +        "safer-buffer": ">= 2.1.2 < 3"
   9.556 +      }
   9.557 +    },
   9.558 +    "indent-string": {
   9.559 +      "version": "2.1.0",
   9.560 +      "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
   9.561 +      "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
   9.562 +      "dev": true,
   9.563 +      "requires": {
   9.564 +        "repeating": "^2.0.0"
   9.565 +      }
   9.566 +    },
   9.567 +    "inflight": {
   9.568 +      "version": "1.0.6",
   9.569 +      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
   9.570 +      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
   9.571 +      "dev": true,
   9.572 +      "requires": {
   9.573 +        "once": "^1.3.0",
   9.574 +        "wrappy": "1"
   9.575 +      }
   9.576 +    },
   9.577 +    "inherits": {
   9.578 +      "version": "2.0.4",
   9.579 +      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
   9.580 +      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
   9.581 +      "dev": true
   9.582 +    },
   9.583 +    "is-arrayish": {
   9.584 +      "version": "0.2.1",
   9.585 +      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
   9.586 +      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
   9.587 +      "dev": true
   9.588 +    },
   9.589 +    "is-finite": {
   9.590 +      "version": "1.0.2",
   9.591 +      "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
   9.592 +      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
   9.593 +      "dev": true,
   9.594 +      "requires": {
   9.595 +        "number-is-nan": "^1.0.0"
   9.596 +      }
   9.597 +    },
   9.598 +    "is-utf8": {
   9.599 +      "version": "0.2.1",
   9.600 +      "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
   9.601 +      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
   9.602 +      "dev": true
   9.603 +    },
   9.604 +    "isexe": {
   9.605 +      "version": "2.0.0",
   9.606 +      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
   9.607 +      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
   9.608 +      "dev": true
   9.609 +    },
   9.610 +    "jquery": {
   9.611 +      "version": "3.4.1",
   9.612 +      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz",
   9.613 +      "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==",
   9.614 +      "dev": true
   9.615 +    },
   9.616 +    "jquery-ui-dist": {
   9.617 +      "version": "1.12.1",
   9.618 +      "resolved": "https://registry.npmjs.org/jquery-ui-dist/-/jquery-ui-dist-1.12.1.tgz",
   9.619 +      "integrity": "sha1-XAgV08xvkP9fqvWyaKbiO0ypBPo=",
   9.620 +      "dev": true
   9.621 +    },
   9.622 +    "js-yaml": {
   9.623 +      "version": "3.13.1",
   9.624 +      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
   9.625 +      "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
   9.626 +      "dev": true,
   9.627 +      "requires": {
   9.628 +        "argparse": "^1.0.7",
   9.629 +        "esprima": "^4.0.0"
   9.630 +      }
   9.631 +    },
   9.632 +    "load-json-file": {
   9.633 +      "version": "1.1.0",
   9.634 +      "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
   9.635 +      "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
   9.636 +      "dev": true,
   9.637 +      "requires": {
   9.638 +        "graceful-fs": "^4.1.2",
   9.639 +        "parse-json": "^2.2.0",
   9.640 +        "pify": "^2.0.0",
   9.641 +        "pinkie-promise": "^2.0.0",
   9.642 +        "strip-bom": "^2.0.0"
   9.643 +      }
   9.644 +    },
   9.645 +    "lodash": {
   9.646 +      "version": "2.4.2",
   9.647 +      "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
   9.648 +      "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
   9.649 +      "dev": true
   9.650 +    },
   9.651 +    "loud-rejection": {
   9.652 +      "version": "1.6.0",
   9.653 +      "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
   9.654 +      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
   9.655 +      "dev": true,
   9.656 +      "requires": {
   9.657 +        "currently-unhandled": "^0.4.1",
   9.658 +        "signal-exit": "^3.0.0"
   9.659 +      }
   9.660 +    },
   9.661 +    "map-obj": {
   9.662 +      "version": "1.0.1",
   9.663 +      "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
   9.664 +      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
   9.665 +      "dev": true
   9.666 +    },
   9.667 +    "meow": {
   9.668 +      "version": "3.7.0",
   9.669 +      "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
   9.670 +      "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
   9.671 +      "dev": true,
   9.672 +      "requires": {
   9.673 +        "camelcase-keys": "^2.0.0",
   9.674 +        "decamelize": "^1.1.2",
   9.675 +        "loud-rejection": "^1.0.0",
   9.676 +        "map-obj": "^1.0.1",
   9.677 +        "minimist": "^1.1.3",
   9.678 +        "normalize-package-data": "^2.3.4",
   9.679 +        "object-assign": "^4.0.1",
   9.680 +        "read-pkg-up": "^1.0.1",
   9.681 +        "redent": "^1.0.0",
   9.682 +        "trim-newlines": "^1.0.0"
   9.683 +      }
   9.684 +    },
   9.685 +    "minimatch": {
   9.686 +      "version": "3.0.4",
   9.687 +      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
   9.688 +      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
   9.689 +      "dev": true,
   9.690 +      "requires": {
   9.691 +        "brace-expansion": "^1.1.7"
   9.692 +      }
   9.693 +    },
   9.694 +    "minimist": {
   9.695 +      "version": "1.2.0",
   9.696 +      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
   9.697 +      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
   9.698 +      "dev": true
   9.699 +    },
   9.700 +    "mkdirp": {
   9.701 +      "version": "0.5.1",
   9.702 +      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
   9.703 +      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
   9.704 +      "dev": true,
   9.705 +      "requires": {
   9.706 +        "minimist": "0.0.8"
   9.707 +      },
   9.708 +      "dependencies": {
   9.709 +        "minimist": {
   9.710 +          "version": "0.0.8",
   9.711 +          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
   9.712 +          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
   9.713 +          "dev": true
   9.714 +        }
   9.715 +      }
   9.716 +    },
   9.717 +    "mousetrap": {
   9.718 +      "version": "1.6.3",
   9.719 +      "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.3.tgz",
   9.720 +      "integrity": "sha512-bd+nzwhhs9ifsUrC2tWaSgm24/oo2c83zaRyZQF06hYA6sANfsXHtnZ19AbbbDXCDzeH5nZBSQ4NvCjgD62tJA==",
   9.721 +      "dev": true
   9.722 +    },
   9.723 +    "nopt": {
   9.724 +      "version": "3.0.6",
   9.725 +      "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
   9.726 +      "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
   9.727 +      "dev": true,
   9.728 +      "requires": {
   9.729 +        "abbrev": "1"
   9.730 +      }
   9.731 +    },
   9.732 +    "normalize-package-data": {
   9.733 +      "version": "2.5.0",
   9.734 +      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
   9.735 +      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
   9.736 +      "dev": true,
   9.737 +      "requires": {
   9.738 +        "hosted-git-info": "^2.1.4",
   9.739 +        "resolve": "^1.10.0",
   9.740 +        "semver": "2 || 3 || 4 || 5",
   9.741 +        "validate-npm-package-license": "^3.0.1"
   9.742 +      }
   9.743 +    },
   9.744 +    "number-is-nan": {
   9.745 +      "version": "1.0.1",
   9.746 +      "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
   9.747 +      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
   9.748 +      "dev": true
   9.749 +    },
   9.750 +    "object-assign": {
   9.751 +      "version": "4.1.1",
   9.752 +      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
   9.753 +      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
   9.754 +      "dev": true
   9.755 +    },
   9.756 +    "once": {
   9.757 +      "version": "1.4.0",
   9.758 +      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
   9.759 +      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
   9.760 +      "dev": true,
   9.761 +      "requires": {
   9.762 +        "wrappy": "1"
   9.763 +      }
   9.764 +    },
   9.765 +    "parse-json": {
   9.766 +      "version": "2.2.0",
   9.767 +      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
   9.768 +      "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
   9.769 +      "dev": true,
   9.770 +      "requires": {
   9.771 +        "error-ex": "^1.2.0"
   9.772 +      }
   9.773 +    },
   9.774 +    "path-exists": {
   9.775 +      "version": "2.1.0",
   9.776 +      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
   9.777 +      "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
   9.778 +      "dev": true,
   9.779 +      "requires": {
   9.780 +        "pinkie-promise": "^2.0.0"
   9.781 +      }
   9.782 +    },
   9.783 +    "path-is-absolute": {
   9.784 +      "version": "1.0.1",
   9.785 +      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
   9.786 +      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
   9.787 +      "dev": true
   9.788 +    },
   9.789 +    "path-parse": {
   9.790 +      "version": "1.0.6",
   9.791 +      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
   9.792 +      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
   9.793 +      "dev": true
   9.794 +    },
   9.795 +    "path-type": {
   9.796 +      "version": "1.1.0",
   9.797 +      "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
   9.798 +      "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
   9.799 +      "dev": true,
   9.800 +      "requires": {
   9.801 +        "graceful-fs": "^4.1.2",
   9.802 +        "pify": "^2.0.0",
   9.803 +        "pinkie-promise": "^2.0.0"
   9.804 +      }
   9.805 +    },
   9.806 +    "pify": {
   9.807 +      "version": "2.3.0",
   9.808 +      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
   9.809 +      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
   9.810 +      "dev": true
   9.811 +    },
   9.812 +    "pinkie": {
   9.813 +      "version": "2.0.4",
   9.814 +      "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
   9.815 +      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
   9.816 +      "dev": true
   9.817 +    },
   9.818 +    "pinkie-promise": {
   9.819 +      "version": "2.0.1",
   9.820 +      "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
   9.821 +      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
   9.822 +      "dev": true,
   9.823 +      "requires": {
   9.824 +        "pinkie": "^2.0.0"
   9.825 +      }
   9.826 +    },
   9.827 +    "read-pkg": {
   9.828 +      "version": "1.1.0",
   9.829 +      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
   9.830 +      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
   9.831 +      "dev": true,
   9.832 +      "requires": {
   9.833 +        "load-json-file": "^1.0.0",
   9.834 +        "normalize-package-data": "^2.3.2",
   9.835 +        "path-type": "^1.0.0"
   9.836 +      }
   9.837 +    },
   9.838 +    "read-pkg-up": {
   9.839 +      "version": "1.0.1",
   9.840 +      "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
   9.841 +      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
   9.842 +      "dev": true,
   9.843 +      "requires": {
   9.844 +        "find-up": "^1.0.0",
   9.845 +        "read-pkg": "^1.0.0"
   9.846 +      }
   9.847 +    },
   9.848 +    "redent": {
   9.849 +      "version": "1.0.0",
   9.850 +      "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
   9.851 +      "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
   9.852 +      "dev": true,
   9.853 +      "requires": {
   9.854 +        "indent-string": "^2.1.0",
   9.855 +        "strip-indent": "^1.0.1"
   9.856 +      }
   9.857 +    },
   9.858 +    "repeating": {
   9.859 +      "version": "2.0.1",
   9.860 +      "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
   9.861 +      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
   9.862 +      "dev": true,
   9.863 +      "requires": {
   9.864 +        "is-finite": "^1.0.0"
   9.865 +      }
   9.866 +    },
   9.867 +    "require-css": {
   9.868 +      "version": "0.1.10",
   9.869 +      "resolved": "https://registry.npmjs.org/require-css/-/require-css-0.1.10.tgz",
   9.870 +      "integrity": "sha1-8duMbPsq0qOnQJFmzGz5mw0/RQI=",
   9.871 +      "dev": true
   9.872 +    },
   9.873 +    "requirejs": {
   9.874 +      "version": "2.3.6",
   9.875 +      "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz",
   9.876 +      "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==",
   9.877 +      "dev": true
   9.878 +    },
   9.879 +    "requirejs-text": {
   9.880 +      "version": "2.0.15",
   9.881 +      "resolved": "https://registry.npmjs.org/requirejs-text/-/requirejs-text-2.0.15.tgz",
   9.882 +      "integrity": "sha1-ExOHM2E/xEV7fhJH6Mt1HfeqVCk=",
   9.883 +      "dev": true
   9.884 +    },
   9.885 +    "resolve": {
   9.886 +      "version": "1.12.0",
   9.887 +      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
   9.888 +      "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
   9.889 +      "dev": true,
   9.890 +      "requires": {
   9.891 +        "path-parse": "^1.0.6"
   9.892 +      }
   9.893 +    },
   9.894 +    "rimraf": {
   9.895 +      "version": "2.6.3",
   9.896 +      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
   9.897 +      "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
   9.898 +      "dev": true,
   9.899 +      "requires": {
   9.900 +        "glob": "^7.1.3"
   9.901 +      },
   9.902 +      "dependencies": {
   9.903 +        "glob": {
   9.904 +          "version": "7.1.4",
   9.905 +          "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
   9.906 +          "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
   9.907 +          "dev": true,
   9.908 +          "requires": {
   9.909 +            "fs.realpath": "^1.0.0",
   9.910 +            "inflight": "^1.0.4",
   9.911 +            "inherits": "2",
   9.912 +            "minimatch": "^3.0.4",
   9.913 +            "once": "^1.3.0",
   9.914 +            "path-is-absolute": "^1.0.0"
   9.915 +          }
   9.916 +        }
   9.917 +      }
   9.918 +    },
   9.919 +    "safer-buffer": {
   9.920 +      "version": "2.1.2",
   9.921 +      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
   9.922 +      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
   9.923 +      "dev": true
   9.924 +    },
   9.925 +    "semver": {
   9.926 +      "version": "5.7.1",
   9.927 +      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
   9.928 +      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
   9.929 +      "dev": true
   9.930 +    },
   9.931 +    "showdown": {
   9.932 +      "version": "0.5.4",
   9.933 +      "resolved": "https://registry.npmjs.org/showdown/-/showdown-0.5.4.tgz",
   9.934 +      "integrity": "sha1-qh7qWTda8DI0PxGjA+MtwbG0awU=",
   9.935 +      "dev": true
   9.936 +    },
   9.937 +    "signal-exit": {
   9.938 +      "version": "3.0.2",
   9.939 +      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
   9.940 +      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
   9.941 +      "dev": true
   9.942 +    },
   9.943 +    "spdx-correct": {
   9.944 +      "version": "3.1.0",
   9.945 +      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
   9.946 +      "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
   9.947 +      "dev": true,
   9.948 +      "requires": {
   9.949 +        "spdx-expression-parse": "^3.0.0",
   9.950 +        "spdx-license-ids": "^3.0.0"
   9.951 +      }
   9.952 +    },
   9.953 +    "spdx-exceptions": {
   9.954 +      "version": "2.2.0",
   9.955 +      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
   9.956 +      "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
   9.957 +      "dev": true
   9.958 +    },
   9.959 +    "spdx-expression-parse": {
   9.960 +      "version": "3.0.0",
   9.961 +      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
   9.962 +      "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
   9.963 +      "dev": true,
   9.964 +      "requires": {
   9.965 +        "spdx-exceptions": "^2.1.0",
   9.966 +        "spdx-license-ids": "^3.0.0"
   9.967 +      }
   9.968 +    },
   9.969 +    "spdx-license-ids": {
   9.970 +      "version": "3.0.5",
   9.971 +      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
   9.972 +      "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
   9.973 +      "dev": true
   9.974 +    },
   9.975 +    "sprintf-js": {
   9.976 +      "version": "1.1.2",
   9.977 +      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
   9.978 +      "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
   9.979 +      "dev": true
   9.980 +    },
   9.981 +    "strip-bom": {
   9.982 +      "version": "2.0.0",
   9.983 +      "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
   9.984 +      "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
   9.985 +      "dev": true,
   9.986 +      "requires": {
   9.987 +        "is-utf8": "^0.2.0"
   9.988 +      }
   9.989 +    },
   9.990 +    "strip-indent": {
   9.991 +      "version": "1.0.1",
   9.992 +      "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
   9.993 +      "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
   9.994 +      "dev": true,
   9.995 +      "requires": {
   9.996 +        "get-stdin": "^4.0.1"
   9.997 +      }
   9.998 +    },
   9.999 +    "supports-color": {
  9.1000 +      "version": "5.5.0",
  9.1001 +      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
  9.1002 +      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
  9.1003 +      "dev": true,
  9.1004 +      "requires": {
  9.1005 +        "has-flag": "^3.0.0"
  9.1006 +      }
  9.1007 +    },
  9.1008 +    "tingle.js": {
  9.1009 +      "version": "0.13.2",
  9.1010 +      "resolved": "https://registry.npmjs.org/tingle.js/-/tingle.js-0.13.2.tgz",
  9.1011 +      "integrity": "sha512-hbfHZZ/sMo+JXM47GQb57b+0lgdy+o8D1pNINSQG98cvTyH+AusafgnklVL983nFU6psjz0wr/OcHOgF/5f/Vw==",
  9.1012 +      "dev": true
  9.1013 +    },
  9.1014 +    "trim-newlines": {
  9.1015 +      "version": "1.0.0",
  9.1016 +      "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
  9.1017 +      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
  9.1018 +      "dev": true
  9.1019 +    },
  9.1020 +    "typeahead.js": {
  9.1021 +      "version": "0.10.5",
  9.1022 +      "resolved": "https://registry.npmjs.org/typeahead.js/-/typeahead.js-0.10.5.tgz",
  9.1023 +      "integrity": "sha1-HZlxsPRNOF/q2/IsnzadtWKRLeE=",
  9.1024 +      "dev": true
  9.1025 +    },
  9.1026 +    "underscore.string": {
  9.1027 +      "version": "3.3.5",
  9.1028 +      "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz",
  9.1029 +      "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==",
  9.1030 +      "dev": true,
  9.1031 +      "requires": {
  9.1032 +        "sprintf-js": "^1.0.3",
  9.1033 +        "util-deprecate": "^1.0.2"
  9.1034 +      }
  9.1035 +    },
  9.1036 +    "util-deprecate": {
  9.1037 +      "version": "1.0.2",
  9.1038 +      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
  9.1039 +      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
  9.1040 +      "dev": true
  9.1041 +    },
  9.1042 +    "validate-npm-package-license": {
  9.1043 +      "version": "3.0.4",
  9.1044 +      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
  9.1045 +      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
  9.1046 +      "dev": true,
  9.1047 +      "requires": {
  9.1048 +        "spdx-correct": "^3.0.0",
  9.1049 +        "spdx-expression-parse": "^3.0.0"
  9.1050 +      }
  9.1051 +    },
  9.1052 +    "which": {
  9.1053 +      "version": "1.3.1",
  9.1054 +      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
  9.1055 +      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
  9.1056 +      "dev": true,
  9.1057 +      "requires": {
  9.1058 +        "isexe": "^2.0.0"
  9.1059 +      }
  9.1060 +    },
  9.1061 +    "wrappy": {
  9.1062 +      "version": "1.0.2",
  9.1063 +      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
  9.1064 +      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
  9.1065 +      "dev": true
  9.1066 +    }
  9.1067 +  }
  9.1068 +}
    10.1 --- a/package.json	Thu Apr 13 15:44:35 2017 +0300
    10.2 +++ b/package.json	Mon Feb 17 04:14:04 2020 +0300
    10.3 @@ -8,13 +8,6 @@
    10.4      "name": "Mikhail Kryshen",
    10.5      "email": "mikhail@kryshen.net"
    10.6    },
    10.7 -  "repository": {
    10.8 -    "type": "git",
    10.9 -    "url": ""
   10.10 -  },
   10.11 -  "bugs": {
   10.12 -    "url": ""
   10.13 -  },
   10.14    "licenses": [
   10.15      {
   10.16        "type": "GPL-3.0",
   10.17 @@ -22,21 +15,33 @@
   10.18      }
   10.19    ],
   10.20    "engines": {
   10.21 -    "node": "0.10.x || 0.12.x || >=4.0.0"
   10.22 +    "node": ">=4.0.0"
   10.23    },
   10.24    "scripts": {
   10.25 +    "reset": "npm run clean && npm run init",
   10.26 +    "clean": "(rm -rf node_modules || rd /s/q node_modules)",
   10.27 +    "init": "npm install && grunt default devel",
   10.28      "test": "grunt test"
   10.29    },
   10.30 +  "dependencies": {
   10.31 +    "@ambers/domite": "^0.9.0",
   10.32 +    "@ambers/lang": "^0.24.0",
   10.33 +    "@ambers/silk": "^0.5.1",
   10.34 +    "es6-promise": "^4.2.6"
   10.35 +  },
   10.36    "devDependencies": {
   10.37 -    "amber-dev": "^0.8.7",
   10.38 -    "grunt": "^0.4.5",
   10.39 -    "grunt-contrib-clean": "^0.7.0",
   10.40 -    "grunt-contrib-requirejs": "^0.4.4",
   10.41 -    "grunt-execute": "^0.2.2",
   10.42 -    "requirejs": "^2.1.15"
   10.43 +    "@ambers/contrib-legacy": "^0.8.9",
   10.44 +    "@ambers/helios": "^0.11.12",
   10.45 +    "@ambers/ide-starter-modal": "^0.2.0",
   10.46 +    "@ambers/sdk": "^0.12.1",
   10.47 +    "grunt": "^1.0.3",
   10.48 +    "grunt-contrib-clean": "^1.1.0",
   10.49 +    "grunt-contrib-requirejs": "^1.0.0",
   10.50 +    "grunt-exec": "^3.0.0",
   10.51 +    "requirejs": "^2.3.5"
   10.52    },
   10.53    "keywords": [
   10.54      "Amber",
   10.55      "Smalltalk"
   10.56    ]
   10.57 -}
   10.58 \ No newline at end of file
   10.59 +}
    11.1 --- a/src/Serpentron.st	Thu Apr 13 15:44:35 2017 +0300
    11.2 +++ b/src/Serpentron.st	Mon Feb 17 04:14:04 2020 +0300
    11.3 @@ -1,5 +1,5 @@
    11.4  Smalltalk createPackage: 'Serpentron'!
    11.5 -(Smalltalk packageAt: 'Serpentron') imports: {'silk/Silk'}!
    11.6 +(Smalltalk packageAt: 'Serpentron' ifAbsent: [ self error: 'Package not created: Serpentron' ]) imports: {'silk/Silk'}!
    11.7  Object subclass: #Serpentron
    11.8  	instanceVariableNames: 'field skin players playerColors controllerPrototypes score pointsToWin timeoutId startScreenVisible'
    11.9  	package: 'Serpentron'!