diff --git a/publish/build.cmd b/bin/build.cmd
similarity index 76%
rename from publish/build.cmd
rename to bin/build.cmd
index 359cf711ace5cbfb37e07082809e4623f73ff34a..76a93616b959acd8263e6f8b84131338cd6e1ccf 100644
--- a/publish/build.cmd
+++ b/bin/build.cmd
@@ -1,2 +1,2 @@
-cd ../form & npm install & npm run publish & cd ../play & CocosCreator.exe --path "./" --build "platform=web-desktop;debug=true" --force & cd ../publish & node build.js
+cd ../form & npm install & npm run publish & cd ../play & CocosCreator.exe --path "./" --build "platform=web-desktop;debug=true" --force & cd ../bin & node build.js
 pause
diff --git a/publish/build.js b/bin/build.js
similarity index 78%
rename from publish/build.js
rename to bin/build.js
index 670f7c73ae517c4eae995c16cadc43b1167e0750..8fd95d5014404b7bc7d3885444c60cc1cd02bfde 100644
--- a/publish/build.js
+++ b/bin/build.js
@@ -60,21 +60,18 @@ async function main() {
     let fileName = `Release_${date.getFullYear()}${fix2(date.getMonth() + 1)}${fix2(date.getDate())} `;
     fileName += `${fix2(date.getHours())}-${fix2(date.getMinutes())}-${fix2(date.getSeconds())}`;
 
-    await removeDir('./publish/play');
-    await removeDir('./publish/form');
+    await removeDir('../publish/play');
+    await removeDir('../publish/form');
 
-    await copyDir('../play/build/web-desktop', './publish/play');
+    await copyDir('../play/build/web-desktop', '../publish/play');
 
-    const data = await fs.readFileSync('./index.html');
-    await fs.writeFileSync('./publish/play/index.html', data);
-
-    compressing.zip.uncompress('../form/publish/form.zip', './publish/form')
+    compressing.zip.uncompress('../form/publish/form.zip', '../publish/form')
         .then(() => {
             const tarStream = new compressing.zip.Stream();
-            tarStream.addEntry('./publish/play');
-            tarStream.addEntry('./publish/form');
+            tarStream.addEntry('../publish/play');
+            tarStream.addEntry('../publish/form');
 
-            const destStream = fs.createWriteStream(`publish/${fileName}.zip`);
+            const destStream = fs.createWriteStream(`../publish/${fileName}.zip`);
 
             tarStream.pipe(destStream);
 
diff --git a/publish/build.sh b/bin/build.sh
similarity index 71%
rename from publish/build.sh
rename to bin/build.sh
index 74fdbdf89f92f1646a9a37835a2ce7bd720b4666..d322ec23f84f6228bfd8d8cb8fa7c8d7ee3523b6 100644
--- a/publish/build.sh
+++ b/bin/build.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-cd publish 
+cd bin 
 
 set -e
 
@@ -8,23 +8,23 @@ node build_check.js
 
 set +e
 
-cd ../form 
+# cd ../form 
 
-npm install
+# npm install
 
-npm run publish 
+# npm run publish 
 
-cd ../publish 
+cd ../bin 
 
 node build_step_0.js
 
 cd ../play
 
-/Applications/CocosCreator/Creator/2.4.0/CocosCreator.app/Contents/MacOS/CocosCreator --path "./" --build "platform=web-desktop;debug=true" --force
+/Applications/CocosCreator/Creator/2.4.5/CocosCreator.app/Contents/MacOS/CocosCreator --path "./" --build "platform=web-desktop;debug=true" --force
 
 echo "生成 web desktop 完成~!"
 
-cd ../publish 
+cd ../bin 
 
 node build_step_1.js
 
@@ -32,11 +32,11 @@ echo "build_step_1 完成~!"
 
 cd ../play
 
-/Applications/CocosCreator/Creator/2.4.4/CocosCreator.app/Contents/MacOS/CocosCreator --path "./" --build "platform=ios;debug=false;md5Cache=true;buildPath=build_ios;encryptJs=true;xxteaKey=6bbfce23-28b4-4a;zipCompressJs=true" --force
+/Applications/CocosCreator/Creator/2.4.5/CocosCreator.app/Contents/MacOS/CocosCreator --path "./" --build "platform=ios;debug=false;md5Cache=true;buildPath=build_ios;encryptJs=true;xxteaKey=6bbfce23-28b4-4a;zipCompressJs=true" --force
 
 echo "生成 ios 完成~!"
 
-cd ../publish 
+cd ../bin 
 
 node build_step_2.js
 
@@ -44,11 +44,11 @@ echo "build_step_2 完成~!"
 
 cd ../play
 
-/Applications/CocosCreator/Creator/2.4.4/CocosCreator.app/Contents/MacOS/CocosCreator --path "./" --build "platform=ios;debug=false;md5Cache=true;buildPath=build_android;appABIs=['armeabi-v7a','x86','x86_64','arm64-v8a'];encryptJs=true;xxteaKey=6bbfce23-28b4-4a;zipCompressJs=true" --force
+/Applications/CocosCreator/Creator/2.4.5/CocosCreator.app/Contents/MacOS/CocosCreator --path "./" --build "platform=ios;debug=false;md5Cache=true;buildPath=build_android;appABIs=['armeabi-v7a','x86','x86_64','arm64-v8a'];encryptJs=true;xxteaKey=6bbfce23-28b4-4a;zipCompressJs=true" --force
 
 echo "生成 android 完成~!"
 
-cd ../publish 
+cd ../bin 
 
 node build_step_3.js
 
@@ -56,11 +56,11 @@ echo "build_step_3 完成~!"
 
 cd ../play
 
-/Applications/CocosCreator/Creator/2.4.4/CocosCreator.app/Contents/MacOS/CocosCreator --path "./" --build "platform=web-desktop;debug=false;buildPath=build_web_desktop" --force
+/Applications/CocosCreator/Creator/2.4.5/CocosCreator.app/Contents/MacOS/CocosCreator --path "./" --build "platform=web-desktop;debug=false;buildPath=build_web_desktop" --force
 
 echo "生成 web-desktop 完成~!"
 
-cd ../publish 
+cd ../bin 
 
 node build_step_4.js
 
diff --git a/publish/buildConfig.json b/bin/buildConfig.json
similarity index 100%
rename from publish/buildConfig.json
rename to bin/buildConfig.json
diff --git a/publish/build_check.js b/bin/build_check.js
similarity index 100%
rename from publish/build_check.js
rename to bin/build_check.js
diff --git a/publish/build_step_0.js b/bin/build_step_0.js
similarity index 100%
rename from publish/build_step_0.js
rename to bin/build_step_0.js
diff --git a/publish/build_step_1.js b/bin/build_step_1.js
similarity index 58%
rename from publish/build_step_1.js
rename to bin/build_step_1.js
index d0e5a85f1b302481296493ed4e69a62dafefb27c..a4c4ba73f862761eddf0874512a8a43cf06d5f56 100644
--- a/publish/build_step_1.js
+++ b/bin/build_step_1.js
@@ -1,16 +1,12 @@
-const { removeDir, copyDir, fix2 } = require('./utils');
-const compressing = require('compressing');
+const { removeDir, copyDir } = require('./utils');
 let fs = require('fs');
 
 async function main() {
-  await removeDir('./publish/play');
-  await removeDir('./publish/form');
+  await removeDir('../dist/play');
 
-  await copyDir('../play/build/web-desktop', './publish/play');
-  compressing.zip.uncompress('../form/publish/form.zip', './publish/form');
-
-  const data = await fs.readFileSync('./index.html');
-  await fs.writeFileSync('./publish/play/index.html', data);
+  await copyDir('../play/build/web-desktop', '../dist/play');
+  const data = await fs.readFileSync('../play/index.html');
+  await fs.writeFileSync('../dist/play/index.html', data);
 
   await removeDir('../play/build/web-desktop');
 
diff --git a/bin/build_step_2.js b/bin/build_step_2.js
new file mode 100644
index 0000000000000000000000000000000000000000..0fdef57755999ae73afd0e19c65fc290e85659f3
--- /dev/null
+++ b/bin/build_step_2.js
@@ -0,0 +1,9 @@
+const { removeDir, copyDir } = require('./utils');
+
+async function main() {
+  await removeDir('../dist/ios');
+  await copyDir('../play/build_ios/jsb-link/remote', '../dist/ios');
+  await removeDir('../play/build_ios/jsb-link');
+}
+
+main();
\ No newline at end of file
diff --git a/bin/build_step_3.js b/bin/build_step_3.js
new file mode 100644
index 0000000000000000000000000000000000000000..647905198f8a56d955985f7f26ade56a73352519
--- /dev/null
+++ b/bin/build_step_3.js
@@ -0,0 +1,9 @@
+const { removeDir, copyDir } = require('./utils');
+
+async function main() {
+  await removeDir('../dist/android');
+  await copyDir('../play/build_android/jsb-link/remote', '../dist/android');
+  await removeDir('../play/build_android/jsb-link');
+}
+
+main();
\ No newline at end of file
diff --git a/publish/build_step_4.js b/bin/build_step_4.js
similarity index 69%
rename from publish/build_step_4.js
rename to bin/build_step_4.js
index 8992f0a54837b4d7c7ab6dd7f2c448e9e0eed529..afe717e3cb80045dcf99902ace8a35bfd0647d74 100644
--- a/publish/build_step_4.js
+++ b/bin/build_step_4.js
@@ -3,27 +3,26 @@ const compressing = require('compressing');
 let fs = require('fs');
 
 async function main() {
-  await removeDir('./publish/web_desktop');
+  await removeDir('../dist/web_desktop');
   const projectName = await getBundleName('../play/build_web_desktop/web-desktop/assets');
-  await copyDir(`../play/build_web_desktop/web-desktop/assets/${projectName}`, './publish/web_desktop');
+  await copyDir(`../play/build_web_desktop/web-desktop/assets/${projectName}`, '../dist/web_desktop');
   await removeDir('../play/build_web_desktop');
 
   const bundleData = {
-    ios: await getBundleData('./publish/ios'),
-    android: await getBundleData('./publish/android'),
+    ios: await getBundleData('../dist/ios'),
+    android: await getBundleData('../dist/android'),
   }
 
-  fs.writeFileSync('./publish/config.json', JSON.stringify(bundleData));
+  fs.writeFileSync('../dist/config.json', JSON.stringify(bundleData));
 
   const tarStream = new compressing.zip.Stream();
-  tarStream.addEntry('./publish/play');
-  tarStream.addEntry('./publish/form');
-  tarStream.addEntry('./publish/ios');
-  tarStream.addEntry('./publish/android');
-  tarStream.addEntry('./publish/web_desktop');
-  tarStream.addEntry('./publish/config.json');
-
-  const destStream = fs.createWriteStream(`publish/${getReleaseFileName()}.zip`);
+  tarStream.addEntry('../dist/play');
+  tarStream.addEntry('../dist/ios');
+  tarStream.addEntry('../dist/android');
+  tarStream.addEntry('../dist/web_desktop');
+  tarStream.addEntry('../dist/config.json');
+
+  const destStream = fs.createWriteStream(`../publish/${getReleaseFileName()}.zip`);
 
   tarStream.pipe(destStream);
 
diff --git a/publish/utils.js b/bin/utils.js
similarity index 100%
rename from publish/utils.js
rename to bin/utils.js
diff --git a/play/assets/scene/audios/.keep b/dist/.keep
similarity index 100%
rename from play/assets/scene/audios/.keep
rename to dist/.keep
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000000000000000000000000000000000000..25ead4b70329575fdaf7b7b5a9799a7c41fc7d0b
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,268 @@
+{
+  "name": "publish",
+  "version": "1.0.0",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "base-64": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/base-64/download/base-64-1.0.0.tgz",
+      "integrity": "sha1-CdDyCE4yo/0IwkdblzeI7uauj0o="
+    },
+    "bl": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npm.taobao.org/bl/download/bl-1.2.3.tgz",
+      "integrity": "sha1-Ho3YAULqyA1xWMnczAR/tiDgNec=",
+      "requires": {
+        "readable-stream": "^2.3.5",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "buffer-alloc": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/buffer-alloc/download/buffer-alloc-1.2.0.tgz",
+      "integrity": "sha1-iQ3ZDZI6hz4I4Q5f1RpX5bfM4Ow=",
+      "requires": {
+        "buffer-alloc-unsafe": "^1.1.0",
+        "buffer-fill": "^1.0.0"
+      }
+    },
+    "buffer-alloc-unsafe": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/buffer-alloc-unsafe/download/buffer-alloc-unsafe-1.1.0.tgz",
+      "integrity": "sha1-vX3CauKXLQ7aJTvgYdupkjScGfA="
+    },
+    "buffer-crc32": {
+      "version": "0.2.13",
+      "resolved": "https://registry.npm.taobao.org/buffer-crc32/download/buffer-crc32-0.2.13.tgz",
+      "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI="
+    },
+    "buffer-fill": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/buffer-fill/download/buffer-fill-1.0.0.tgz",
+      "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
+    },
+    "compressing": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npm.taobao.org/compressing/download/compressing-1.5.1.tgz",
+      "integrity": "sha1-0DGjMRuMLtZWGoQxZx1ahEVASC0=",
+      "requires": {
+        "flushwritable": "^1.0.0",
+        "get-ready": "^1.0.0",
+        "iconv-lite": "^0.5.0",
+        "mkdirp": "^0.5.1",
+        "pump": "^3.0.0",
+        "streamifier": "^0.1.1",
+        "tar-stream": "^1.5.2",
+        "yauzl": "^2.7.0",
+        "yazl": "^2.4.2"
+      }
+    },
+    "core-util-is": {
+      "version": "1.0.3",
+      "resolved": "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.3.tgz",
+      "integrity": "sha1-pgQtNjTCsn6TKPg3uWX6yDgI24U="
+    },
+    "end-of-stream": {
+      "version": "1.4.4",
+      "resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz",
+      "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=",
+      "requires": {
+        "once": "^1.4.0"
+      }
+    },
+    "fd-slicer": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/fd-slicer/download/fd-slicer-1.1.0.tgz",
+      "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
+      "requires": {
+        "pend": "~1.2.0"
+      }
+    },
+    "flushwritable": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/flushwritable/download/flushwritable-1.0.0.tgz",
+      "integrity": "sha1-PjKNj95BKtR+c44751C00pAENJg="
+    },
+    "fs-constants": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/fs-constants/download/fs-constants-1.0.0.tgz",
+      "integrity": "sha1-a+Dem+mYzhavivwkSXue6bfM2a0="
+    },
+    "get-ready": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/get-ready/download/get-ready-1.0.0.tgz",
+      "integrity": "sha1-+RgX8emt7P6hOlYq38jeiDqzR4I="
+    },
+    "iconv-lite": {
+      "version": "0.5.2",
+      "resolved": "https://registry.nlark.com/iconv-lite/download/iconv-lite-0.5.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.5.2.tgz",
+      "integrity": "sha1-r21ijcz7RjtzZNl/cV5LdLjIwrg=",
+      "requires": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      }
+    },
+    "inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz",
+      "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w="
+    },
+    "isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+    },
+    "js-base64": {
+      "version": "3.7.2",
+      "resolved": "https://registry.npmmirror.com/js-base64/download/js-base64-3.7.2.tgz",
+      "integrity": "sha1-gW0R2BqK/yQWA9Gc5XYeE+Qdd0U="
+    },
+    "minimist": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz?cache=0&sync_timestamp=1584051509720&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fminimist%2Fdownload%2Fminimist-1.2.5.tgz",
+      "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI="
+    },
+    "mkdirp": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmmirror.com/mkdirp/download/mkdirp-0.5.5.tgz",
+      "integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=",
+      "requires": {
+        "minimist": "^1.2.5"
+      }
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "pend": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/pend/download/pend-1.2.0.tgz",
+      "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
+    },
+    "process-nextick-args": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I="
+    },
+    "pump": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz",
+      "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=",
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "readable-stream": {
+      "version": "2.3.7",
+      "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz",
+      "integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=",
+      "requires": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      },
+      "dependencies": {
+        "safe-buffer": {
+          "version": "5.1.2",
+          "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz?cache=0&sync_timestamp=1589129010497&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-buffer%2Fdownload%2Fsafe-buffer-5.1.2.tgz",
+          "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
+        }
+      }
+    },
+    "safe-buffer": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz?cache=0&sync_timestamp=1589129010497&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-buffer%2Fdownload%2Fsafe-buffer-5.2.1.tgz",
+      "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY="
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz",
+      "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo="
+    },
+    "streamifier": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npm.taobao.org/streamifier/download/streamifier-0.1.1.tgz",
+      "integrity": "sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8="
+    },
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz?cache=0&sync_timestamp=1565170823020&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring_decoder%2Fdownload%2Fstring_decoder-1.1.1.tgz",
+      "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
+      "requires": {
+        "safe-buffer": "~5.1.0"
+      },
+      "dependencies": {
+        "safe-buffer": {
+          "version": "5.1.2",
+          "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz?cache=0&sync_timestamp=1589129010497&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-buffer%2Fdownload%2Fsafe-buffer-5.1.2.tgz",
+          "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
+        }
+      }
+    },
+    "tar-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npm.taobao.org/tar-stream/download/tar-stream-1.6.2.tgz?cache=0&sync_timestamp=1609236328737&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftar-stream%2Fdownload%2Ftar-stream-1.6.2.tgz",
+      "integrity": "sha1-jqVdqzeXIlPZqa+Q/c1VmuQ1xVU=",
+      "requires": {
+        "bl": "^1.0.0",
+        "buffer-alloc": "^1.2.0",
+        "end-of-stream": "^1.0.0",
+        "fs-constants": "^1.0.0",
+        "readable-stream": "^2.3.0",
+        "to-buffer": "^1.1.1",
+        "xtend": "^4.0.0"
+      }
+    },
+    "to-buffer": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/to-buffer/download/to-buffer-1.1.1.tgz",
+      "integrity": "sha1-STvUj2LXxD/N7TE6A9ytsuEhOoA="
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+    },
+    "uuid": {
+      "version": "8.3.2",
+      "resolved": "https://registry.npmmirror.com/uuid/download/uuid-8.3.2.tgz",
+      "integrity": "sha1-gNW1ztJxu5r2xEXyGhoExgbO++I="
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/wrappy/download/wrappy-1.0.2.tgz?cache=0&sync_timestamp=1619133505879&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fwrappy%2Fdownload%2Fwrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+    },
+    "xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz",
+      "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q="
+    },
+    "yauzl": {
+      "version": "2.10.0",
+      "resolved": "https://registry.npm.taobao.org/yauzl/download/yauzl-2.10.0.tgz",
+      "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
+      "requires": {
+        "buffer-crc32": "~0.2.3",
+        "fd-slicer": "~1.1.0"
+      }
+    },
+    "yazl": {
+      "version": "2.5.1",
+      "resolved": "https://registry.npm.taobao.org/yazl/download/yazl-2.5.1.tgz",
+      "integrity": "sha1-o9ZdPdZZpbCTeFDoYJ8i//orXDU=",
+      "requires": {
+        "buffer-crc32": "~0.2.3"
+      }
+    }
+  }
+}
diff --git a/package.json b/package.json
index 3ea4ce52b037efdc3a7ec8f90a0cd936667d21ea..99baccf1eb7d1440dffc58d1f5080f86b993047e 100644
--- a/package.json
+++ b/package.json
@@ -5,12 +5,15 @@
   "main": "build.js",
   "scripts": {
     "test": "echo \"Error: no test specified\" && exit 1",
-    "build": "sh ./publish/build.sh",
-    "win": "cd publish && build.cmd"
+    "build": "sh ./bin/build.sh",
+    "win": "cd bin && build.cmd"
   },
   "author": "",
   "license": "ISC",
   "dependencies": {
-    "compressing": "^1.5.0"
+    "base-64": "^1.0.0",
+    "compressing": "^1.5.1",
+    "js-base64": "^3.7.2",
+    "uuid": "^8.3.2"
   }
 }
diff --git a/play/assets/scene.meta b/play/assets/cocos-generator.meta
similarity index 70%
rename from play/assets/scene.meta
rename to play/assets/cocos-generator.meta
index 87e508f6fb144925fe2af6c529c89320c1298d27..a6ac487d9171e09879a034f534cb405e0a74f9f7 100644
--- a/play/assets/scene.meta
+++ b/play/assets/cocos-generator.meta
@@ -1,12 +1,15 @@
 {
   "ver": "1.1.2",
   "uuid": "c35bb2f6-f24a-4850-ae44-643f2fdc7541",
-  "isBundle": false,
+  "isBundle": true,
   "bundleName": "",
   "priority": 1,
   "compressionType": {},
   "optimizeHotUpdate": {},
   "inlineSpriteFrames": {},
-  "isRemoteBundle": {},
+  "isRemoteBundle": {
+    "ios": true,
+    "android": true
+  },
   "subMetas": {}
 }
\ No newline at end of file
diff --git a/play/assets/scene/audios.meta b/play/assets/cocos-generator/audios.meta
similarity index 100%
rename from play/assets/scene/audios.meta
rename to play/assets/cocos-generator/audios.meta
diff --git a/play/assets/scene/dragonBones/.keep b/play/assets/cocos-generator/audios/.keep
similarity index 100%
rename from play/assets/scene/dragonBones/.keep
rename to play/assets/cocos-generator/audios/.keep
diff --git a/play/assets/scene/audios/btn.mp3 b/play/assets/cocos-generator/audios/btn.mp3
similarity index 100%
rename from play/assets/scene/audios/btn.mp3
rename to play/assets/cocos-generator/audios/btn.mp3
diff --git a/play/assets/scene/audios/btn.mp3.meta b/play/assets/cocos-generator/audios/btn.mp3.meta
similarity index 100%
rename from play/assets/scene/audios/btn.mp3.meta
rename to play/assets/cocos-generator/audios/btn.mp3.meta
diff --git a/play/assets/scene/dragonBones.meta b/play/assets/cocos-generator/dragonBones.meta
similarity index 100%
rename from play/assets/scene/dragonBones.meta
rename to play/assets/cocos-generator/dragonBones.meta
diff --git a/play/assets/scene/fonts/.keep b/play/assets/cocos-generator/dragonBones/.keep
similarity index 100%
rename from play/assets/scene/fonts/.keep
rename to play/assets/cocos-generator/dragonBones/.keep
diff --git a/play/assets/scene/fonts.meta b/play/assets/cocos-generator/fonts.meta
similarity index 100%
rename from play/assets/scene/fonts.meta
rename to play/assets/cocos-generator/fonts.meta
diff --git a/play/assets/scene/textures/.keep b/play/assets/cocos-generator/fonts/.keep
similarity index 100%
rename from play/assets/scene/textures/.keep
rename to play/assets/cocos-generator/fonts/.keep
diff --git a/play/assets/scene/fonts/BRLNSDB.TTF b/play/assets/cocos-generator/fonts/BRLNSDB.TTF
similarity index 100%
rename from play/assets/scene/fonts/BRLNSDB.TTF
rename to play/assets/cocos-generator/fonts/BRLNSDB.TTF
diff --git a/play/assets/scene/fonts/BRLNSDB.TTF.meta b/play/assets/cocos-generator/fonts/BRLNSDB.TTF.meta
similarity index 100%
rename from play/assets/scene/fonts/BRLNSDB.TTF.meta
rename to play/assets/cocos-generator/fonts/BRLNSDB.TTF.meta
diff --git a/play/assets/scene/scene.meta b/play/assets/cocos-generator/scene.meta
similarity index 100%
rename from play/assets/scene/scene.meta
rename to play/assets/cocos-generator/scene.meta
diff --git a/play/assets/scene/scene/scene.fire b/play/assets/cocos-generator/scene/cocos-generator.fire
similarity index 99%
rename from play/assets/scene/scene/scene.fire
rename to play/assets/cocos-generator/scene/cocos-generator.fire
index 83c048f3d79ec83b63ddc21dc155970b825f9812..0fa270216363c02303276adf4a4f462400c056c9 100644
--- a/play/assets/scene/scene/scene.fire
+++ b/play/assets/cocos-generator/scene/cocos-generator.fire
@@ -58,7 +58,7 @@
     "_groupIndex": 0,
     "groupIndex": 0,
     "autoReleaseAssets": true,
-    "_id": "57ea7c61-9b8b-498a-b024-c98ee9124beb"
+    "_id": "eb8aed66-30b6-4b6d-8111-a56301f794d4"
   },
   {
     "__type__": "cc.Node",
@@ -1291,13 +1291,13 @@
     "_id": "29zXboiXFBKoIV4PQ2liTe"
   },
   {
-    "__type__": "f4edeRi+NdAabqAkVYRwFjK",
+    "__type__": "62e208/AzZPXZaYlRR8Pd+n",
     "_name": "",
     "_objFlags": 0,
     "node": {
       "__id__": 2
     },
     "_enabled": true,
-    "_id": "e687yyoRBIzZAOVRL8Sseh"
+    "_id": "344d011557024326abc643"
   }
 ]
\ No newline at end of file
diff --git a/play/assets/scene/scene/scene.fire.meta b/play/assets/cocos-generator/scene/cocos-generator.fire.meta
similarity index 64%
rename from play/assets/scene/scene/scene.fire.meta
rename to play/assets/cocos-generator/scene/cocos-generator.fire.meta
index 14547b7500704cb012d18409488069767dd19f5c..d9a4e1763713f78ae6641f2598cc7c33953bea46 100644
--- a/play/assets/scene/scene/scene.fire.meta
+++ b/play/assets/cocos-generator/scene/cocos-generator.fire.meta
@@ -1,6 +1,6 @@
 {
   "ver": "1.2.9",
-  "uuid": "57ea7c61-9b8b-498a-b024-c98ee9124beb",
+  "uuid": "eb8aed66-30b6-4b6d-8111-a56301f794d4",
   "asyncLoadAssets": false,
   "autoReleaseAssets": true,
   "subMetas": {}
diff --git a/play/assets/scene/scene/scene.js b/play/assets/cocos-generator/scene/cocos-generator.js
similarity index 100%
rename from play/assets/scene/scene/scene.js
rename to play/assets/cocos-generator/scene/cocos-generator.js
diff --git a/play/assets/scene/scene/scene.js.meta b/play/assets/cocos-generator/scene/cocos-generator.js.meta
similarity index 74%
rename from play/assets/scene/scene/scene.js.meta
rename to play/assets/cocos-generator/scene/cocos-generator.js.meta
index 76586520228a6b3e46f8441353b67382ce980986..bfa0fcbe6d07bad92e8d48310113e5ed03d25d4b 100644
--- a/play/assets/scene/scene/scene.js.meta
+++ b/play/assets/cocos-generator/scene/cocos-generator.js.meta
@@ -1,6 +1,6 @@
 {
   "ver": "1.0.8",
-  "uuid": "f4ede462-f8d7-4069-ba80-915611c058ca",
+  "uuid": "62e20f3f-0336-4f5d-9698-95147c3ddfa7",
   "isPlugin": false,
   "loadPluginInWeb": true,
   "loadPluginInNative": true,
diff --git a/play/assets/scene/script.meta b/play/assets/cocos-generator/script.meta
similarity index 100%
rename from play/assets/scene/script.meta
rename to play/assets/cocos-generator/script.meta
diff --git a/play/assets/scene/script/defaultData.js b/play/assets/cocos-generator/script/defaultData.js
similarity index 100%
rename from play/assets/scene/script/defaultData.js
rename to play/assets/cocos-generator/script/defaultData.js
diff --git a/play/assets/scene/script/defaultData.js.meta b/play/assets/cocos-generator/script/defaultData.js.meta
similarity index 100%
rename from play/assets/scene/script/defaultData.js.meta
rename to play/assets/cocos-generator/script/defaultData.js.meta
diff --git a/play/assets/scene/script/runtime.js b/play/assets/cocos-generator/script/runtime.js
similarity index 100%
rename from play/assets/scene/script/runtime.js
rename to play/assets/cocos-generator/script/runtime.js
diff --git a/play/assets/scene/script/runtime.js.meta b/play/assets/cocos-generator/script/runtime.js.meta
similarity index 100%
rename from play/assets/scene/script/runtime.js.meta
rename to play/assets/cocos-generator/script/runtime.js.meta
diff --git a/play/assets/scene/script/util.js b/play/assets/cocos-generator/script/util.js
similarity index 100%
rename from play/assets/scene/script/util.js
rename to play/assets/cocos-generator/script/util.js
diff --git a/play/assets/scene/script/util.js.meta b/play/assets/cocos-generator/script/util.js.meta
similarity index 100%
rename from play/assets/scene/script/util.js.meta
rename to play/assets/cocos-generator/script/util.js.meta
diff --git a/play/assets/scene/textures.meta b/play/assets/cocos-generator/textures.meta
similarity index 100%
rename from play/assets/scene/textures.meta
rename to play/assets/cocos-generator/textures.meta
diff --git a/publish/publish/.keep b/play/assets/cocos-generator/textures/.keep
similarity index 100%
rename from publish/publish/.keep
rename to play/assets/cocos-generator/textures/.keep
diff --git a/play/assets/scene/textures/1orange.png b/play/assets/cocos-generator/textures/1orange.png
similarity index 100%
rename from play/assets/scene/textures/1orange.png
rename to play/assets/cocos-generator/textures/1orange.png
diff --git a/play/assets/scene/textures/1orange.png.meta b/play/assets/cocos-generator/textures/1orange.png.meta
similarity index 100%
rename from play/assets/scene/textures/1orange.png.meta
rename to play/assets/cocos-generator/textures/1orange.png.meta
diff --git a/play/assets/scene/textures/bg.jpg b/play/assets/cocos-generator/textures/bg.jpg
similarity index 100%
rename from play/assets/scene/textures/bg.jpg
rename to play/assets/cocos-generator/textures/bg.jpg
diff --git a/play/assets/scene/textures/bg.jpg.meta b/play/assets/cocos-generator/textures/bg.jpg.meta
similarity index 100%
rename from play/assets/scene/textures/bg.jpg.meta
rename to play/assets/cocos-generator/textures/bg.jpg.meta
diff --git a/play/assets/scene/textures/btn_left.png b/play/assets/cocos-generator/textures/btn_left.png
similarity index 100%
rename from play/assets/scene/textures/btn_left.png
rename to play/assets/cocos-generator/textures/btn_left.png
diff --git a/play/assets/scene/textures/btn_left.png.meta b/play/assets/cocos-generator/textures/btn_left.png.meta
similarity index 100%
rename from play/assets/scene/textures/btn_left.png.meta
rename to play/assets/cocos-generator/textures/btn_left.png.meta
diff --git a/play/assets/scene/textures/btn_right.png b/play/assets/cocos-generator/textures/btn_right.png
similarity index 100%
rename from play/assets/scene/textures/btn_right.png
rename to play/assets/cocos-generator/textures/btn_right.png
diff --git a/play/assets/scene/textures/btn_right.png.meta b/play/assets/cocos-generator/textures/btn_right.png.meta
similarity index 100%
rename from play/assets/scene/textures/btn_right.png.meta
rename to play/assets/cocos-generator/textures/btn_right.png.meta
diff --git a/play/assets/scene/textures/icon.png b/play/assets/cocos-generator/textures/icon.png
similarity index 100%
rename from play/assets/scene/textures/icon.png
rename to play/assets/cocos-generator/textures/icon.png
diff --git a/play/assets/scene/textures/icon.png.meta b/play/assets/cocos-generator/textures/icon.png.meta
similarity index 100%
rename from play/assets/scene/textures/icon.png.meta
rename to play/assets/cocos-generator/textures/icon.png.meta
diff --git a/publish/index.html b/play/index.html
similarity index 100%
rename from publish/index.html
rename to play/index.html
diff --git a/play/settings/builder.json b/play/settings/builder.json
index 28efc3a02195f93f4e430c599f52fbf678f3123f..339f2f5d82574ea0611ce8f8be4b6ed99cb85161 100644
--- a/play/settings/builder.json
+++ b/play/settings/builder.json
@@ -1,7 +1,7 @@
 {
   "title": "play",
   "packageName": "org.cocos2d.demo",
-  "startScene": "57ea7c61-9b8b-498a-b024-c98ee9124beb",
+  "startScene": "eb8aed66-30b6-4b6d-8111-a56301f794d4",
   "excludeScenes": [],
   "includeSDKBox": false,
   "orientation": {
diff --git a/publish/.DS_Store b/publish/.DS_Store
index f522f3d131eb78762494367bf67258334990f6fc..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 100644
Binary files a/publish/.DS_Store and b/publish/.DS_Store differ
diff --git a/publish/build_step_2.js b/publish/build_step_2.js
deleted file mode 100644
index e8d672bb9815dbd3abb0646451da6bc173a64795..0000000000000000000000000000000000000000
--- a/publish/build_step_2.js
+++ /dev/null
@@ -1,10 +0,0 @@
-const { removeDir, copyDir, fix2 } = require('./utils');
-const compressing = require('compressing');
-
-async function main() {
-  await removeDir('./publish/ios');
-  await copyDir('../play/build_ios/jsb-link/remote', './publish/ios');
-  await removeDir('../play/build_ios/jsb-link');
-}
-
-main();
\ No newline at end of file
diff --git a/publish/build_step_3.js b/publish/build_step_3.js
deleted file mode 100644
index 8fc7de02724b70b63223c50f212d90eb6f115e24..0000000000000000000000000000000000000000
--- a/publish/build_step_3.js
+++ /dev/null
@@ -1,11 +0,0 @@
-const { removeDir, copyDir, fix2 } = require('./utils');
-const compressing = require('compressing');
-let fs = require('fs');
-
-async function main() {
-  await removeDir('./publish/android');
-  await copyDir('../play/build_android/jsb-link/remote', './publish/android');
-  await removeDir('../play/build_android/jsb-link');
-}
-
-main();
\ No newline at end of file
diff --git a/publish/package-lock.json b/publish/package-lock.json
deleted file mode 100644
index 8d76ee99cb88e776aaebc6c3085d3311cc8741e5..0000000000000000000000000000000000000000
--- a/publish/package-lock.json
+++ /dev/null
@@ -1,268 +0,0 @@
-{
-  "name": "publish",
-  "version": "1.0.0",
-  "lockfileVersion": 1,
-  "requires": true,
-  "dependencies": {
-    "base-64": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz",
-      "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="
-    },
-    "bl": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz",
-      "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==",
-      "requires": {
-        "readable-stream": "^2.3.5",
-        "safe-buffer": "^5.1.1"
-      }
-    },
-    "buffer-alloc": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
-      "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
-      "requires": {
-        "buffer-alloc-unsafe": "^1.1.0",
-        "buffer-fill": "^1.0.0"
-      }
-    },
-    "buffer-alloc-unsafe": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
-      "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
-    },
-    "buffer-crc32": {
-      "version": "0.2.13",
-      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
-      "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI="
-    },
-    "buffer-fill": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
-      "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
-    },
-    "compressing": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npmjs.org/compressing/-/compressing-1.5.1.tgz",
-      "integrity": "sha512-1AGBR4Vh0/rpPKSXHoV9cerLo0CUlAhZ/xsJqU3a9+2cbSaFjWT3fk2MIGkCnbpk//DGWrcWw03rhKFQrA9RQw==",
-      "requires": {
-        "flushwritable": "^1.0.0",
-        "get-ready": "^1.0.0",
-        "iconv-lite": "^0.5.0",
-        "mkdirp": "^0.5.1",
-        "pump": "^3.0.0",
-        "streamifier": "^0.1.1",
-        "tar-stream": "^1.5.2",
-        "yauzl": "^2.7.0",
-        "yazl": "^2.4.2"
-      }
-    },
-    "core-util-is": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
-      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
-    },
-    "end-of-stream": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
-      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
-      "requires": {
-        "once": "^1.4.0"
-      }
-    },
-    "fd-slicer": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
-      "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
-      "requires": {
-        "pend": "~1.2.0"
-      }
-    },
-    "flushwritable": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/flushwritable/-/flushwritable-1.0.0.tgz",
-      "integrity": "sha1-PjKNj95BKtR+c44751C00pAENJg="
-    },
-    "fs-constants": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
-      "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
-    },
-    "get-ready": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/get-ready/-/get-ready-1.0.0.tgz",
-      "integrity": "sha1-+RgX8emt7P6hOlYq38jeiDqzR4I="
-    },
-    "iconv-lite": {
-      "version": "0.5.2",
-      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.2.tgz",
-      "integrity": "sha512-kERHXvpSaB4aU3eANwidg79K8FlrN77m8G9V+0vOR3HYaRifrlwMEpT7ZBJqLSEIHnEgJTHcWK82wwLwwKwtag==",
-      "requires": {
-        "safer-buffer": ">= 2.1.2 < 3"
-      }
-    },
-    "inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
-    },
-    "isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
-    },
-    "js-base64": {
-      "version": "3.7.2",
-      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz",
-      "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ=="
-    },
-    "minimist": {
-      "version": "1.2.5",
-      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
-      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
-    },
-    "mkdirp": {
-      "version": "0.5.5",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
-      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
-      "requires": {
-        "minimist": "^1.2.5"
-      }
-    },
-    "once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
-      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-      "requires": {
-        "wrappy": "1"
-      }
-    },
-    "pend": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
-      "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
-    },
-    "process-nextick-args": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
-    },
-    "pump": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
-      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
-      "requires": {
-        "end-of-stream": "^1.1.0",
-        "once": "^1.3.1"
-      }
-    },
-    "readable-stream": {
-      "version": "2.3.7",
-      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
-      "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-      "requires": {
-        "core-util-is": "~1.0.0",
-        "inherits": "~2.0.3",
-        "isarray": "~1.0.0",
-        "process-nextick-args": "~2.0.0",
-        "safe-buffer": "~5.1.1",
-        "string_decoder": "~1.1.1",
-        "util-deprecate": "~1.0.1"
-      },
-      "dependencies": {
-        "safe-buffer": {
-          "version": "5.1.2",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-          "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-        }
-      }
-    },
-    "safe-buffer": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
-      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
-    },
-    "safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
-      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
-    },
-    "streamifier": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/streamifier/-/streamifier-0.1.1.tgz",
-      "integrity": "sha1-l+mNj6TRBdYqJpHR3AfoINuN/E8="
-    },
-    "string_decoder": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
-      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-      "requires": {
-        "safe-buffer": "~5.1.0"
-      },
-      "dependencies": {
-        "safe-buffer": {
-          "version": "5.1.2",
-          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-          "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
-        }
-      }
-    },
-    "tar-stream": {
-      "version": "1.6.2",
-      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
-      "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
-      "requires": {
-        "bl": "^1.0.0",
-        "buffer-alloc": "^1.2.0",
-        "end-of-stream": "^1.0.0",
-        "fs-constants": "^1.0.0",
-        "readable-stream": "^2.3.0",
-        "to-buffer": "^1.1.1",
-        "xtend": "^4.0.0"
-      }
-    },
-    "to-buffer": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
-      "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
-    },
-    "util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
-    },
-    "uuid": {
-      "version": "8.3.2",
-      "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
-      "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
-    },
-    "wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
-      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
-    },
-    "xtend": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
-      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
-    },
-    "yauzl": {
-      "version": "2.10.0",
-      "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
-      "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
-      "requires": {
-        "buffer-crc32": "~0.2.3",
-        "fd-slicer": "~1.1.0"
-      }
-    },
-    "yazl": {
-      "version": "2.5.1",
-      "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz",
-      "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==",
-      "requires": {
-        "buffer-crc32": "~0.2.3"
-      }
-    }
-  }
-}
diff --git a/publish/package.json b/publish/package.json
deleted file mode 100644
index 2942f392756bae6e2669fb7e74b814273a8f9863..0000000000000000000000000000000000000000
--- a/publish/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-  "name": "publish",
-  "version": "1.0.0",
-  "description": "",
-  "main": "build.js",
-  "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1"
-  },
-  "author": "",
-  "license": "ISC",
-  "dependencies": {
-    "base-64": "^1.0.0",
-    "compressing": "^1.5.1",
-    "js-base64": "^3.7.2",
-    "uuid": "^8.3.2"
-  }
-}
diff --git a/publish/publish/.DS_Store b/publish/publish/.DS_Store
deleted file mode 100644
index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000
Binary files a/publish/publish/.DS_Store and /dev/null differ