From 130b72d6c5734f8acaac0214b6dfe5c8bfa319c3 Mon Sep 17 00:00:00 2001
From: wangrong <wangrong@shsening.com>
Date: 星期三, 24 十一月 2021 20:51:26 +0800
Subject: [PATCH] 添加大屏代码
---
bigScreen/src/views/collectionDetails/lookAllDetails.vue | 421
bigScreen/src/assets/tmp/4.png | 0
bigScreen/src/utils/kriging.js | 580
bigScreen/src/views/recordSearch/index.vue | 433
bigScreen/src/views/components/blanketCoverage.vue | 266
bigScreen/package-lock.json | 17401 +++++++++
bigScreen/package.json | 49
bigScreen/src/views/components/suppressionCoverage.vue | 221
bigScreen/src/assets/diamond.png | 0
bigScreen/src/assets/t2/5.png | 0
bigScreen/src/icons/index.js | 9
deploy/2021-11-24-deploy/dist-s.zip | 0
bigScreen/src/icons/svg/add.svg | 1
bigScreen/src/assets/legal.png | 0
bigScreen/src/assets/shouyinjiLight.jpg | 0
bigScreen/src/views/homePage.vue | 1557
bigScreen/src/try.js | 0
bigScreen/public/index.html | 48
bigScreen/src/assets/t2/3.png | 0
bigScreen/src/main.js | 58
bigScreen/README.md | 24
bigScreen/src/assets/bad.png | 0
bigScreen/.eslintrc.js | 17
bigScreen/src/assets/t2/2.png | 0
bigScreen/src/router/index.js | 51
bigScreen/src/views/components/socketInfo.vue | 842
bigScreen/src/utils/district_extent.js | 77
bigScreen/public/flv.js | 13355 ++++++
bigScreen/src/assets/2.png | 0
bigScreen/src/icons/svg/stopBlack.svg | 1
bigScreen/src/utils/kriging2.js | 485
bigScreen/src/assets/4.png | 0
bigScreen/src/views/whiteList/components/WhiteListEdit.vue | 144
bigScreen/src/views/components/frequencyOperationDiagram.vue | 324
deploy/2021-11-24-deploy/dist.zip | 0
bigScreen/README.en.md | 36
bigScreen/src/views/assessment/index.vue | 717
bigScreen/src/assets/tmp/2.png | 0
bigScreen/src/components/pageNations/SmallPagnations.vue | 77
bigScreen/src/assets/logo.png | 0
bigScreen/src/utils/custom_map_light.json | 1049
bigScreen/src/assets/unLove.png | 0
bigScreen/src/utils/common_map.json | 1400
bigScreen/src/views/components/leftBlock.vue | 339
bigScreen/src/utils/kriging_default_params.js | 8
bigScreen/src/utils/try.json | 39735 ++++++++++++++++++++
bigScreen/src/views/components/bigScreenMap.vue | 805
bigScreen/src/utils/district_boundary.js | 5361 ++
bigScreen/src/views/components/validCode.vue | 187
bigScreen/src/views/whiteList/index.vue | 283
bigScreen/src/views/components/suppressionEffect.vue | 236
bigScreen/src/views/components/topBlock.vue | 444
bigScreen/src/views/monitoringPointManage/index.vue | 820
bigScreen/src/assets/tmp/3.png | 0
bigScreen/src/utils/Geoutils.js | 66
bigScreen/src/views/components/frequencyAnalysis.vue | 130
bigScreen/src/App.vue | 685
bigScreen/vue.config.js | 32
bigScreen/src/utils/request.js | 229
bigScreen/src/icons/svg/stop.svg | 1
bigScreen/src/assets/shouyinjiLight1.jpg | 0
bigScreen/.gitignore | 23
bigScreen/src/components/dropdowns/DropDown.vue | 32
bigScreen/src/utils/directives.js | 179
bigScreen/src/assets/t2/4.png | 0
bigScreen/.browserslistrc | 3
bigScreen/src/icons/svg/recordAdd.svg | 1
bigScreen/src/store/index.js | 11
bigScreen/src/assets/love.png | 0
bigScreen/src/utils/launchtower.js | 513
bigScreen/src/components/SvgIcon/index.vue | 43
bigScreen/src/utils/shshape.js | 18682 +++++++++
bigScreen/src/utils/custom_map_config.json | 449
bigScreen/src/assets/tmp/5.png | 0
bigScreen/src/common/base.scss | 196
bigScreen/src/utils/request2.js | 232
bigScreen/src/utils/custom_map_visiblity.js | 1409
bigScreen/src/assets/1.png | 0
bigScreen/src/utils/filterOptions.js | 249
bigScreen/src/views/collectionDetails/index.vue | 452
bigScreen/src/assets/wx.png | 0
bigScreen/src/views/components/pointInfo.vue | 1126
bigScreen/src/assets/fashedianDark.png | 0
bigScreen/src/utils/chartCustomer.js | 684
bigScreen/babel.config.js | 3
bigScreen/src/assets/t2/1.png | 0
bigScreen/src/utils/other.js | 137
bigScreen/src/api/index.js | 10
bigScreen/src/icons/svg/recordAddBlack.svg | 1
bigScreen/public/data.js | 468
bigScreen/src/views/components/rightBlock.vue | 782
bigScreen/src/components/searchs/Search.vue | 199
bigScreen/kriging.js | 487
bigScreen/src/assets/5.png | 0
bigScreen/src/components/pageNations/Pagnations.vue | 77
bigScreen/public/favicon.ico | 0
bigScreen/src/assets/3.png | 0
bigScreen/src/assets/fashedianLight.jpg | 0
bigScreen/public/configIP.js | 2
bigScreen/src/assets/t2/wx.png | 0
bigScreen/src/utils/map.js | 12
bigScreen/src/assets/tmp/1.png | 0
bigScreen/src/assets/tmp/wx.png | 0
bigScreen/src/icons/svg/task.svg | 1
bigScreen/src/views/whiteList/components/WhiteListOfTask.vue | 113
bigScreen/src/assets/shouyinjiDark.png | 0
106 files changed, 115,580 insertions(+), 0 deletions(-)
diff --git a/bigScreen/.browserslistrc b/bigScreen/.browserslistrc
new file mode 100644
index 0000000..214388f
--- /dev/null
+++ b/bigScreen/.browserslistrc
@@ -0,0 +1,3 @@
+> 1%
+last 2 versions
+not dead
diff --git a/bigScreen/.eslintrc.js b/bigScreen/.eslintrc.js
new file mode 100644
index 0000000..f36f63e
--- /dev/null
+++ b/bigScreen/.eslintrc.js
@@ -0,0 +1,17 @@
+module.exports = {
+ root: true,
+ env: {
+ node: true,
+ },
+ extends: ["plugin:vue/essential", "eslint:recommended", "@vue/prettier"],
+ parserOptions: {
+ parser: "babel-eslint",
+ },
+ rules: {
+ "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
+ "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
+ },
+ globals: {
+ BMap: true,
+ },
+};
diff --git a/bigScreen/.gitignore b/bigScreen/.gitignore
new file mode 100644
index 0000000..403adbc
--- /dev/null
+++ b/bigScreen/.gitignore
@@ -0,0 +1,23 @@
+.DS_Store
+node_modules
+/dist
+
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/bigScreen/README.en.md b/bigScreen/README.en.md
new file mode 100644
index 0000000..e5b6126
--- /dev/null
+++ b/bigScreen/README.en.md
@@ -0,0 +1,36 @@
+# bigscreen
+
+#### Description
+bigscreen
+
+#### Software Architecture
+Software architecture description
+
+#### Installation
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### Instructions
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### Contribution
+
+1. Fork the repository
+2. Create Feat_xxx branch
+3. Commit your code
+4. Create Pull Request
+
+
+#### Gitee Feature
+
+1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
+2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
+3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
+4. The most valuable open source project [GVP](https://gitee.com/gvp)
+5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
+6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
diff --git a/bigScreen/README.md b/bigScreen/README.md
new file mode 100644
index 0000000..1e839b0
--- /dev/null
+++ b/bigScreen/README.md
@@ -0,0 +1,24 @@
+# bigscreen
+
+## Project setup
+```
+npm install
+```
+
+### Compiles and hot-reloads for development
+```
+npm run serve
+```
+
+### Compiles and minifies for production
+```
+npm run build
+```
+
+### Lints and fixes files
+```
+npm run lint
+```
+
+### Customize configuration
+See [Configuration Reference](https://cli.vuejs.org/config/).
diff --git a/bigScreen/babel.config.js b/bigScreen/babel.config.js
new file mode 100644
index 0000000..162a3ea
--- /dev/null
+++ b/bigScreen/babel.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ presets: ["@vue/cli-plugin-babel/preset"],
+};
diff --git a/bigScreen/kriging.js b/bigScreen/kriging.js
new file mode 100644
index 0000000..9c1a795
--- /dev/null
+++ b/bigScreen/kriging.js
@@ -0,0 +1,487 @@
+// Extend the Array class
+Array.prototype.max = function() {
+ return Math.max.apply(null, this);
+};
+Array.prototype.min = function() {
+ return Math.min.apply(null, this);
+};
+Array.prototype.mean = function() {
+ var i, sum;
+ for(i=0,sum=0;i<this.length;i++)
+ sum += this[i];
+ return sum / this.length;
+};
+Array.prototype.pip = function(x, y) {
+ var i, j, c = false;
+ for(i=0,j=this.length-1;i<this.length;j=i++) {
+ if( ((this[i][1]>y) != (this[j][1]>y)) &&
+ (x<(this[j][0]-this[i][0]) * (y-this[i][1]) / (this[j][1]-this[i][1]) + this[i][0]) ) {
+ c = !c;
+ }
+ }
+ return c;
+}
+
+var kriging = function() {
+ var kriging = {};
+
+ var createArrayWithValues = function(value, n) {
+ var array = [];
+ for ( var i = 0; i < n; i++) {
+ array.push(value);
+ }
+ return array;
+ };
+
+ // Matrix algebra
+ kriging_matrix_diag = function(c, n) {
+ var Z = createArrayWithValues(0, n * n);
+ for(i=0;i<n;i++) Z[i*n+i] = c;
+ return Z;
+ };
+ kriging_matrix_transpose = function(X, n, m) {
+ var i, j, Z = Array(m*n);
+ for(i=0;i<n;i++)
+ for(j=0;j<m;j++)
+ Z[j*n+i] = X[i*m+j];
+ return Z;
+ };
+ kriging_matrix_scale = function(X, c, n, m) {
+ var i, j;
+ for(i=0;i<n;i++)
+ for(j=0;j<m;j++)
+ X[i*m+j] *= c;
+ };
+ kriging_matrix_add = function(X, Y, n, m) {
+ var i, j, Z = Array(n*m);
+ for(i=0;i<n;i++)
+ for(j=0;j<m;j++)
+ Z[i*m+j] = X[i*m+j] + Y[i*m+j];
+ return Z;
+ };
+ // Naive matrix multiplication
+ kriging_matrix_multiply = function(X, Y, n, m, p) {
+ var i, j, k, Z = Array(n*p);
+ for(i=0;i<n;i++) {
+ for(j=0;j<p;j++) {
+ Z[i*p+j] = 0;
+ for(k=0;k<m;k++)
+ Z[i*p+j] += X[i*m+k]*Y[k*p+j];
+ }
+ }
+ return Z;
+ };
+ // Cholesky decomposition
+ kriging_matrix_chol = function(X, n) {
+ var i, j, k, sum, p = Array(n);
+ for(i=0;i<n;i++) p[i] = X[i*n+i];
+ for(i=0;i<n;i++) {
+ for(j=0;j<i;j++)
+ p[i] -= X[i*n+j]*X[i*n+j];
+ if(p[i]<=0) return false;
+ p[i] = Math.sqrt(p[i]);
+ for(j=i+1;j<n;j++) {
+ for(k=0;k<i;k++)
+ X[j*n+i] -= X[j*n+k]*X[i*n+k];
+ X[j*n+i] /= p[i];
+ }
+ }
+ for(i=0;i<n;i++) X[i*n+i] = p[i];
+ return true;
+ };
+ // Inversion of cholesky decomposition
+ kriging_matrix_chol2inv = function(X, n) {
+ var i, j, k, sum;
+ for(i=0;i<n;i++) {
+ X[i*n+i] = 1/X[i*n+i];
+ for(j=i+1;j<n;j++) {
+ sum = 0;
+ for(k=i;k<j;k++)
+ sum -= X[j*n+k]*X[k*n+i];
+ X[j*n+i] = sum/X[j*n+j];
+ }
+ }
+ for(i=0;i<n;i++)
+ for(j=i+1;j<n;j++)
+ X[i*n+j] = 0;
+ for(i=0;i<n;i++) {
+ X[i*n+i] *= X[i*n+i];
+ for(k=i+1;k<n;k++)
+ X[i*n+i] += X[k*n+i]*X[k*n+i];
+ for(j=i+1;j<n;j++)
+ for(k=j;k<n;k++)
+ X[i*n+j] += X[k*n+i]*X[k*n+j];
+ }
+ for(i=0;i<n;i++)
+ for(j=0;j<i;j++)
+ X[i*n+j] = X[j*n+i];
+
+ };
+ // Inversion via gauss-jordan elimination
+ kriging_matrix_solve = function(X, n) {
+ var m = n;
+ var b = Array(n*n);
+ var indxc = Array(n);
+ var indxr = Array(n);
+ var ipiv = Array(n);
+ var i, icol, irow, j, k, l, ll;
+ var big, dum, pivinv, temp;
+
+ for(i=0;i<n;i++)
+ for(j=0;j<n;j++) {
+ if(i==j) b[i*n+j] = 1;
+ else b[i*n+j] = 0;
+ }
+ for(j=0;j<n;j++) ipiv[j] = 0;
+ for(i=0;i<n;i++) {
+ big = 0;
+ for(j=0;j<n;j++) {
+ if(ipiv[j]!=1) {
+ for(k=0;k<n;k++) {
+ if(ipiv[k]==0) {
+ if(Math.abs(X[j*n+k])>=big) {
+ big = Math.abs(X[j*n+k]);
+ irow = j;
+ icol = k;
+ }
+ }
+ }
+ }
+ }
+ ++(ipiv[icol]);
+
+ if(irow!=icol) {
+ for(l=0;l<n;l++) {
+ temp = X[irow*n+l];
+ X[irow*n+l] = X[icol*n+l];
+ X[icol*n+l] = temp;
+ }
+ for(l=0;l<m;l++) {
+ temp = b[irow*n+l];
+ b[irow*n+l] = b[icol*n+l];
+ b[icol*n+l] = temp;
+ }
+ }
+ indxr[i] = irow;
+ indxc[i] = icol;
+
+ if(X[icol*n+icol]==0) return false; // Singular
+
+ pivinv = 1 / X[icol*n+icol];
+ X[icol*n+icol] = 1;
+ for(l=0;l<n;l++) X[icol*n+l] *= pivinv;
+ for(l=0;l<m;l++) b[icol*n+l] *= pivinv;
+
+ for(ll=0;ll<n;ll++) {
+ if(ll!=icol) {
+ dum = X[ll*n+icol];
+ X[ll*n+icol] = 0;
+ for(l=0;l<n;l++) X[ll*n+l] -= X[icol*n+l]*dum;
+ for(l=0;l<m;l++) b[ll*n+l] -= b[icol*n+l]*dum;
+ }
+ }
+ }
+ for(l=(n-1);l>=0;l--)
+ if(indxr[l]!=indxc[l]) {
+ for(k=0;k<n;k++) {
+ temp = X[k*n+indxr[l]];
+ X[k*n+indxr[l]] = X[k*n+indxc[l]];
+ X[k*n+indxc[l]] = temp;
+ }
+ }
+
+ return true;
+ }
+
+ // Variogram models
+ kriging_variogram_gaussian = function(h, nugget, range, sill, A) {
+ return nugget + ((sill-nugget)/range)*
+ ( 1.0 - Math.exp(-(1.0/A)*Math.pow(h/range, 2)) );
+ };
+ kriging_variogram_exponential = function(h, nugget, range, sill, A) {
+ return nugget + ((sill-nugget)/range)*
+ ( 1.0 - Math.exp(-(1.0/A) * (h/range)) );
+ };
+ kriging_variogram_spherical = function(h, nugget, range, sill, A) {
+ if(h>range) return nugget + (sill-nugget)/range;
+ return nugget + ((sill-nugget)/range)*
+ ( 1.5*(h/range) - 0.5*Math.pow(h/range, 3) );
+ };
+
+ // Train using gaussian processes with bayesian priors
+ kriging.train = function(t, x, y, model, sigma2, alpha) {
+ var variogram = {
+ t : t,
+ x : x,
+ y : y,
+ nugget : 0.0,
+ range : 0.0,
+ sill : 0.0,
+ A : 1/3,
+ n : 0
+ };
+ switch(model) {
+ case "gaussian":
+ variogram.model = kriging_variogram_gaussian;
+ break;
+ case "exponential":
+ variogram.model = kriging_variogram_exponential;
+ break;
+ case "spherical":
+ variogram.model = kriging_variogram_spherical;
+ break;
+ };
+
+ // Lag distance/semivariance
+ var i, j, k, l, n = t.length;
+ var distance = Array((n*n-n)/2);
+ for(i=0,k=0;i<n;i++)
+ for(j=0;j<i;j++,k++) {
+ distance[k] = Array(2);
+ distance[k][0] = Math.pow(
+ Math.pow(x[i]-x[j], 2)+
+ Math.pow(y[i]-y[j], 2), 0.5);
+ distance[k][1] = Math.abs(t[i]-t[j]);
+ }
+ distance.sort(function(a, b) { return a[0] - b[0]; });
+ variogram.range = distance[(n*n-n)/2-1][0];
+
+ // Bin lag distance
+ var lags = ((n*n-n)/2)>30?30:(n*n-n)/2;
+ var tolerance = variogram.range/lags;
+ var lag = createArrayWithValues(0,lags);
+ var semi = createArrayWithValues(0,lags);
+ if(lags<30) {
+ for(l=0;l<lags;l++) {
+ lag[l] = distance[l][0];
+ semi[l] = distance[l][1];
+ }
+ }
+ else {
+ for(i=0,j=0,k=0,l=0;i<lags&&j<((n*n-n)/2);i++,k=0) {
+ while( distance[j][0]<=((i+1)*tolerance) ) {
+ lag[l] += distance[j][0];
+ semi[l] += distance[j][1];
+ j++;k++;
+ if(j>=((n*n-n)/2)) break;
+ }
+ if(k>0) {
+ lag[l] /= k;
+ semi[l] /= k;
+ l++;
+ }
+ }
+ if(l<2) return variogram; // Error: Not enough points
+ }
+
+ // Feature transformation
+ n = l;
+ variogram.range = lag[n-1]-lag[0];
+ var X = createArrayWithValues(1,2 * n);
+ var Y = Array(n);
+ var A = variogram.A;
+ for(i=0;i<n;i++) {
+ switch(model) {
+ case "gaussian":
+ X[i*2+1] = 1.0-Math.exp(-(1.0/A)*Math.pow(lag[i]/variogram.range, 2));
+ break;
+ case "exponential":
+ X[i*2+1] = 1.0-Math.exp(-(1.0/A)*lag[i]/variogram.range);
+ break;
+ case "spherical":
+ X[i*2+1] = 1.5*(lag[i]/variogram.range)-
+ 0.5*Math.pow(lag[i]/variogram.range, 3);
+ break;
+ };
+ Y[i] = semi[i];
+ }
+
+ // Least squares
+ var Xt = kriging_matrix_transpose(X, n, 2);
+ var Z = kriging_matrix_multiply(Xt, X, 2, n, 2);
+ Z = kriging_matrix_add(Z, kriging_matrix_diag(1/alpha, 2), 2, 2);
+ var cloneZ = Z.slice(0);
+ if(kriging_matrix_chol(Z, 2))
+ kriging_matrix_chol2inv(Z, 2);
+ else {
+ kriging_matrix_solve(cloneZ, 2);
+ Z = cloneZ;
+ }
+ var W = kriging_matrix_multiply(kriging_matrix_multiply(Z, Xt, 2, 2, n), Y, 2, n, 1);
+
+ // Variogram parameters
+ variogram.nugget = W[0];
+ variogram.sill = W[1]*variogram.range+variogram.nugget;
+ variogram.n = x.length;
+
+ // Gram matrix with prior
+ n = x.length;
+ var K = Array(n*n);
+ for(i=0;i<n;i++) {
+ for(j=0;j<i;j++) {
+ K[i*n+j] = variogram.model(Math.pow(Math.pow(x[i]-x[j], 2)+
+ Math.pow(y[i]-y[j], 2), 0.5),
+ variogram.nugget,
+ variogram.range,
+ variogram.sill,
+ variogram.A);
+ K[j*n+i] = K[i*n+j];
+ }
+ K[i*n+i] = variogram.model(0, variogram.nugget,
+ variogram.range,
+ variogram.sill,
+ variogram.A);
+ }
+
+ // Inverse penalized Gram matrix projected to target vector
+ var C = kriging_matrix_add(K, kriging_matrix_diag(sigma2, n), n, n);
+ var cloneC = C.slice(0);
+ if(kriging_matrix_chol(C, n))
+ kriging_matrix_chol2inv(C, n);
+ else {
+ kriging_matrix_solve(cloneC, n);
+ C = cloneC;
+ }
+
+ // Copy unprojected inverted matrix as K
+ var K = C.slice(0);
+ var M = kriging_matrix_multiply(C, t, n, n, 1);
+ variogram.K = K;
+ variogram.M = M;
+
+ return variogram;
+ };
+
+ // Model prediction
+ kriging.predict = function(x, y, variogram) {
+ var i, k = Array(variogram.n);
+ for(i=0;i<variogram.n;i++)
+ k[i] = variogram.model(Math.pow(Math.pow(x-variogram.x[i], 2)+
+ Math.pow(y-variogram.y[i], 2), 0.5),
+ variogram.nugget, variogram.range,
+ variogram.sill, variogram.A);
+ return kriging_matrix_multiply(k, variogram.M, 1, variogram.n, 1)[0];
+ };
+ kriging.variance = function(x, y, variogram) {
+ var i, k = Array(variogram.n);
+ for(i=0;i<variogram.n;i++)
+ k[i] = variogram.model(Math.pow(Math.pow(x-variogram.x[i], 2)+
+ Math.pow(y-variogram.y[i], 2), 0.5),
+ variogram.nugget, variogram.range,
+ variogram.sill, variogram.A);
+ return variogram.model(0, variogram.nugget, variogram.range,
+ variogram.sill, variogram.A)+
+ kriging_matrix_multiply(kriging_matrix_multiply(k, variogram.K,
+ 1, variogram.n, variogram.n),
+ k, 1, variogram.n, 1)[0];
+ };
+
+ // Gridded matrices or contour paths
+ kriging.grid = function(polygons, variogram, width) {
+ var i, j, k, n = polygons.length;
+ if(n==0) return;
+
+ // Boundaries of polygons space
+ var xlim = [polygons[0][0][0], polygons[0][0][0]];
+ var ylim = [polygons[0][0][1], polygons[0][0][1]];
+ for(i=0;i<n;i++) // Polygons
+ for(j=0;j<polygons[i].length;j++) { // Vertices
+ if(polygons[i][j][0]<xlim[0])
+ xlim[0] = polygons[i][j][0];
+ if(polygons[i][j][0]>xlim[1])
+ xlim[1] = polygons[i][j][0];
+ if(polygons[i][j][1]<ylim[0])
+ ylim[0] = polygons[i][j][1];
+ if(polygons[i][j][1]>ylim[1])
+ ylim[1] = polygons[i][j][1];
+ }
+
+ // Alloc for O(n^2) space
+ var xtarget, ytarget;
+ var a = Array(2), b = Array(2);
+ var lxlim = Array(2); // Local dimensions
+ var lylim = Array(2); // Local dimensions
+ var x = Math.ceil((xlim[1]-xlim[0])/width);
+ var y = Math.ceil((ylim[1]-ylim[0])/width);
+
+ var A = Array(x+1);
+ for(i=0;i<=x;i++) A[i] = Array(y+1);
+ for(i=0;i<n;i++) {
+ // Range for polygons[i]
+ lxlim[0] = polygons[i][0][0];
+ lxlim[1] = lxlim[0];
+ lylim[0] = polygons[i][0][1];
+ lylim[1] = lylim[0];
+ for(j=1;j<polygons[i].length;j++) { // Vertices
+ if(polygons[i][j][0]<lxlim[0])
+ lxlim[0] = polygons[i][j][0];
+ if(polygons[i][j][0]>lxlim[1])
+ lxlim[1] = polygons[i][j][0];
+ if(polygons[i][j][1]<lylim[0])
+ lylim[0] = polygons[i][j][1];
+ if(polygons[i][j][1]>lylim[1])
+ lylim[1] = polygons[i][j][1];
+ }
+
+ // Loop through polygon subspace
+ a[0] = Math.floor(((lxlim[0]-((lxlim[0]-xlim[0])%width)) - xlim[0])/width);
+ a[1] = Math.ceil(((lxlim[1]-((lxlim[1]-xlim[1])%width)) - xlim[0])/width);
+ b[0] = Math.floor(((lylim[0]-((lylim[0]-ylim[0])%width)) - ylim[0])/width);
+ b[1] = Math.ceil(((lylim[1]-((lylim[1]-ylim[1])%width)) - ylim[0])/width);
+ for(j=a[0];j<=a[1];j++)
+ for(k=b[0];k<=b[1];k++) {
+ xtarget = xlim[0] + j*width;
+ ytarget = ylim[0] + k*width;
+ if(polygons[i].pip(xtarget, ytarget))
+ A[j][k] = kriging.predict(xtarget,
+ ytarget,
+ variogram);
+ }
+ }
+ A.xlim = xlim;
+ A.ylim = ylim;
+ A.zlim = [variogram.t.min(), variogram.t.max()];
+ A.width = width;
+ return A;
+ };
+ kriging.contour = function(value, polygons, variogram) {
+
+ };
+
+ // Plotting on the DOM
+ kriging.plot = function(canvas, grid, xlim, ylim, colors) {
+ // Clear screen
+ var ctx = canvas.getContext("2d");
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+
+ // Starting boundaries
+ var range = [xlim[1]-xlim[0], ylim[1]-ylim[0], grid.zlim[1]-grid.zlim[0]];
+ var i, j, x, y, z;
+ var n = grid.length;
+ var m = grid[0].length;
+ var wx = Math.ceil(grid.width*canvas.width/(xlim[1]-xlim[0]));
+ var wy = Math.ceil(grid.width*canvas.height/(ylim[1]-ylim[0]));
+ for(i=0;i<n;i++)
+ for(j=0;j<m;j++) {
+ if(grid[i][j]==undefined) continue;
+ x = canvas.width*(i*grid.width+grid.xlim[0]-xlim[0])/range[0];
+ y = canvas.height*(1-(j*grid.width+grid.ylim[0]-ylim[0])/range[1]);
+ z = (grid[i][j]-grid.zlim[0])/range[2];
+ if(z<0.0) z = 0.0;
+ if(z>1.0) z = 1.0;
+
+ ctx.fillStyle = colors[Math.floor((colors.length-1)*z)];
+ ctx.fillRect(Math.round(x-wx/2), Math.round(y-wy/2), wx, wy);
+ }
+
+ };
+
+
+ return kriging;
+}();
+
+if (module && module.exports){
+ module.exports = kriging;
+}
+
+// export default kriging
\ No newline at end of file
diff --git a/bigScreen/package-lock.json b/bigScreen/package-lock.json
new file mode 100644
index 0000000..bc64e7e
--- /dev/null
+++ b/bigScreen/package-lock.json
@@ -0,0 +1,17401 @@
+{
+ "name": "bigscreen",
+ "version": "0.1.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/code-frame/download/@babel/code-frame-7.14.5.tgz?cache=0&sync_timestamp=1623280853270&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fcode-frame%2Fdownload%2F%40babel%2Fcode-frame-7.14.5.tgz",
+ "integrity": "sha1-I7CNdA6D9JxeWZRfvxtD6Au/Tts=",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.14.5"
+ }
+ },
+ "@babel/compat-data": {
+ "version": "7.14.7",
+ "resolved": "https://registry.nlark.com/@babel/compat-data/download/@babel/compat-data-7.14.7.tgz",
+ "integrity": "sha1-ewR9ejqJpn0iWNxh9gTwmPG8fgg=",
+ "dev": true
+ },
+ "@babel/core": {
+ "version": "7.14.6",
+ "resolved": "https://registry.nlark.com/@babel/core/download/@babel/core-7.14.6.tgz?cache=0&sync_timestamp=1623707878699&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fcore%2Fdownload%2F%40babel%2Fcore-7.14.6.tgz",
+ "integrity": "sha1-4IFOwalQAy/xbBOich3jmoQW/Ks=",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.14.5",
+ "@babel/generator": "^7.14.5",
+ "@babel/helper-compilation-targets": "^7.14.5",
+ "@babel/helper-module-transforms": "^7.14.5",
+ "@babel/helpers": "^7.14.6",
+ "@babel/parser": "^7.14.6",
+ "@babel/template": "^7.14.5",
+ "@babel/traverse": "^7.14.5",
+ "@babel/types": "^7.14.5",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.1.2",
+ "semver": "^6.3.0",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/generator": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/generator/download/@babel/generator-7.14.5.tgz",
+ "integrity": "sha1-hI17nwMcrKnQzQrwGwY/Im9S14U=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.14.5",
+ "jsesc": "^2.5.1",
+ "source-map": "^0.5.0"
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.14.5.tgz",
+ "integrity": "sha1-e/R47Dtxcm1WqMpXdbBG/CmHnmE=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.14.5.tgz?cache=0&sync_timestamp=1623280377006&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-builder-binary-assignment-operator-visitor%2Fdownload%2F%40babel%2Fhelper-builder-binary-assignment-operator-visitor-7.14.5.tgz",
+ "integrity": "sha1-uTm0P4w3dlRDoZrnStixWXjgoZE=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-explode-assignable-expression": "^7.14.5",
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/helper-compilation-targets": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-compilation-targets/download/@babel/helper-compilation-targets-7.14.5.tgz?cache=0&sync_timestamp=1623280417606&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-compilation-targets%2Fdownload%2F%40babel%2Fhelper-compilation-targets-7.14.5.tgz",
+ "integrity": "sha1-epnF0JZ5Eely/iw0EffVtJhJjs8=",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.14.5",
+ "@babel/helper-validator-option": "^7.14.5",
+ "browserslist": "^4.16.6",
+ "semver": "^6.3.0"
+ }
+ },
+ "@babel/helper-create-class-features-plugin": {
+ "version": "7.14.6",
+ "resolved": "https://registry.nlark.com/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.14.6.tgz",
+ "integrity": "sha1-8RRGm2wG+LXFnGxOdGIfUIU2JUI=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.14.5",
+ "@babel/helper-function-name": "^7.14.5",
+ "@babel/helper-member-expression-to-functions": "^7.14.5",
+ "@babel/helper-optimise-call-expression": "^7.14.5",
+ "@babel/helper-replace-supers": "^7.14.5",
+ "@babel/helper-split-export-declaration": "^7.14.5"
+ }
+ },
+ "@babel/helper-create-regexp-features-plugin": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-create-regexp-features-plugin/download/@babel/helper-create-regexp-features-plugin-7.14.5.tgz",
+ "integrity": "sha1-x9WsXpz2IcJgV3Ivt6ikxYiTWMQ=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.14.5",
+ "regexpu-core": "^4.7.1"
+ }
+ },
+ "@babel/helper-define-polyfill-provider": {
+ "version": "0.2.3",
+ "resolved": "https://registry.nlark.com/@babel/helper-define-polyfill-provider/download/@babel/helper-define-polyfill-provider-0.2.3.tgz",
+ "integrity": "sha1-BSXt7FCUZTooJojTTYRuTHXpwLY=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-compilation-targets": "^7.13.0",
+ "@babel/helper-module-imports": "^7.12.13",
+ "@babel/helper-plugin-utils": "^7.13.0",
+ "@babel/traverse": "^7.13.0",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2",
+ "semver": "^6.1.2"
+ }
+ },
+ "@babel/helper-explode-assignable-expression": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.14.5.tgz",
+ "integrity": "sha1-iqcucIIFx7tkPkXHO0OGzfKh9kU=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-function-name/download/@babel/helper-function-name-7.14.5.tgz?cache=0&sync_timestamp=1623280859030&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-function-name%2Fdownload%2F%40babel%2Fhelper-function-name-7.14.5.tgz",
+ "integrity": "sha1-ieLEdJcvFdjiM7Uu6MSA4s/NUMQ=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.14.5",
+ "@babel/template": "^7.14.5",
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.14.5.tgz",
+ "integrity": "sha1-Jfv6V5sJN+7h87gF7OTOOYxDGBU=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.14.5.tgz?cache=0&sync_timestamp=1623280361512&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-hoist-variables%2Fdownload%2F%40babel%2Fhelper-hoist-variables-7.14.5.tgz",
+ "integrity": "sha1-4N0nwzp45XfXyIhJFqPn7x98f40=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.14.7",
+ "resolved": "https://registry.nlark.com/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.14.7.tgz?cache=0&sync_timestamp=1624312632792&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-member-expression-to-functions%2Fdownload%2F%40babel%2Fhelper-member-expression-to-functions-7.14.7.tgz",
+ "integrity": "sha1-l+ViRL65QhH+J3vYGOOjKcZveXA=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-module-imports/download/@babel/helper-module-imports-7.14.5.tgz",
+ "integrity": "sha1-bRpE32o4yVeqfDEtoHZCnxG0IvM=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.14.5.tgz?cache=0&sync_timestamp=1623281006013&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-module-transforms%2Fdownload%2F%40babel%2Fhelper-module-transforms-7.14.5.tgz",
+ "integrity": "sha1-feQvENeJtCPrkC69JAMcp3yx4Q4=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.14.5",
+ "@babel/helper-replace-supers": "^7.14.5",
+ "@babel/helper-simple-access": "^7.14.5",
+ "@babel/helper-split-export-declaration": "^7.14.5",
+ "@babel/helper-validator-identifier": "^7.14.5",
+ "@babel/template": "^7.14.5",
+ "@babel/traverse": "^7.14.5",
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.14.5.tgz",
+ "integrity": "sha1-8nOVqGGeBmWz8DZM3bQcJdcbSZw=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.14.5.tgz?cache=0&sync_timestamp=1623280305577&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-plugin-utils%2Fdownload%2F%40babel%2Fhelper-plugin-utils-7.14.5.tgz",
+ "integrity": "sha1-WsgizpfuxGdBq3ClF5ceRDpwxak=",
+ "dev": true
+ },
+ "@babel/helper-remap-async-to-generator": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.14.5.tgz?cache=0&sync_timestamp=1623280405954&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-remap-async-to-generator%2Fdownload%2F%40babel%2Fhelper-remap-async-to-generator-7.14.5.tgz",
+ "integrity": "sha1-UUOckTYSlY9UqYek/8nuWHogRdY=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.14.5",
+ "@babel/helper-wrap-function": "^7.14.5",
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.14.5.tgz",
+ "integrity": "sha1-DswLA8Qc1We0Ak6gFhNMKEFKu5Q=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-member-expression-to-functions": "^7.14.5",
+ "@babel/helper-optimise-call-expression": "^7.14.5",
+ "@babel/traverse": "^7.14.5",
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-simple-access/download/@babel/helper-simple-access-7.14.5.tgz",
+ "integrity": "sha1-ZuqFz1O6C05Yi6d/yBP1OryqQcQ=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-skip-transparent-expression-wrappers/download/@babel/helper-skip-transparent-expression-wrappers-7.14.5.tgz?cache=0&sync_timestamp=1623280361594&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-skip-transparent-expression-wrappers%2Fdownload%2F%40babel%2Fhelper-skip-transparent-expression-wrappers-7.14.5.tgz",
+ "integrity": "sha1-lvSGrAUMqfRLAJ++W305TKs6DuQ=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.14.5.tgz",
+ "integrity": "sha1-IrI6VO9RwrdgXYUZMMGXbdC8aTo=",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.14.5.tgz?cache=0&sync_timestamp=1623280305128&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.14.5.tgz",
+ "integrity": "sha1-0PDid8US4Mk4J3+qhaOWjJpEwOg=",
+ "dev": true
+ },
+ "@babel/helper-validator-option": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-validator-option/download/@babel/helper-validator-option-7.14.5.tgz?cache=0&sync_timestamp=1623280304150&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-validator-option%2Fdownload%2F%40babel%2Fhelper-validator-option-7.14.5.tgz",
+ "integrity": "sha1-bnKh//GNXfy4eOHmLxoCHEty1aM=",
+ "dev": true
+ },
+ "@babel/helper-wrap-function": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.14.5.tgz?cache=0&sync_timestamp=1623280400923&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-wrap-function%2Fdownload%2F%40babel%2Fhelper-wrap-function-7.14.5.tgz",
+ "integrity": "sha1-WRnRFb8P4yi4pdY7y2EPUWAfK/8=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.14.5",
+ "@babel/template": "^7.14.5",
+ "@babel/traverse": "^7.14.5",
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/helpers": {
+ "version": "7.14.6",
+ "resolved": "https://registry.nlark.com/@babel/helpers/download/@babel/helpers-7.14.6.tgz?cache=0&sync_timestamp=1623708032832&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelpers%2Fdownload%2F%40babel%2Fhelpers-7.14.6.tgz",
+ "integrity": "sha1-W1gwa5XxtH4qAZlDT6hlj6bCFjU=",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.14.5",
+ "@babel/traverse": "^7.14.5",
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/highlight/download/@babel/highlight-7.14.5.tgz",
+ "integrity": "sha1-aGGlLwOWZAUAH2qlNKAaJNmejNk=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.14.5",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.14.7",
+ "resolved": "https://registry.nlark.com/@babel/parser/download/@babel/parser-7.14.7.tgz",
+ "integrity": "sha1-YJlyDIg5yoZaJjfmyFhS6tC9tZU=",
+ "dev": true
+ },
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/download/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz?cache=0&sync_timestamp=1623280386537&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-bugfix-v8-spread-parameters-in-optional-chaining%2Fdownload%2F%40babel%2Fplugin-bugfix-v8-spread-parameters-in-optional-chaining-7.14.5.tgz",
+ "integrity": "sha1-S0ZzAuFUjtOxvkO+rizJz0Xgu34=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5",
+ "@babel/plugin-proposal-optional-chaining": "^7.14.5"
+ }
+ },
+ "@babel/plugin-proposal-async-generator-functions": {
+ "version": "7.14.7",
+ "resolved": "https://registry.nlark.com/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.14.7.tgz",
+ "integrity": "sha1-eEpIw9jtBz9lrc8wtXvL9sgRms4=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-remap-async-to-generator": "^7.14.5",
+ "@babel/plugin-syntax-async-generators": "^7.8.4"
+ }
+ },
+ "@babel/plugin-proposal-class-properties": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.14.5.tgz?cache=0&sync_timestamp=1623281011287&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-class-properties%2Fdownload%2F%40babel%2Fplugin-proposal-class-properties-7.14.5.tgz",
+ "integrity": "sha1-QNHuFAxbHjGjUPT17tlFCWVZtC4=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-proposal-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-proposal-class-static-block/download/@babel/plugin-proposal-class-static-block-7.14.5.tgz?cache=0&sync_timestamp=1623280411252&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-class-static-block%2Fdownload%2F%40babel%2Fplugin-proposal-class-static-block-7.14.5.tgz",
+ "integrity": "sha1-FY6eENRJw4Se8+zelKA9nxhBtoE=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5"
+ }
+ },
+ "@babel/plugin-proposal-decorators": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-proposal-decorators/download/@babel/plugin-proposal-decorators-7.14.5.tgz?cache=0&sync_timestamp=1623280416062&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-decorators%2Fdownload%2F%40babel%2Fplugin-proposal-decorators-7.14.5.tgz",
+ "integrity": "sha1-WbxN/B1mW1pnSc95j/Qil+0bLB0=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-decorators": "^7.14.5"
+ }
+ },
+ "@babel/plugin-proposal-dynamic-import": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-proposal-dynamic-import/download/@babel/plugin-proposal-dynamic-import-7.14.5.tgz",
+ "integrity": "sha1-DGYX30YcDB+P/ztHzVl3I2AQHSw=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-export-namespace-from": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-proposal-export-namespace-from/download/@babel/plugin-proposal-export-namespace-from-7.14.5.tgz",
+ "integrity": "sha1-260kQxDObM0IMHIWfYzqg6Uvr3Y=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-json-strings": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.14.5.tgz",
+ "integrity": "sha1-ON5g2zYug6PYyUSshY3fnwwiOes=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-json-strings": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-logical-assignment-operators": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-proposal-logical-assignment-operators/download/@babel/plugin-proposal-logical-assignment-operators-7.14.5.tgz?cache=0&sync_timestamp=1623280419692&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-logical-assignment-operators%2Fdownload%2F%40babel%2Fplugin-proposal-logical-assignment-operators-7.14.5.tgz",
+ "integrity": "sha1-bmIpwqmbAqspFfglceDMZGpAxzg=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+ }
+ },
+ "@babel/plugin-proposal-nullish-coalescing-operator": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-proposal-nullish-coalescing-operator/download/@babel/plugin-proposal-nullish-coalescing-operator-7.14.5.tgz",
+ "integrity": "sha1-7jhYnOAOLMWbKZ7D6kBvzToP2vY=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-numeric-separator": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-proposal-numeric-separator/download/@babel/plugin-proposal-numeric-separator-7.14.5.tgz",
+ "integrity": "sha1-g2Mb8z2aUd8YTCECoGmsDFjAXxg=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ }
+ },
+ "@babel/plugin-proposal-object-rest-spread": {
+ "version": "7.14.7",
+ "resolved": "https://registry.nlark.com/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.14.7.tgz",
+ "integrity": "sha1-WSCis99/eQHfAgWXTAZBsT/Z02M=",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.14.7",
+ "@babel/helper-compilation-targets": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.14.5"
+ }
+ },
+ "@babel/plugin-proposal-optional-catch-binding": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.14.5.tgz",
+ "integrity": "sha1-k53W7d7/Omf997PwRLU0cmJZjDw=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-optional-chaining": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-proposal-optional-chaining/download/@babel/plugin-proposal-optional-chaining-7.14.5.tgz",
+ "integrity": "sha1-+oNlHmCjYOPxN5fu8AuNUZaVtgM=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-private-methods": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-proposal-private-methods/download/@babel/plugin-proposal-private-methods-7.14.5.tgz?cache=0&sync_timestamp=1623280416204&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-private-methods%2Fdownload%2F%40babel%2Fplugin-proposal-private-methods-7.14.5.tgz",
+ "integrity": "sha1-N0RklZlrKUXzD1vltg1eKqT1eS0=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-proposal-private-property-in-object/download/@babel/plugin-proposal-private-property-in-object-7.14.5.tgz?cache=0&sync_timestamp=1623280416058&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-private-property-in-object%2Fdownload%2F%40babel%2Fplugin-proposal-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha1-n2Wk0Ek6lAtMAfiqnT8YlKWH9jY=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.14.5",
+ "@babel/helper-create-class-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+ }
+ },
+ "@babel/plugin-proposal-unicode-property-regex": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.14.5.tgz?cache=0&sync_timestamp=1623280385924&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-proposal-unicode-property-regex%2Fdownload%2F%40babel%2Fplugin-proposal-unicode-property-regex-7.14.5.tgz",
+ "integrity": "sha1-D5XuDnV6XWR/N42qDsp+k/qou+g=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-async-generators/download/@babel/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha1-qYP7Gusuw/btBCohD2QOkOeG/g0=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-class-properties/download/@babel/plugin-syntax-class-properties-7.12.13.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-class-properties%2Fdownload%2F%40babel%2Fplugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha1-tcmHJ0xKOoK4lxR5aTGmtTVErhA=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ }
+ },
+ "@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-syntax-class-static-block/download/@babel/plugin-syntax-class-static-block-7.14.5.tgz?cache=0&sync_timestamp=1623280420297&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-syntax-class-static-block%2Fdownload%2F%40babel%2Fplugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha1-GV34mxRrS3izv4l/16JXyEZZ1AY=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-decorators": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-syntax-decorators/download/@babel/plugin-syntax-decorators-7.14.5.tgz?cache=0&sync_timestamp=1623280421117&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-syntax-decorators%2Fdownload%2F%40babel%2Fplugin-syntax-decorators-7.14.5.tgz",
+ "integrity": "sha1-6vucDL4JyK/rlkujp7vWOUWnLyA=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-dynamic-import/download/@babel/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha1-Yr+Ysto80h1iYVT8lu5bPLaOrLM=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-export-namespace-from": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-export-namespace-from/download/@babel/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha1-AolkqbqA28CUyRXEh618TnpmRlo=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-json-strings/download/@babel/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha1-AcohtmjNghjJ5kDLbdiMVBKyyWo=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-jsx": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.14.5.tgz",
+ "integrity": "sha1-AA4uJdhnPM5JMAUXo+2kTCY+QgE=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-logical-assignment-operators/download/@babel/plugin-syntax-logical-assignment-operators-7.10.4.tgz?cache=0&sync_timestamp=1593525072473&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-syntax-logical-assignment-operators%2Fdownload%2F%40babel%2Fplugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha1-ypHvRjA1MESLkGZSusLp/plB9pk=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-nullish-coalescing-operator/download/@babel/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha1-Fn7XA2iIYIH3S1w2xlqIwDtm0ak=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-numeric-separator/download/@babel/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha1-ubBws+M1cM2f0Hun+pHA3Te5r5c=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-object-rest-spread/download/@babel/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha1-YOIl7cvZimQDMqLnLdPmbxr1WHE=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-catch-binding/download/@babel/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha1-YRGiZbz7Ag6579D9/X0mQCue1sE=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-chaining/download/@babel/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha1-T2nCq5UWfgGAzVM2YT+MV4j31Io=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-syntax-private-property-in-object/download/@babel/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha1-DcZnHsDqIrbpShEU+FeXDNOd4a0=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-syntax-top-level-await/download/@babel/plugin-syntax-top-level-await-7.14.5.tgz?cache=0&sync_timestamp=1623280427172&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-syntax-top-level-await%2Fdownload%2F%40babel%2Fplugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha1-wc/a3DWmRiQAAfBhOCR7dBw02Uw=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-arrow-functions": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.14.5.tgz",
+ "integrity": "sha1-9xh9lYinaN0IC/TJ/+EX6mL3hio=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-async-to-generator": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.14.5.tgz?cache=0&sync_timestamp=1623280415969&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-async-to-generator%2Fdownload%2F%40babel%2Fplugin-transform-async-to-generator-7.14.5.tgz",
+ "integrity": "sha1-cseJCE2PIJSsuUVjOUPvhEPTnmc=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-remap-async-to-generator": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.14.5.tgz",
+ "integrity": "sha1-5IZB2ZnUvBV6Z+8zautUvET9OtQ=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-block-scoping": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.14.5.tgz",
+ "integrity": "sha1-jMY+YeUPQuB45vCb53WnXyPvmTk=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-classes": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.14.5.tgz?cache=0&sync_timestamp=1623281007280&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-classes%2Fdownload%2F%40babel%2Fplugin-transform-classes-7.14.5.tgz",
+ "integrity": "sha1-DpjoIJezhVCwO0g/m1GnjeCsss8=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.14.5",
+ "@babel/helper-function-name": "^7.14.5",
+ "@babel/helper-optimise-call-expression": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-replace-supers": "^7.14.5",
+ "@babel/helper-split-export-declaration": "^7.14.5",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/plugin-transform-computed-properties": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.14.5.tgz",
+ "integrity": "sha1-G514mHQg0RIj1BGVRhzEO5dLIE8=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-destructuring": {
+ "version": "7.14.7",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.14.7.tgz",
+ "integrity": "sha1-CtWO034j4iCE0QnxhSYINeVVdXY=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-dotall-regex": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.14.5.tgz?cache=0&sync_timestamp=1623280386290&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-dotall-regex%2Fdownload%2F%40babel%2Fplugin-transform-dotall-regex-7.14.5.tgz",
+ "integrity": "sha1-L2v3bka9+AQ7Tn4WzyRTJim6DHo=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-duplicate-keys": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.14.5.tgz",
+ "integrity": "sha1-NlpIRIgb3xUB46nwJw5/D5EXeVQ=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.14.5.tgz",
+ "integrity": "sha1-UVS43Wo9/m2Qkj1hckvT3uuQtJM=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-for-of": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.14.5.tgz",
+ "integrity": "sha1-2uOEYT3o93wZaohpy/YCpE9/wOs=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-function-name": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.14.5.tgz",
+ "integrity": "sha1-6Bxl7LkAdG1/MYAva+0fUtkV1vI=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-literals": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.14.5.tgz?cache=0&sync_timestamp=1623280340946&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-literals%2Fdownload%2F%40babel%2Fplugin-transform-literals-7.14.5.tgz",
+ "integrity": "sha1-QdBsf/XU0J489Fh70+zzkwxzD3g=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-member-expression-literals": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-member-expression-literals/download/@babel/plugin-transform-member-expression-literals-7.14.5.tgz?cache=0&sync_timestamp=1623280341518&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-member-expression-literals%2Fdownload%2F%40babel%2Fplugin-transform-member-expression-literals-7.14.5.tgz",
+ "integrity": "sha1-s5zVISor8jWmF9Mg7CtIvMCRuKc=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-modules-amd": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.14.5.tgz?cache=0&sync_timestamp=1623280416173&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-modules-amd%2Fdownload%2F%40babel%2Fplugin-transform-modules-amd-7.14.5.tgz",
+ "integrity": "sha1-T9nOfjQRy4uDhISAtwQdgwBIWPc=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
+ }
+ },
+ "@babel/plugin-transform-modules-commonjs": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.14.5.tgz?cache=0&sync_timestamp=1623281021067&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-modules-commonjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-commonjs-7.14.5.tgz",
+ "integrity": "sha1-eq7g6pgoPelNqYso+MNXAUKdrZc=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-simple-access": "^7.14.5",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
+ }
+ },
+ "@babel/plugin-transform-modules-systemjs": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.14.5.tgz?cache=0&sync_timestamp=1623280420500&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-modules-systemjs%2Fdownload%2F%40babel%2Fplugin-transform-modules-systemjs-7.14.5.tgz",
+ "integrity": "sha1-x1NC74sw3N5CldNAGq4k5lY47Sk=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-hoist-variables": "^7.14.5",
+ "@babel/helper-module-transforms": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-validator-identifier": "^7.14.5",
+ "babel-plugin-dynamic-import-node": "^2.3.3"
+ }
+ },
+ "@babel/plugin-transform-modules-umd": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.14.5.tgz?cache=0&sync_timestamp=1623280420892&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-modules-umd%2Fdownload%2F%40babel%2Fplugin-transform-modules-umd-7.14.5.tgz",
+ "integrity": "sha1-+2Yt/uaXzOJ0p82lJRkKeQlqpuA=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.14.7",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.14.7.tgz",
+ "integrity": "sha1-YMBokqz53yMeJWwkRkv+ywkI/U4=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-new-target": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.14.5.tgz?cache=0&sync_timestamp=1623280340922&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-new-target%2Fdownload%2F%40babel%2Fplugin-transform-new-target-7.14.5.tgz",
+ "integrity": "sha1-Mb2ui5JdyEB26/zSqZQBQ67X2/g=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-object-super": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.14.5.tgz?cache=0&sync_timestamp=1623280405923&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-object-super%2Fdownload%2F%40babel%2Fplugin-transform-object-super-7.14.5.tgz",
+ "integrity": "sha1-0LX66snphZehYanPeMUn7ZNM3EU=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-replace-supers": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-parameters": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.14.5.tgz?cache=0&sync_timestamp=1623280341809&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-parameters%2Fdownload%2F%40babel%2Fplugin-transform-parameters-7.14.5.tgz",
+ "integrity": "sha1-SWYuhqHz3cysY2On37H/ChWK/rM=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-property-literals": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-property-literals/download/@babel/plugin-transform-property-literals-7.14.5.tgz?cache=0&sync_timestamp=1623280340973&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-property-literals%2Fdownload%2F%40babel%2Fplugin-transform-property-literals-7.14.5.tgz",
+ "integrity": "sha1-DduqH4PbNgbxzfSEb6HftHNFizQ=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-regenerator": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.14.5.tgz",
+ "integrity": "sha1-lnb9VwftKPUicnxbPAqoVERAsE8=",
+ "dev": true,
+ "requires": {
+ "regenerator-transform": "^0.14.2"
+ }
+ },
+ "@babel/plugin-transform-reserved-words": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-reserved-words/download/@babel/plugin-transform-reserved-words-7.14.5.tgz?cache=0&sync_timestamp=1623280351577&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-reserved-words%2Fdownload%2F%40babel%2Fplugin-transform-reserved-words-7.14.5.tgz",
+ "integrity": "sha1-xEWJtmHP2++NQwDcx0ad/6kvgwQ=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-runtime": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.14.5.tgz",
+ "integrity": "sha1-MEkdrUnGBZ+Pj6XuiJagCJ6YdSM=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "babel-plugin-polyfill-corejs2": "^0.2.2",
+ "babel-plugin-polyfill-corejs3": "^0.2.2",
+ "babel-plugin-polyfill-regenerator": "^0.2.2",
+ "semver": "^6.3.0"
+ }
+ },
+ "@babel/plugin-transform-shorthand-properties": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.14.5.tgz?cache=0&sync_timestamp=1623280351390&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-shorthand-properties%2Fdownload%2F%40babel%2Fplugin-transform-shorthand-properties-7.14.5.tgz",
+ "integrity": "sha1-l/E4VfFAkzjYyty6ymcK154JGlg=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-spread": {
+ "version": "7.14.6",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.14.6.tgz",
+ "integrity": "sha1-a9QOV/596UqpBIUZY7VhZlL3MUQ=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-sticky-regex": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.14.5.tgz?cache=0&sync_timestamp=1623280350911&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-sticky-regex%2Fdownload%2F%40babel%2Fplugin-transform-sticky-regex-7.14.5.tgz",
+ "integrity": "sha1-W2F1Qmdei3dhKUOB88KMYz9Arrk=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-template-literals": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.14.5.tgz?cache=0&sync_timestamp=1623280350943&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-template-literals%2Fdownload%2F%40babel%2Fplugin-transform-template-literals-7.14.5.tgz",
+ "integrity": "sha1-pfK8Izk32EU4hdxza92Nn/q/PZM=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-typeof-symbol": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.14.5.tgz",
+ "integrity": "sha1-Oa8nOemJor0pG/a1PxaYFCPUV9Q=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-unicode-escapes": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-unicode-escapes/download/@babel/plugin-transform-unicode-escapes-7.14.5.tgz?cache=0&sync_timestamp=1623280350966&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fplugin-transform-unicode-escapes%2Fdownload%2F%40babel%2Fplugin-transform-unicode-escapes-7.14.5.tgz",
+ "integrity": "sha1-nUvSpoHjxdes9PV/qeURddkdDGs=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-unicode-regex": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.14.5.tgz",
+ "integrity": "sha1-TNCbbIQl3YElXHzrP7GDbnQUOC4=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/preset-env": {
+ "version": "7.14.7",
+ "resolved": "https://registry.nlark.com/@babel/preset-env/download/@babel/preset-env-7.14.7.tgz",
+ "integrity": "sha1-XHCyLUwtiTsD2MiGpcF0IlArkyo=",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.14.7",
+ "@babel/helper-compilation-targets": "^7.14.5",
+ "@babel/helper-plugin-utils": "^7.14.5",
+ "@babel/helper-validator-option": "^7.14.5",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.14.5",
+ "@babel/plugin-proposal-async-generator-functions": "^7.14.7",
+ "@babel/plugin-proposal-class-properties": "^7.14.5",
+ "@babel/plugin-proposal-class-static-block": "^7.14.5",
+ "@babel/plugin-proposal-dynamic-import": "^7.14.5",
+ "@babel/plugin-proposal-export-namespace-from": "^7.14.5",
+ "@babel/plugin-proposal-json-strings": "^7.14.5",
+ "@babel/plugin-proposal-logical-assignment-operators": "^7.14.5",
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
+ "@babel/plugin-proposal-numeric-separator": "^7.14.5",
+ "@babel/plugin-proposal-object-rest-spread": "^7.14.7",
+ "@babel/plugin-proposal-optional-catch-binding": "^7.14.5",
+ "@babel/plugin-proposal-optional-chaining": "^7.14.5",
+ "@babel/plugin-proposal-private-methods": "^7.14.5",
+ "@babel/plugin-proposal-private-property-in-object": "^7.14.5",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.14.5",
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5",
+ "@babel/plugin-transform-arrow-functions": "^7.14.5",
+ "@babel/plugin-transform-async-to-generator": "^7.14.5",
+ "@babel/plugin-transform-block-scoped-functions": "^7.14.5",
+ "@babel/plugin-transform-block-scoping": "^7.14.5",
+ "@babel/plugin-transform-classes": "^7.14.5",
+ "@babel/plugin-transform-computed-properties": "^7.14.5",
+ "@babel/plugin-transform-destructuring": "^7.14.7",
+ "@babel/plugin-transform-dotall-regex": "^7.14.5",
+ "@babel/plugin-transform-duplicate-keys": "^7.14.5",
+ "@babel/plugin-transform-exponentiation-operator": "^7.14.5",
+ "@babel/plugin-transform-for-of": "^7.14.5",
+ "@babel/plugin-transform-function-name": "^7.14.5",
+ "@babel/plugin-transform-literals": "^7.14.5",
+ "@babel/plugin-transform-member-expression-literals": "^7.14.5",
+ "@babel/plugin-transform-modules-amd": "^7.14.5",
+ "@babel/plugin-transform-modules-commonjs": "^7.14.5",
+ "@babel/plugin-transform-modules-systemjs": "^7.14.5",
+ "@babel/plugin-transform-modules-umd": "^7.14.5",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.14.7",
+ "@babel/plugin-transform-new-target": "^7.14.5",
+ "@babel/plugin-transform-object-super": "^7.14.5",
+ "@babel/plugin-transform-parameters": "^7.14.5",
+ "@babel/plugin-transform-property-literals": "^7.14.5",
+ "@babel/plugin-transform-regenerator": "^7.14.5",
+ "@babel/plugin-transform-reserved-words": "^7.14.5",
+ "@babel/plugin-transform-shorthand-properties": "^7.14.5",
+ "@babel/plugin-transform-spread": "^7.14.6",
+ "@babel/plugin-transform-sticky-regex": "^7.14.5",
+ "@babel/plugin-transform-template-literals": "^7.14.5",
+ "@babel/plugin-transform-typeof-symbol": "^7.14.5",
+ "@babel/plugin-transform-unicode-escapes": "^7.14.5",
+ "@babel/plugin-transform-unicode-regex": "^7.14.5",
+ "@babel/preset-modules": "^0.1.4",
+ "@babel/types": "^7.14.5",
+ "babel-plugin-polyfill-corejs2": "^0.2.2",
+ "babel-plugin-polyfill-corejs3": "^0.2.2",
+ "babel-plugin-polyfill-regenerator": "^0.2.2",
+ "core-js-compat": "^3.15.0",
+ "semver": "^6.3.0"
+ }
+ },
+ "@babel/preset-modules": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npm.taobao.org/@babel/preset-modules/download/@babel/preset-modules-0.1.4.tgz?cache=0&sync_timestamp=1598549925898&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fpreset-modules%2Fdownload%2F%40babel%2Fpreset-modules-0.1.4.tgz",
+ "integrity": "sha1-Ni8raMZihClw/bXiVP/I/BwuQV4=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+ "@babel/plugin-transform-dotall-regex": "^7.4.4",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ }
+ },
+ "@babel/runtime": {
+ "version": "7.14.6",
+ "resolved": "https://registry.nlark.com/@babel/runtime/download/@babel/runtime-7.14.6.tgz?cache=0&sync_timestamp=1623708023742&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fruntime%2Fdownload%2F%40babel%2Fruntime-7.14.6.tgz",
+ "integrity": "sha1-U1IDvAiS78fexgvcJ7Ls9uQJBi0=",
+ "dev": true,
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
+ "@babel/template": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/template/download/@babel/template-7.14.5.tgz",
+ "integrity": "sha1-qbydizM1T/blWpxg0RCSAKaJdPQ=",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.14.5",
+ "@babel/parser": "^7.14.5",
+ "@babel/types": "^7.14.5"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.14.7",
+ "resolved": "https://registry.nlark.com/@babel/traverse/download/@babel/traverse-7.14.7.tgz?cache=0&sync_timestamp=1624312593847&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.14.7.tgz",
+ "integrity": "sha1-ZAB8l3TP3Dq9I7B4C8GKPONjF1M=",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.14.5",
+ "@babel/generator": "^7.14.5",
+ "@babel/helper-function-name": "^7.14.5",
+ "@babel/helper-hoist-variables": "^7.14.5",
+ "@babel/helper-split-export-declaration": "^7.14.5",
+ "@babel/parser": "^7.14.7",
+ "@babel/types": "^7.14.5",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ }
+ },
+ "@babel/types": {
+ "version": "7.14.5",
+ "resolved": "https://registry.nlark.com/@babel/types/download/@babel/types-7.14.5.tgz",
+ "integrity": "sha1-O7mXuoKaIQTO2yBonEpbgSHTg/8=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.14.5",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "@hapi/address": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npm.taobao.org/@hapi/address/download/@hapi/address-2.1.4.tgz?cache=0&sync_timestamp=1603524710662&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Faddress%2Fdownload%2F%40hapi%2Faddress-2.1.4.tgz",
+ "integrity": "sha1-XWftQ/P9QaadS5/3tW58DR0KgeU=",
+ "dev": true
+ },
+ "@hapi/bourne": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npm.taobao.org/@hapi/bourne/download/@hapi/bourne-1.3.2.tgz",
+ "integrity": "sha1-CnCVreoGckPOMoPhtWuKj0U7JCo=",
+ "dev": true
+ },
+ "@hapi/hoek": {
+ "version": "8.5.1",
+ "resolved": "https://registry.npm.taobao.org/@hapi/hoek/download/@hapi/hoek-8.5.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fhoek%2Fdownload%2F%40hapi%2Fhoek-8.5.1.tgz",
+ "integrity": "sha1-/elgZMpEbeyMVajC8TCVewcMbgY=",
+ "dev": true
+ },
+ "@hapi/joi": {
+ "version": "15.1.1",
+ "resolved": "https://registry.npm.taobao.org/@hapi/joi/download/@hapi/joi-15.1.1.tgz",
+ "integrity": "sha1-xnW4pxKW8Cgz+NbSQ7NMV7jOGdc=",
+ "dev": true,
+ "requires": {
+ "@hapi/address": "2.x.x",
+ "@hapi/bourne": "1.x.x",
+ "@hapi/hoek": "8.x.x",
+ "@hapi/topo": "3.x.x"
+ }
+ },
+ "@hapi/topo": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npm.taobao.org/@hapi/topo/download/@hapi/topo-3.1.6.tgz",
+ "integrity": "sha1-aNk1+j6uf91asNf5U/MgXYsr/Ck=",
+ "dev": true,
+ "requires": {
+ "@hapi/hoek": "^8.3.0"
+ }
+ },
+ "@intervolga/optimize-cssnano-plugin": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npm.taobao.org/@intervolga/optimize-cssnano-plugin/download/@intervolga/optimize-cssnano-plugin-1.0.6.tgz",
+ "integrity": "sha1-vnx4RhKLiPapsdEmGgrQbrXA/fg=",
+ "dev": true,
+ "requires": {
+ "cssnano": "^4.0.0",
+ "cssnano-preset-default": "^4.0.0",
+ "postcss": "^7.0.0"
+ }
+ },
+ "@mapbox/jsonlint-lines-primitives": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npm.taobao.org/@mapbox/jsonlint-lines-primitives/download/@mapbox/jsonlint-lines-primitives-2.0.2.tgz",
+ "integrity": "sha1-zlblOfg1UrWNENZy6k1vya3HsjQ="
+ },
+ "@mapbox/mapbox-gl-style-spec": {
+ "version": "13.21.0",
+ "resolved": "https://registry.nlark.com/@mapbox/mapbox-gl-style-spec/download/@mapbox/mapbox-gl-style-spec-13.21.0.tgz",
+ "integrity": "sha1-q3E3KqPxRlQIaFSCRI6dIQmcLG8=",
+ "requires": {
+ "@mapbox/jsonlint-lines-primitives": "~2.0.2",
+ "@mapbox/point-geometry": "^0.1.0",
+ "@mapbox/unitbezier": "^0.0.0",
+ "csscolorparser": "~1.0.2",
+ "json-stringify-pretty-compact": "^2.0.0",
+ "minimist": "^1.2.5",
+ "rw": "^1.3.3",
+ "sort-object": "^0.3.2"
+ }
+ },
+ "@mapbox/point-geometry": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npm.taobao.org/@mapbox/point-geometry/download/@mapbox/point-geometry-0.1.0.tgz",
+ "integrity": "sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI="
+ },
+ "@mapbox/unitbezier": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npm.taobao.org/@mapbox/unitbezier/download/@mapbox/unitbezier-0.0.0.tgz",
+ "integrity": "sha1-FWUb1VOme4WB+zmIEMmK2Go0Uk4="
+ },
+ "@mrmlnc/readdir-enhanced": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npm.taobao.org/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz",
+ "integrity": "sha1-UkryQNGjYFJ7cwR17PoTRKpUDd4=",
+ "dev": true,
+ "requires": {
+ "call-me-maybe": "^1.0.1",
+ "glob-to-regexp": "^0.3.0"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "1.1.3",
+ "resolved": "https://registry.nlark.com/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz?cache=0&sync_timestamp=1622792655362&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40nodelib%2Ffs.stat%2Fdownload%2F%40nodelib%2Ffs.stat-1.1.3.tgz",
+ "integrity": "sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs=",
+ "dev": true
+ },
+ "@soda/friendly-errors-webpack-plugin": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npm.taobao.org/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.8.0.tgz?cache=0&sync_timestamp=1607927398894&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40soda%2Ffriendly-errors-webpack-plugin%2Fdownload%2F%40soda%2Ffriendly-errors-webpack-plugin-1.8.0.tgz",
+ "integrity": "sha1-hHUdgqkwGdXJLAzw5FrFkIfNIkA=",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "error-stack-parser": "^2.0.2",
+ "string-width": "^2.0.0",
+ "strip-ansi": "^5"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz?cache=0&sync_timestamp=1618552489864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz?cache=0&sync_timestamp=1618558751438&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-2.1.1.tgz",
+ "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz",
+ "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz",
+ "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "@soda/get-current-script": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/@soda/get-current-script/download/@soda/get-current-script-1.0.2.tgz",
+ "integrity": "sha1-pTUV2yXYA4N0OBtzryC7Ty5QjYc=",
+ "dev": true
+ },
+ "@types/body-parser": {
+ "version": "1.19.0",
+ "resolved": "https://registry.nlark.com/@types/body-parser/download/@types/body-parser-1.19.0.tgz?cache=0&sync_timestamp=1621240707727&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fbody-parser%2Fdownload%2F%40types%2Fbody-parser-1.19.0.tgz",
+ "integrity": "sha1-BoWzxH6zAG/+0RfN1VFkth+AU48=",
+ "dev": true,
+ "requires": {
+ "@types/connect": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/component-emitter": {
+ "version": "1.2.10",
+ "resolved": "https://registry.nlark.com/@types/component-emitter/download/@types/component-emitter-1.2.10.tgz?cache=0&sync_timestamp=1621240806137&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fcomponent-emitter%2Fdownload%2F%40types%2Fcomponent-emitter-1.2.10.tgz",
+ "integrity": "sha1-71sVibnxZURkLkc9tepWORB+8+o="
+ },
+ "@types/connect": {
+ "version": "3.4.34",
+ "resolved": "https://registry.nlark.com/@types/connect/download/@types/connect-3.4.34.tgz",
+ "integrity": "sha1-FwpAIjptZmAG2TyhKK8r6x2bGQE=",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/connect-history-api-fallback": {
+ "version": "1.3.4",
+ "resolved": "https://registry.nlark.com/@types/connect-history-api-fallback/download/@types/connect-history-api-fallback-1.3.4.tgz",
+ "integrity": "sha1-jA8Obl2CUraZ9aZi9Rvfgv2di7g=",
+ "dev": true,
+ "requires": {
+ "@types/express-serve-static-core": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/express": {
+ "version": "4.17.12",
+ "resolved": "https://registry.nlark.com/@types/express/download/@types/express-4.17.12.tgz?cache=0&sync_timestamp=1621962321814&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fexpress%2Fdownload%2F%40types%2Fexpress-4.17.12.tgz",
+ "integrity": "sha1-S8G/PNDP5tP28oU2SLQNt9VN41A=",
+ "dev": true,
+ "requires": {
+ "@types/body-parser": "*",
+ "@types/express-serve-static-core": "^4.17.18",
+ "@types/qs": "*",
+ "@types/serve-static": "*"
+ }
+ },
+ "@types/express-serve-static-core": {
+ "version": "4.17.21",
+ "resolved": "https://registry.nlark.com/@types/express-serve-static-core/download/@types/express-serve-static-core-4.17.21.tgz?cache=0&sync_timestamp=1622674660452&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fexpress-serve-static-core%2Fdownload%2F%40types%2Fexpress-serve-static-core-4.17.21.tgz",
+ "integrity": "sha1-pCcnjhBryne4OthSIernCaNBTUI=",
+ "dev": true,
+ "requires": {
+ "@types/node": "*",
+ "@types/qs": "*",
+ "@types/range-parser": "*"
+ }
+ },
+ "@types/glob": {
+ "version": "7.1.3",
+ "resolved": "https://registry.nlark.com/@types/glob/download/@types/glob-7.1.3.tgz",
+ "integrity": "sha1-5rqA82t9qtLGhazZJmOC5omFwYM=",
+ "dev": true,
+ "requires": {
+ "@types/minimatch": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/http-proxy": {
+ "version": "1.17.6",
+ "resolved": "https://registry.nlark.com/@types/http-proxy/download/@types/http-proxy-1.17.6.tgz?cache=0&sync_timestamp=1621034446420&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fhttp-proxy%2Fdownload%2F%40types%2Fhttp-proxy-1.17.6.tgz",
+ "integrity": "sha1-Ytw/reIn1qwoYsjxnuDanan9hhY=",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/json-schema": {
+ "version": "7.0.7",
+ "resolved": "https://registry.nlark.com/@types/json-schema/download/@types/json-schema-7.0.7.tgz",
+ "integrity": "sha1-mKmTUWyFnrDVxMjwmDF6nqaNua0=",
+ "dev": true
+ },
+ "@types/mime": {
+ "version": "1.3.2",
+ "resolved": "https://registry.nlark.com/@types/mime/download/@types/mime-1.3.2.tgz",
+ "integrity": "sha1-k+Jb+e51/g/YC1lLxP6w6GIRG1o=",
+ "dev": true
+ },
+ "@types/minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.nlark.com/@types/minimatch/download/@types/minimatch-3.0.4.tgz",
+ "integrity": "sha1-8Owl2/Lw5LGGRzE6wDETTKWySyE=",
+ "dev": true
+ },
+ "@types/minimist": {
+ "version": "1.2.1",
+ "resolved": "https://registry.nlark.com/@types/minimist/download/@types/minimist-1.2.1.tgz",
+ "integrity": "sha1-KD9mn/dte4Jg34q3pCYsyD2YglY=",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "15.12.5",
+ "resolved": "https://registry.nlark.com/@types/node/download/@types/node-15.12.5.tgz?cache=0&sync_timestamp=1624763053899&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-15.12.5.tgz",
+ "integrity": "sha1-mngxikXXXJUj0jlhMb08ylSy0YU=",
+ "dev": true
+ },
+ "@types/normalize-package-data": {
+ "version": "2.4.0",
+ "resolved": "https://registry.nlark.com/@types/normalize-package-data/download/@types/normalize-package-data-2.4.0.tgz?cache=0&sync_timestamp=1621242027779&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fnormalize-package-data%2Fdownload%2F%40types%2Fnormalize-package-data-2.4.0.tgz",
+ "integrity": "sha1-5IbQ2XOW15vu3QpuM/RTT/a0lz4=",
+ "dev": true
+ },
+ "@types/q": {
+ "version": "1.5.4",
+ "resolved": "https://registry.nlark.com/@types/q/download/@types/q-1.5.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fq%2Fdownload%2F%40types%2Fq-1.5.4.tgz",
+ "integrity": "sha1-FZJUFOCtLNdlv+9YhC9+JqesyyQ=",
+ "dev": true
+ },
+ "@types/qs": {
+ "version": "6.9.6",
+ "resolved": "https://registry.nlark.com/@types/qs/download/@types/qs-6.9.6.tgz?cache=0&sync_timestamp=1621242292262&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fqs%2Fdownload%2F%40types%2Fqs-6.9.6.tgz",
+ "integrity": "sha1-35w8izGiR+wxXmmWVmvjFx30s7E=",
+ "dev": true
+ },
+ "@types/range-parser": {
+ "version": "1.2.3",
+ "resolved": "https://registry.nlark.com/@types/range-parser/download/@types/range-parser-1.2.3.tgz?cache=0&sync_timestamp=1621242291785&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Frange-parser%2Fdownload%2F%40types%2Frange-parser-1.2.3.tgz",
+ "integrity": "sha1-fuMwunyq+5gJC+zoal7kQRWQTCw=",
+ "dev": true
+ },
+ "@types/serve-static": {
+ "version": "1.13.9",
+ "resolved": "https://registry.nlark.com/@types/serve-static/download/@types/serve-static-1.13.9.tgz?cache=0&sync_timestamp=1621242704905&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fserve-static%2Fdownload%2F%40types%2Fserve-static-1.13.9.tgz",
+ "integrity": "sha1-qs8oqFoF7imhH7fD6tk1rFbzPk4=",
+ "dev": true,
+ "requires": {
+ "@types/mime": "^1",
+ "@types/node": "*"
+ }
+ },
+ "@types/source-list-map": {
+ "version": "0.1.2",
+ "resolved": "https://registry.nlark.com/@types/source-list-map/download/@types/source-list-map-0.1.2.tgz",
+ "integrity": "sha1-AHiDYGP/rxdBI0m7o2QIfgrALsk=",
+ "dev": true
+ },
+ "@types/tapable": {
+ "version": "1.0.7",
+ "resolved": "https://registry.nlark.com/@types/tapable/download/@types/tapable-1.0.7.tgz?cache=0&sync_timestamp=1621243788434&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Ftapable%2Fdownload%2F%40types%2Ftapable-1.0.7.tgz",
+ "integrity": "sha1-VFFYNC+Uno/Tv9gTIklx7N3D+sQ=",
+ "dev": true
+ },
+ "@types/uglify-js": {
+ "version": "3.13.0",
+ "resolved": "https://registry.nlark.com/@types/uglify-js/download/@types/uglify-js-3.13.0.tgz?cache=0&sync_timestamp=1621243851839&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fuglify-js%2Fdownload%2F%40types%2Fuglify-js-3.13.0.tgz",
+ "integrity": "sha1-HK2N8fsLFDxaugjeVxLqnR/3ESQ=",
+ "dev": true,
+ "requires": {
+ "source-map": "^0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
+ "@types/webpack": {
+ "version": "4.41.29",
+ "resolved": "https://registry.nlark.com/@types/webpack/download/@types/webpack-4.41.29.tgz?cache=0&sync_timestamp=1621533733988&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fwebpack%2Fdownload%2F%40types%2Fwebpack-4.41.29.tgz",
+ "integrity": "sha1-LmbB3oIjxEA2ZGlBXFCkfZdiV3M=",
+ "dev": true,
+ "requires": {
+ "@types/node": "*",
+ "@types/tapable": "^1",
+ "@types/uglify-js": "*",
+ "@types/webpack-sources": "*",
+ "anymatch": "^3.0.0",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
+ "@types/webpack-dev-server": {
+ "version": "3.11.4",
+ "resolved": "https://registry.nlark.com/@types/webpack-dev-server/download/@types/webpack-dev-server-3.11.4.tgz",
+ "integrity": "sha1-kNR91mC2ltQJQxq4wen6NhUQOgc=",
+ "dev": true,
+ "requires": {
+ "@types/connect-history-api-fallback": "*",
+ "@types/express": "*",
+ "@types/serve-static": "*",
+ "@types/webpack": "^4",
+ "http-proxy-middleware": "^1.0.0"
+ }
+ },
+ "@types/webpack-sources": {
+ "version": "2.1.0",
+ "resolved": "https://registry.nlark.com/@types/webpack-sources/download/@types/webpack-sources-2.1.0.tgz?cache=0&sync_timestamp=1621243863278&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fwebpack-sources%2Fdownload%2F%40types%2Fwebpack-sources-2.1.0.tgz",
+ "integrity": "sha1-iIKwvWLR4M5i8YPQ0Bty5ugujBA=",
+ "dev": true,
+ "requires": {
+ "@types/node": "*",
+ "@types/source-list-map": "*",
+ "source-map": "^0.7.3"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.7.3.tgz",
+ "integrity": "sha1-UwL4FpAxc1ImVECS5kmB91F1A4M=",
+ "dev": true
+ }
+ }
+ },
+ "@vue/babel-helper-vue-jsx-merge-props": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npm.taobao.org/@vue/babel-helper-vue-jsx-merge-props/download/@vue/babel-helper-vue-jsx-merge-props-1.2.1.tgz",
+ "integrity": "sha1-MWJKelBfsU2h1YAjclpMXycOaoE=",
+ "dev": true
+ },
+ "@vue/babel-helper-vue-transform-on": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/@vue/babel-helper-vue-transform-on/download/@vue/babel-helper-vue-transform-on-1.0.2.tgz?cache=0&sync_timestamp=1610812601037&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-helper-vue-transform-on%2Fdownload%2F%40vue%2Fbabel-helper-vue-transform-on-1.0.2.tgz",
+ "integrity": "sha1-m5xpHNBvyFUiGiR1w8yDHXdLx9w=",
+ "dev": true
+ },
+ "@vue/babel-plugin-jsx": {
+ "version": "1.0.6",
+ "resolved": "https://registry.nlark.com/@vue/babel-plugin-jsx/download/@vue/babel-plugin-jsx-1.0.6.tgz",
+ "integrity": "sha1-GEvzVBq279vlB5q4sgwZ4q8QC/s=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.0.0",
+ "@babel/template": "^7.0.0",
+ "@babel/traverse": "^7.0.0",
+ "@babel/types": "^7.0.0",
+ "@vue/babel-helper-vue-transform-on": "^1.0.2",
+ "camelcase": "^6.0.0",
+ "html-tags": "^3.1.0",
+ "svg-tags": "^1.0.0"
+ }
+ },
+ "@vue/babel-plugin-transform-vue-jsx": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npm.taobao.org/@vue/babel-plugin-transform-vue-jsx/download/@vue/babel-plugin-transform-vue-jsx-1.2.1.tgz?cache=0&sync_timestamp=1602851234609&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-plugin-transform-vue-jsx%2Fdownload%2F%40vue%2Fbabel-plugin-transform-vue-jsx-1.2.1.tgz",
+ "integrity": "sha1-ZGBGxlLC8CQnJ/NFGdkXsGQEHtc=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.2.0",
+ "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
+ "html-tags": "^2.0.0",
+ "lodash.kebabcase": "^4.1.1",
+ "svg-tags": "^1.0.0"
+ },
+ "dependencies": {
+ "html-tags": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz",
+ "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=",
+ "dev": true
+ }
+ }
+ },
+ "@vue/babel-preset-app": {
+ "version": "4.5.13",
+ "resolved": "https://registry.nlark.com/@vue/babel-preset-app/download/@vue/babel-preset-app-4.5.13.tgz",
+ "integrity": "sha1-y0dTIeTHP38RDawppIwqnLgK/rY=",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.11.0",
+ "@babel/helper-compilation-targets": "^7.9.6",
+ "@babel/helper-module-imports": "^7.8.3",
+ "@babel/plugin-proposal-class-properties": "^7.8.3",
+ "@babel/plugin-proposal-decorators": "^7.8.3",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-jsx": "^7.8.3",
+ "@babel/plugin-transform-runtime": "^7.11.0",
+ "@babel/preset-env": "^7.11.0",
+ "@babel/runtime": "^7.11.0",
+ "@vue/babel-plugin-jsx": "^1.0.3",
+ "@vue/babel-preset-jsx": "^1.2.4",
+ "babel-plugin-dynamic-import-node": "^2.3.3",
+ "core-js": "^3.6.5",
+ "core-js-compat": "^3.6.5",
+ "semver": "^6.1.0"
+ }
+ },
+ "@vue/babel-preset-jsx": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npm.taobao.org/@vue/babel-preset-jsx/download/@vue/babel-preset-jsx-1.2.4.tgz?cache=0&sync_timestamp=1603806993853&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-preset-jsx%2Fdownload%2F%40vue%2Fbabel-preset-jsx-1.2.4.tgz",
+ "integrity": "sha1-kv6nnbbxOwHoDToAmeKSS9y+Toc=",
+ "dev": true,
+ "requires": {
+ "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
+ "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+ "@vue/babel-sugar-composition-api-inject-h": "^1.2.1",
+ "@vue/babel-sugar-composition-api-render-instance": "^1.2.4",
+ "@vue/babel-sugar-functional-vue": "^1.2.2",
+ "@vue/babel-sugar-inject-h": "^1.2.2",
+ "@vue/babel-sugar-v-model": "^1.2.3",
+ "@vue/babel-sugar-v-on": "^1.2.3"
+ }
+ },
+ "@vue/babel-sugar-composition-api-inject-h": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-composition-api-inject-h/download/@vue/babel-sugar-composition-api-inject-h-1.2.1.tgz?cache=0&sync_timestamp=1602851126644&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-composition-api-inject-h%2Fdownload%2F%40vue%2Fbabel-sugar-composition-api-inject-h-1.2.1.tgz",
+ "integrity": "sha1-BdbgxDJxDjdYKyvppgSbaJtvA+s=",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@vue/babel-sugar-composition-api-render-instance": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-composition-api-render-instance/download/@vue/babel-sugar-composition-api-render-instance-1.2.4.tgz?cache=0&sync_timestamp=1603806995958&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-composition-api-render-instance%2Fdownload%2F%40vue%2Fbabel-sugar-composition-api-render-instance-1.2.4.tgz",
+ "integrity": "sha1-5MvGmXw0T6wnF4WteikyXFHWjRk=",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@vue/babel-sugar-functional-vue": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-functional-vue/download/@vue/babel-sugar-functional-vue-1.2.2.tgz?cache=0&sync_timestamp=1602929516892&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-functional-vue%2Fdownload%2F%40vue%2Fbabel-sugar-functional-vue-1.2.2.tgz",
+ "integrity": "sha1-JnqayNeHyW7b8Dzj85LEnam9Jlg=",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@vue/babel-sugar-inject-h": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-inject-h/download/@vue/babel-sugar-inject-h-1.2.2.tgz?cache=0&sync_timestamp=1602929885089&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-inject-h%2Fdownload%2F%40vue%2Fbabel-sugar-inject-h-1.2.2.tgz",
+ "integrity": "sha1-1zjTyJM2fshJHcu2abAAkZKT46o=",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@vue/babel-sugar-v-model": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-model/download/@vue/babel-sugar-v-model-1.2.3.tgz?cache=0&sync_timestamp=1603184347642&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-v-model%2Fdownload%2F%40vue%2Fbabel-sugar-v-model-1.2.3.tgz",
+ "integrity": "sha1-+h8pulHr8KoabDX6ZtU5vEWaGPI=",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0",
+ "@vue/babel-helper-vue-jsx-merge-props": "^1.2.1",
+ "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+ "camelcase": "^5.0.0",
+ "html-tags": "^2.0.0",
+ "svg-tags": "^1.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz?cache=0&sync_timestamp=1603921884289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-5.3.1.tgz",
+ "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
+ "dev": true
+ },
+ "html-tags": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz",
+ "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=",
+ "dev": true
+ }
+ }
+ },
+ "@vue/babel-sugar-v-on": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npm.taobao.org/@vue/babel-sugar-v-on/download/@vue/babel-sugar-v-on-1.2.3.tgz?cache=0&sync_timestamp=1603181896860&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-sugar-v-on%2Fdownload%2F%40vue%2Fbabel-sugar-v-on-1.2.3.tgz",
+ "integrity": "sha1-NCNnF4WGpp85LwS/ujICHQKROto=",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0",
+ "@vue/babel-plugin-transform-vue-jsx": "^1.2.1",
+ "camelcase": "^5.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz?cache=0&sync_timestamp=1603921884289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-5.3.1.tgz",
+ "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
+ "dev": true
+ }
+ }
+ },
+ "@vue/cli-overlay": {
+ "version": "4.5.13",
+ "resolved": "https://registry.nlark.com/@vue/cli-overlay/download/@vue/cli-overlay-4.5.13.tgz",
+ "integrity": "sha1-Tx/SFhvo9p1suoB58/DX3E3uR6c=",
+ "dev": true
+ },
+ "@vue/cli-plugin-babel": {
+ "version": "4.5.13",
+ "resolved": "https://registry.nlark.com/@vue/cli-plugin-babel/download/@vue/cli-plugin-babel-4.5.13.tgz",
+ "integrity": "sha1-qJxILtzE6h0TVkXOxQKn9f1MMOc=",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.11.0",
+ "@vue/babel-preset-app": "^4.5.13",
+ "@vue/cli-shared-utils": "^4.5.13",
+ "babel-loader": "^8.1.0",
+ "cache-loader": "^4.1.0",
+ "thread-loader": "^2.1.3",
+ "webpack": "^4.0.0"
+ }
+ },
+ "@vue/cli-plugin-eslint": {
+ "version": "4.5.13",
+ "resolved": "https://registry.nlark.com/@vue/cli-plugin-eslint/download/@vue/cli-plugin-eslint-4.5.13.tgz",
+ "integrity": "sha1-i68i0NltdnIMdQZka5b09iwFvfo=",
+ "dev": true,
+ "requires": {
+ "@vue/cli-shared-utils": "^4.5.13",
+ "eslint-loader": "^2.2.1",
+ "globby": "^9.2.0",
+ "inquirer": "^7.1.0",
+ "webpack": "^4.0.0",
+ "yorkie": "^2.0.0"
+ }
+ },
+ "@vue/cli-plugin-router": {
+ "version": "4.5.13",
+ "resolved": "https://registry.nlark.com/@vue/cli-plugin-router/download/@vue/cli-plugin-router-4.5.13.tgz?cache=0&sync_timestamp=1623215974449&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40vue%2Fcli-plugin-router%2Fdownload%2F%40vue%2Fcli-plugin-router-4.5.13.tgz",
+ "integrity": "sha1-C2fIiYor8TKUGRmiouXzqsvZ/74=",
+ "dev": true,
+ "requires": {
+ "@vue/cli-shared-utils": "^4.5.13"
+ }
+ },
+ "@vue/cli-plugin-vuex": {
+ "version": "4.5.13",
+ "resolved": "https://registry.nlark.com/@vue/cli-plugin-vuex/download/@vue/cli-plugin-vuex-4.5.13.tgz",
+ "integrity": "sha1-mGRti8HmnPbGpsui/tPqzgNWw2A=",
+ "dev": true
+ },
+ "@vue/cli-service": {
+ "version": "4.5.13",
+ "resolved": "https://registry.nlark.com/@vue/cli-service/download/@vue/cli-service-4.5.13.tgz",
+ "integrity": "sha1-oJ5oSoAWhLbiTlQUrTBlCXDuye0=",
+ "dev": true,
+ "requires": {
+ "@intervolga/optimize-cssnano-plugin": "^1.0.5",
+ "@soda/friendly-errors-webpack-plugin": "^1.7.1",
+ "@soda/get-current-script": "^1.0.0",
+ "@types/minimist": "^1.2.0",
+ "@types/webpack": "^4.0.0",
+ "@types/webpack-dev-server": "^3.11.0",
+ "@vue/cli-overlay": "^4.5.13",
+ "@vue/cli-plugin-router": "^4.5.13",
+ "@vue/cli-plugin-vuex": "^4.5.13",
+ "@vue/cli-shared-utils": "^4.5.13",
+ "@vue/component-compiler-utils": "^3.1.2",
+ "@vue/preload-webpack-plugin": "^1.1.0",
+ "@vue/web-component-wrapper": "^1.2.0",
+ "acorn": "^7.4.0",
+ "acorn-walk": "^7.1.1",
+ "address": "^1.1.2",
+ "autoprefixer": "^9.8.6",
+ "browserslist": "^4.12.0",
+ "cache-loader": "^4.1.0",
+ "case-sensitive-paths-webpack-plugin": "^2.3.0",
+ "cli-highlight": "^2.1.4",
+ "clipboardy": "^2.3.0",
+ "cliui": "^6.0.0",
+ "copy-webpack-plugin": "^5.1.1",
+ "css-loader": "^3.5.3",
+ "cssnano": "^4.1.10",
+ "debug": "^4.1.1",
+ "default-gateway": "^5.0.5",
+ "dotenv": "^8.2.0",
+ "dotenv-expand": "^5.1.0",
+ "file-loader": "^4.2.0",
+ "fs-extra": "^7.0.1",
+ "globby": "^9.2.0",
+ "hash-sum": "^2.0.0",
+ "html-webpack-plugin": "^3.2.0",
+ "launch-editor-middleware": "^2.2.1",
+ "lodash.defaultsdeep": "^4.6.1",
+ "lodash.mapvalues": "^4.6.0",
+ "lodash.transform": "^4.6.0",
+ "mini-css-extract-plugin": "^0.9.0",
+ "minimist": "^1.2.5",
+ "pnp-webpack-plugin": "^1.6.4",
+ "portfinder": "^1.0.26",
+ "postcss-loader": "^3.0.0",
+ "ssri": "^8.0.1",
+ "terser-webpack-plugin": "^1.4.4",
+ "thread-loader": "^2.1.3",
+ "url-loader": "^2.2.0",
+ "vue-loader": "^15.9.2",
+ "vue-loader-v16": "npm:vue-loader@^16.1.0",
+ "vue-style-loader": "^4.1.2",
+ "webpack": "^4.0.0",
+ "webpack-bundle-analyzer": "^3.8.0",
+ "webpack-chain": "^6.4.0",
+ "webpack-dev-server": "^3.11.0",
+ "webpack-merge": "^4.2.2"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.nlark.com/acorn/download/acorn-7.4.1.tgz",
+ "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1618995778321&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
+ "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.1",
+ "resolved": "https://registry.nlark.com/chalk/download/chalk-4.1.1.tgz?cache=0&sync_timestamp=1618995355917&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.1.tgz",
+ "integrity": "sha1-yAs/qyi/Y3HmhjMl7uZ+YYt35q0=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
+ "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
+ "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
+ "dev": true,
+ "optional": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.nlark.com/has-flag/download/has-flag-4.0.0.tgz?cache=0&sync_timestamp=1618847009337&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhas-flag%2Fdownload%2Fhas-flag-4.0.0.tgz",
+ "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
+ "dev": true,
+ "optional": true
+ },
+ "loader-utils": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz",
+ "integrity": "sha1-5MrOW4FtQloWa18JfhDNErNgZLA=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ }
+ },
+ "ssri": {
+ "version": "8.0.1",
+ "resolved": "https://registry.nlark.com/ssri/download/ssri-8.0.1.tgz?cache=0&sync_timestamp=1621364668574&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fssri%2Fdownload%2Fssri-8.0.1.tgz",
+ "integrity": "sha1-Y45OQ54v+9LNKJd21cpFfE9Roq8=",
+ "dev": true,
+ "requires": {
+ "minipass": "^3.1.1"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.nlark.com/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1622293579301&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz",
+ "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "vue-loader-v16": {
+ "version": "npm:vue-loader@16.3.0",
+ "resolved": "https://registry.nlark.com/vue-loader/download/vue-loader-16.3.0.tgz",
+ "integrity": "sha1-LxleS6D7DiY1ltaDDfF9Gjbok2w=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chalk": "^4.1.0",
+ "hash-sum": "^2.0.0",
+ "loader-utils": "^2.0.0"
+ }
+ }
+ }
+ },
+ "@vue/cli-shared-utils": {
+ "version": "4.5.13",
+ "resolved": "https://registry.nlark.com/@vue/cli-shared-utils/download/@vue/cli-shared-utils-4.5.13.tgz",
+ "integrity": "sha1-rNQPMbR5DxY0KSvapfypXcHg/1A=",
+ "dev": true,
+ "requires": {
+ "@hapi/joi": "^15.0.1",
+ "chalk": "^2.4.2",
+ "execa": "^1.0.0",
+ "launch-editor": "^2.2.1",
+ "lru-cache": "^5.1.1",
+ "node-ipc": "^9.1.1",
+ "open": "^6.3.0",
+ "ora": "^3.4.0",
+ "read-pkg": "^5.1.1",
+ "request": "^2.88.2",
+ "semver": "^6.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "@vue/component-compiler-utils": {
+ "version": "3.2.2",
+ "resolved": "https://registry.nlark.com/@vue/component-compiler-utils/download/@vue/component-compiler-utils-3.2.2.tgz?cache=0&sync_timestamp=1623744193009&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40vue%2Fcomponent-compiler-utils%2Fdownload%2F%40vue%2Fcomponent-compiler-utils-3.2.2.tgz",
+ "integrity": "sha1-L37V/u2C/38ChKzBHVJe5+/yJGA=",
+ "dev": true,
+ "requires": {
+ "consolidate": "^0.15.1",
+ "hash-sum": "^1.0.2",
+ "lru-cache": "^4.1.2",
+ "merge-source-map": "^1.1.0",
+ "postcss": "^7.0.36",
+ "postcss-selector-parser": "^6.0.2",
+ "prettier": "^1.18.2",
+ "source-map": "~0.6.1",
+ "vue-template-es2015-compiler": "^1.9.0"
+ },
+ "dependencies": {
+ "hash-sum": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz",
+ "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz",
+ "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "prettier": {
+ "version": "1.19.1",
+ "resolved": "https://registry.nlark.com/prettier/download/prettier-1.19.1.tgz",
+ "integrity": "sha1-99f1/4qc2HKnvkyhQglZVqYHl8s=",
+ "dev": true,
+ "optional": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ }
+ }
+ },
+ "@vue/eslint-config-prettier": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npm.taobao.org/@vue/eslint-config-prettier/download/@vue/eslint-config-prettier-6.0.0.tgz",
+ "integrity": "sha1-rVkSswj0rkaEWOAqKwXbC50kZwA=",
+ "dev": true,
+ "requires": {
+ "eslint-config-prettier": "^6.0.0"
+ }
+ },
+ "@vue/preload-webpack-plugin": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npm.taobao.org/@vue/preload-webpack-plugin/download/@vue/preload-webpack-plugin-1.1.2.tgz?cache=0&sync_timestamp=1613215046917&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fpreload-webpack-plugin%2Fdownload%2F%40vue%2Fpreload-webpack-plugin-1.1.2.tgz",
+ "integrity": "sha1-zrkktOyzucQ4ccekKaAvhCPmIas=",
+ "dev": true
+ },
+ "@vue/web-component-wrapper": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npm.taobao.org/@vue/web-component-wrapper/download/@vue/web-component-wrapper-1.3.0.tgz?cache=0&sync_timestamp=1613216636926&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fweb-component-wrapper%2Fdownload%2F%40vue%2Fweb-component-wrapper-1.3.0.tgz",
+ "integrity": "sha1-trQKdiVCnSvXwigd26YB7QXcfxo=",
+ "dev": true
+ },
+ "@webassemblyjs/ast": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ast/download/@webassemblyjs/ast-1.9.0.tgz?cache=0&sync_timestamp=1610041386122&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fast%2Fdownload%2F%40webassemblyjs%2Fast-1.9.0.tgz",
+ "integrity": "sha1-vYUGBLQEJFmlpBzX0zjL7Wle2WQ=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/helper-module-context": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/wast-parser": "1.9.0"
+ }
+ },
+ "@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/floating-point-hex-parser/download/@webassemblyjs/floating-point-hex-parser-1.9.0.tgz?cache=0&sync_timestamp=1610041384204&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Ffloating-point-hex-parser%2Fdownload%2F%40webassemblyjs%2Ffloating-point-hex-parser-1.9.0.tgz",
+ "integrity": "sha1-PD07Jxvd/ITesA9xNEQ4MR1S/7Q=",
+ "dev": true
+ },
+ "@webassemblyjs/helper-api-error": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.9.0.tgz?cache=0&sync_timestamp=1610041385672&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-api-error%2Fdownload%2F%40webassemblyjs%2Fhelper-api-error-1.9.0.tgz",
+ "integrity": "sha1-ID9nbjM7lsnaLuqzzO8zxFkotqI=",
+ "dev": true
+ },
+ "@webassemblyjs/helper-buffer": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-buffer/download/@webassemblyjs/helper-buffer-1.9.0.tgz?cache=0&sync_timestamp=1610041385156&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-buffer%2Fdownload%2F%40webassemblyjs%2Fhelper-buffer-1.9.0.tgz",
+ "integrity": "sha1-oUQtJpxf6yP8vJ73WdrDVH8p3gA=",
+ "dev": true
+ },
+ "@webassemblyjs/helper-code-frame": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-code-frame/download/@webassemblyjs/helper-code-frame-1.9.0.tgz?cache=0&sync_timestamp=1610045502739&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-code-frame%2Fdownload%2F%40webassemblyjs%2Fhelper-code-frame-1.9.0.tgz",
+ "integrity": "sha1-ZH+Iks0gQ6gqwMjF51w28dkVnyc=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/wast-printer": "1.9.0"
+ }
+ },
+ "@webassemblyjs/helper-fsm": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-fsm/download/@webassemblyjs/helper-fsm-1.9.0.tgz?cache=0&sync_timestamp=1610045497114&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-fsm%2Fdownload%2F%40webassemblyjs%2Fhelper-fsm-1.9.0.tgz",
+ "integrity": "sha1-wFJWtxJEIUZx9LCOwQitY7cO3bg=",
+ "dev": true
+ },
+ "@webassemblyjs/helper-module-context": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-module-context/download/@webassemblyjs/helper-module-context-1.9.0.tgz",
+ "integrity": "sha1-JdiIS3aDmHGgimxvgGw5ee9xLwc=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0"
+ }
+ },
+ "@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-bytecode/download/@webassemblyjs/helper-wasm-bytecode-1.9.0.tgz?cache=0&sync_timestamp=1610041385277&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-wasm-bytecode%2Fdownload%2F%40webassemblyjs%2Fhelper-wasm-bytecode-1.9.0.tgz",
+ "integrity": "sha1-T+2L6sm4wU+MWLcNEk1UndH+V5A=",
+ "dev": true
+ },
+ "@webassemblyjs/helper-wasm-section": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.9.0.tgz?cache=0&sync_timestamp=1610041387398&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fhelper-wasm-section%2Fdownload%2F%40webassemblyjs%2Fhelper-wasm-section-1.9.0.tgz",
+ "integrity": "sha1-WkE41aYpK6GLBMWuSXF+QWeWU0Y=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-buffer": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/wasm-gen": "1.9.0"
+ }
+ },
+ "@webassemblyjs/ieee754": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.9.0.tgz?cache=0&sync_timestamp=1610041385781&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fieee754%2Fdownload%2F%40webassemblyjs%2Fieee754-1.9.0.tgz",
+ "integrity": "sha1-Fceg+6roP7JhQ7us9tbfFwKtOeQ=",
+ "dev": true,
+ "requires": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "@webassemblyjs/leb128": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.9.0.tgz?cache=0&sync_timestamp=1610041385570&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fleb128%2Fdownload%2F%40webassemblyjs%2Fleb128-1.9.0.tgz",
+ "integrity": "sha1-8Zygt2ptxVYjoJz/p2noOPoeHJU=",
+ "dev": true,
+ "requires": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/utf8": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/utf8/download/@webassemblyjs/utf8-1.9.0.tgz?cache=0&sync_timestamp=1610045498791&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Futf8%2Fdownload%2F%40webassemblyjs%2Futf8-1.9.0.tgz",
+ "integrity": "sha1-BNM7Y2945qaBMifoJAL3Y3tiKas=",
+ "dev": true
+ },
+ "@webassemblyjs/wasm-edit": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.9.0.tgz?cache=0&sync_timestamp=1610041387713&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-edit%2Fdownload%2F%40webassemblyjs%2Fwasm-edit-1.9.0.tgz",
+ "integrity": "sha1-P+bXnT8PkiGDqoYALELdJWz+6c8=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-buffer": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/helper-wasm-section": "1.9.0",
+ "@webassemblyjs/wasm-gen": "1.9.0",
+ "@webassemblyjs/wasm-opt": "1.9.0",
+ "@webassemblyjs/wasm-parser": "1.9.0",
+ "@webassemblyjs/wast-printer": "1.9.0"
+ }
+ },
+ "@webassemblyjs/wasm-gen": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.9.0.tgz?cache=0&sync_timestamp=1610041387011&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-gen%2Fdownload%2F%40webassemblyjs%2Fwasm-gen-1.9.0.tgz",
+ "integrity": "sha1-ULxw7Gje2OJ2OwGhQYv0NJGnpJw=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/ieee754": "1.9.0",
+ "@webassemblyjs/leb128": "1.9.0",
+ "@webassemblyjs/utf8": "1.9.0"
+ }
+ },
+ "@webassemblyjs/wasm-opt": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-opt/download/@webassemblyjs/wasm-opt-1.9.0.tgz?cache=0&sync_timestamp=1610041387249&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-opt%2Fdownload%2F%40webassemblyjs%2Fwasm-opt-1.9.0.tgz",
+ "integrity": "sha1-IhEYHlsxMmRDzIES658LkChyGmE=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-buffer": "1.9.0",
+ "@webassemblyjs/wasm-gen": "1.9.0",
+ "@webassemblyjs/wasm-parser": "1.9.0"
+ }
+ },
+ "@webassemblyjs/wasm-parser": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wasm-parser/download/@webassemblyjs/wasm-parser-1.9.0.tgz?cache=0&sync_timestamp=1610045501288&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwasm-parser%2Fdownload%2F%40webassemblyjs%2Fwasm-parser-1.9.0.tgz",
+ "integrity": "sha1-nUjkSCbfSmWYKUqmyHRp1kL/9l4=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-api-error": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/ieee754": "1.9.0",
+ "@webassemblyjs/leb128": "1.9.0",
+ "@webassemblyjs/utf8": "1.9.0"
+ }
+ },
+ "@webassemblyjs/wast-parser": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-parser/download/@webassemblyjs/wast-parser-1.9.0.tgz?cache=0&sync_timestamp=1610041387557&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwast-parser%2Fdownload%2F%40webassemblyjs%2Fwast-parser-1.9.0.tgz",
+ "integrity": "sha1-MDERXXmsW9JhVWzsw/qQo+9FGRQ=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/floating-point-hex-parser": "1.9.0",
+ "@webassemblyjs/helper-api-error": "1.9.0",
+ "@webassemblyjs/helper-code-frame": "1.9.0",
+ "@webassemblyjs/helper-fsm": "1.9.0",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/wast-printer": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npm.taobao.org/@webassemblyjs/wast-printer/download/@webassemblyjs/wast-printer-1.9.0.tgz?cache=0&sync_timestamp=1610041386456&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40webassemblyjs%2Fwast-printer%2Fdownload%2F%40webassemblyjs%2Fwast-printer-1.9.0.tgz",
+ "integrity": "sha1-STXVTIX+9jewDOn1I3dFHQDUeJk=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/wast-parser": "1.9.0",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/@xtuc/ieee754/download/@xtuc/ieee754-1.2.0.tgz",
+ "integrity": "sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=",
+ "dev": true
+ },
+ "@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npm.taobao.org/@xtuc/long/download/@xtuc/long-4.2.2.tgz",
+ "integrity": "sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=",
+ "dev": true
+ },
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz",
+ "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=",
+ "dev": true
+ },
+ "accepts": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz",
+ "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=",
+ "dev": true,
+ "requires": {
+ "mime-types": "~2.1.24",
+ "negotiator": "0.6.2"
+ }
+ },
+ "acorn": {
+ "version": "6.4.2",
+ "resolved": "https://registry.nlark.com/acorn/download/acorn-6.4.2.tgz",
+ "integrity": "sha1-NYZv1xBSjpLeEM8GAWSY5H454eY=",
+ "dev": true
+ },
+ "acorn-jsx": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.3.1.tgz?cache=0&sync_timestamp=1599546317194&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-jsx%2Fdownload%2Facorn-jsx-5.3.1.tgz",
+ "integrity": "sha1-/IZh4Rt6wVOcR9v+oucrOvNNJns=",
+ "dev": true
+ },
+ "acorn-walk": {
+ "version": "7.2.0",
+ "resolved": "https://registry.nlark.com/acorn-walk/download/acorn-walk-7.2.0.tgz",
+ "integrity": "sha1-DeiJpgEgOQmw++B7iTjcIdLpZ7w=",
+ "dev": true
+ },
+ "address": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npm.taobao.org/address/download/address-1.1.2.tgz?cache=0&sync_timestamp=1593529661616&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faddress%2Fdownload%2Faddress-1.1.2.tgz",
+ "integrity": "sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY=",
+ "dev": true
+ },
+ "aes-decrypter": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/aes-decrypter/download/aes-decrypter-1.0.3.tgz",
+ "integrity": "sha1-nAa4pUNaWtCduTP4oBSvzxhMw04=",
+ "requires": {
+ "pkcs7": "^0.2.3"
+ }
+ },
+ "after": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npm.taobao.org/after/download/after-0.8.2.tgz",
+ "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8="
+ },
+ "ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.nlark.com/ajv/download/ajv-6.12.6.tgz?cache=0&sync_timestamp=1622991493844&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fajv%2Fdownload%2Fajv-6.12.6.tgz",
+ "integrity": "sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-errors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/ajv-errors/download/ajv-errors-1.0.1.tgz?cache=0&sync_timestamp=1616886041666&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-errors%2Fdownload%2Fajv-errors-1.0.1.tgz",
+ "integrity": "sha1-81mGrOuRr63sQQL72FAUlQzvpk0=",
+ "dev": true
+ },
+ "ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.5.2.tgz?cache=0&sync_timestamp=1616882441894&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fajv-keywords%2Fdownload%2Fajv-keywords-3.5.2.tgz",
+ "integrity": "sha1-MfKdpatuANHC0yms97WSlhTVAU0=",
+ "dev": true
+ },
+ "align-text": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npm.taobao.org/align-text/download/align-text-0.1.4.tgz",
+ "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+ "requires": {
+ "kind-of": "^3.0.2",
+ "longest": "^1.0.1",
+ "repeat-string": "^1.5.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "alphanum-sort": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/alphanum-sort/download/alphanum-sort-1.0.2.tgz",
+ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
+ "dev": true
+ },
+ "alter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npm.taobao.org/alter/download/alter-0.2.0.tgz",
+ "integrity": "sha1-x1iICGF1cgNKrmJICvJrHU0cs80=",
+ "requires": {
+ "stable": "~0.1.3"
+ }
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/amdefine/download/amdefine-1.0.1.tgz",
+ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
+ },
+ "ansi-colors": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-3.2.4.tgz?cache=0&sync_timestamp=1593529711167&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-colors%2Fdownload%2Fansi-colors-3.2.4.tgz",
+ "integrity": "sha1-46PaS/uubIapwoViXeEkojQCb78=",
+ "dev": true
+ },
+ "ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-4.3.2.tgz?cache=0&sync_timestamp=1618723498592&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-escapes%2Fdownload%2Fansi-escapes-4.3.2.tgz",
+ "integrity": "sha1-ayKR0dt9mLZSHV8e+kLQ86n+tl4=",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.21.3"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.nlark.com/type-fest/download/type-fest-0.21.3.tgz?cache=0&sync_timestamp=1623872995368&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftype-fest%2Fdownload%2Ftype-fest-0.21.3.tgz",
+ "integrity": "sha1-0mCiSwGYQ24TP6JqUkptZfo7Ljc=",
+ "dev": true
+ }
+ }
+ },
+ "ansi-gray": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npm.taobao.org/ansi-gray/download/ansi-gray-0.1.1.tgz",
+ "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=",
+ "requires": {
+ "ansi-wrap": "0.1.0"
+ }
+ },
+ "ansi-html": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npm.taobao.org/ansi-html/download/ansi-html-0.0.7.tgz",
+ "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz",
+ "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-3.2.1.tgz",
+ "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "ansi-wrap": {
+ "version": "0.1.0",
+ "resolved": "https://registry.nlark.com/ansi-wrap/download/ansi-wrap-0.1.0.tgz",
+ "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768="
+ },
+ "any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz",
+ "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-3.1.2.tgz",
+ "integrity": "sha1-wFV8CWrzLxBhmPT04qODU343hxY=",
+ "dev": true,
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz",
+ "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=",
+ "dev": true
+ },
+ "arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npm.taobao.org/arch/download/arch-2.2.0.tgz",
+ "integrity": "sha1-G8R4GPMFdk8jqzMGsL/AhsWinRE=",
+ "dev": true
+ },
+ "archy": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/archy/download/archy-1.0.0.tgz",
+ "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA="
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npm.taobao.org/are-we-there-yet/download/are-we-there-yet-1.1.5.tgz",
+ "integrity": "sha1-SzXClE8GKov82mZBB2A1D+nd/CE=",
+ "dev": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz?cache=0&sync_timestamp=1598649397806&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fargparse%2Fdownload%2Fargparse-1.0.10.tgz",
+ "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz",
+ "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE="
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ="
+ },
+ "array-differ": {
+ "version": "1.0.0",
+ "resolved": "https://registry.nlark.com/array-differ/download/array-differ-1.0.0.tgz",
+ "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE="
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/array-find-index/download/array-find-index-1.0.2.tgz",
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+ "dev": true
+ },
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz",
+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+ "dev": true
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz",
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+ "dev": true,
+ "requires": {
+ "array-uniq": "^1.0.1"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.nlark.com/array-uniq/download/array-uniq-1.0.3.tgz?cache=0&sync_timestamp=1620042045402&other_urls=https%3A%2F%2Fregistry.nlark.com%2Farray-uniq%2Fdownload%2Farray-uniq-1.0.3.tgz",
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "arraybuffer.slice": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npm.taobao.org/arraybuffer.slice/download/arraybuffer.slice-0.0.7.tgz",
+ "integrity": "sha1-O7xCdd1YTMGxCAm4nU6LY6aednU="
+ },
+ "asn1": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz",
+ "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=",
+ "dev": true,
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "asn1.js": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npm.taobao.org/asn1.js/download/asn1.js-5.4.1.tgz",
+ "integrity": "sha1-EamAuE67kXgc41sP3C7ilON4Pwc=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "safer-buffer": "^2.1.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz",
+ "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=",
+ "dev": true
+ }
+ }
+ },
+ "assert": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npm.taobao.org/assert/download/assert-1.5.0.tgz",
+ "integrity": "sha1-VcEJqvbgrv2z3EtxJAxwv1dLGOs=",
+ "requires": {
+ "object-assign": "^4.1.1",
+ "util": "0.10.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.nlark.com/util/download/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "requires": {
+ "inherits": "2.0.1"
+ }
+ }
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+ "dev": true
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c="
+ },
+ "ast-traverse": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npm.taobao.org/ast-traverse/download/ast-traverse-0.1.1.tgz",
+ "integrity": "sha1-ac8rg4bxnc2hux4F1o/jWdiJfeY="
+ },
+ "ast-types": {
+ "version": "0.9.6",
+ "resolved": "https://registry.npm.taobao.org/ast-types/download/ast-types-0.9.6.tgz?cache=0&sync_timestamp=1599935882818&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fast-types%2Fdownload%2Fast-types-0.9.6.tgz",
+ "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk="
+ },
+ "astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz",
+ "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=",
+ "dev": true
+ },
+ "async": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npm.taobao.org/async/download/async-2.6.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync%2Fdownload%2Fasync-2.6.3.tgz",
+ "integrity": "sha1-1yYl4jRKNlbjo61Pp0n6gymdgv8=",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "async-each": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/async-each/download/async-each-1.0.3.tgz",
+ "integrity": "sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8="
+ },
+ "async-foreach": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npm.taobao.org/async-foreach/download/async-foreach-0.1.3.tgz",
+ "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
+ "dev": true
+ },
+ "async-limiter": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz",
+ "integrity": "sha1-3TeelPDbgxCwgpH51kwyCXZmF/0=",
+ "dev": true
+ },
+ "async-validator": {
+ "version": "1.8.5",
+ "resolved": "https://registry.nlark.com/async-validator/download/async-validator-1.8.5.tgz",
+ "integrity": "sha1-3D4I7B/Q3dtn5ghC8CwM0c7G1/A=",
+ "requires": {
+ "babel-runtime": "6.x"
+ }
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+ "dev": true
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz",
+ "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k="
+ },
+ "autoprefixer": {
+ "version": "9.8.6",
+ "resolved": "https://registry.nlark.com/autoprefixer/download/autoprefixer-9.8.6.tgz?cache=0&sync_timestamp=1622039654812&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fautoprefixer%2Fdownload%2Fautoprefixer-9.8.6.tgz",
+ "integrity": "sha1-O3NZTKG/kmYyDFrPFYjXTep0IQ8=",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.12.0",
+ "caniuse-lite": "^1.0.30001109",
+ "colorette": "^1.2.1",
+ "normalize-range": "^0.1.2",
+ "num2fraction": "^1.2.2",
+ "postcss": "^7.0.32",
+ "postcss-value-parser": "^4.1.0"
+ }
+ },
+ "autosize": {
+ "version": "4.0.4",
+ "resolved": "https://registry.nlark.com/autosize/download/autosize-4.0.4.tgz",
+ "integrity": "sha1-kk8ThTpGa2M7kwkzCDOTbYvMzgM="
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+ "dev": true
+ },
+ "aws4": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npm.taobao.org/aws4/download/aws4-1.11.0.tgz?cache=0&sync_timestamp=1604101230105&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faws4%2Fdownload%2Faws4-1.11.0.tgz",
+ "integrity": "sha1-1h9G2DslGSUOJ4Ta9bCUeai0HFk=",
+ "dev": true
+ },
+ "axios": {
+ "version": "0.21.1",
+ "resolved": "https://registry.npm.taobao.org/axios/download/axios-0.21.1.tgz?cache=0&sync_timestamp=1608609188013&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faxios%2Fdownload%2Faxios-0.21.1.tgz",
+ "integrity": "sha1-IlY0gZYvTWvemnbVFu8OXTwJsrg=",
+ "requires": {
+ "follow-redirects": "^1.10.0"
+ }
+ },
+ "babel-core": {
+ "version": "5.8.38",
+ "resolved": "https://registry.npm.taobao.org/babel-core/download/babel-core-5.8.38.tgz",
+ "integrity": "sha1-H8ruedfmG3ULALjlT238nQr4ZVg=",
+ "requires": {
+ "babel-plugin-constant-folding": "^1.0.1",
+ "babel-plugin-dead-code-elimination": "^1.0.2",
+ "babel-plugin-eval": "^1.0.1",
+ "babel-plugin-inline-environment-variables": "^1.0.1",
+ "babel-plugin-jscript": "^1.0.4",
+ "babel-plugin-member-expression-literals": "^1.0.1",
+ "babel-plugin-property-literals": "^1.0.1",
+ "babel-plugin-proto-to-assign": "^1.0.3",
+ "babel-plugin-react-constant-elements": "^1.0.3",
+ "babel-plugin-react-display-name": "^1.0.3",
+ "babel-plugin-remove-console": "^1.0.1",
+ "babel-plugin-remove-debugger": "^1.0.1",
+ "babel-plugin-runtime": "^1.0.7",
+ "babel-plugin-undeclared-variables-check": "^1.0.2",
+ "babel-plugin-undefined-to-void": "^1.1.6",
+ "babylon": "^5.8.38",
+ "bluebird": "^2.9.33",
+ "chalk": "^1.0.0",
+ "convert-source-map": "^1.1.0",
+ "core-js": "^1.0.0",
+ "debug": "^2.1.1",
+ "detect-indent": "^3.0.0",
+ "esutils": "^2.0.0",
+ "fs-readdir-recursive": "^0.1.0",
+ "globals": "^6.4.0",
+ "home-or-tmp": "^1.0.0",
+ "is-integer": "^1.0.4",
+ "js-tokens": "1.0.1",
+ "json5": "^0.4.0",
+ "lodash": "^3.10.0",
+ "minimatch": "^2.0.3",
+ "output-file-sync": "^1.1.0",
+ "path-exists": "^1.0.0",
+ "path-is-absolute": "^1.0.0",
+ "private": "^0.1.6",
+ "regenerator": "0.8.40",
+ "regexpu": "^1.3.0",
+ "repeating": "^1.1.2",
+ "resolve": "^1.1.6",
+ "shebang-regex": "^1.0.0",
+ "slash": "^1.0.0",
+ "source-map": "^0.5.0",
+ "source-map-support": "^0.2.10",
+ "to-fast-properties": "^1.0.0",
+ "trim-right": "^1.0.0",
+ "try-resolve": "^1.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.nlark.com/ansi-regex/download/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&sync_timestamp=1618995778321&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "bluebird": {
+ "version": "2.11.0",
+ "resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-2.11.0.tgz",
+ "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE="
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.nlark.com/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1618995355917&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "core-js": {
+ "version": "1.2.7",
+ "resolved": "https://registry.nlark.com/core-js/download/core-js-1.2.7.tgz?cache=0&sync_timestamp=1624386795737&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcore-js%2Fdownload%2Fcore-js-1.2.7.tgz",
+ "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566571506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+ "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "globals": {
+ "version": "6.4.1",
+ "resolved": "https://registry.nlark.com/globals/download/globals-6.4.1.tgz?cache=0&sync_timestamp=1622088114568&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglobals%2Fdownload%2Fglobals-6.4.1.tgz",
+ "integrity": "sha1-hJgDKzttHMge68X3lpDY/in6v08="
+ },
+ "js-tokens": {
+ "version": "1.0.1",
+ "resolved": "https://registry.nlark.com/js-tokens/download/js-tokens-1.0.1.tgz",
+ "integrity": "sha1-zENaXIuUrRWst5gxQPyAGCyJrq4="
+ },
+ "json5": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npm.taobao.org/json5/download/json5-0.4.0.tgz?cache=0&sync_timestamp=1612146079519&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-0.4.0.tgz",
+ "integrity": "sha1-BUNS5MTIDIbAkjh31EneF2pzLI0="
+ },
+ "lodash": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-3.10.1.tgz?cache=0&sync_timestamp=1613835817439&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-3.10.1.tgz",
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
+ },
+ "minimatch": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-2.0.10.tgz",
+ "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
+ "requires": {
+ "brace-expansion": "^1.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433872491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "path-exists": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-1.0.0.tgz",
+ "integrity": "sha1-1aiZjrce83p0w06w2eum6HjuoIE="
+ },
+ "repeating": {
+ "version": "1.1.3",
+ "resolved": "https://registry.nlark.com/repeating/download/repeating-1.1.3.tgz",
+ "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=",
+ "requires": {
+ "is-finite": "^1.0.0"
+ }
+ },
+ "slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz",
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU="
+ },
+ "source-map-support": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.2.10.tgz",
+ "integrity": "sha1-6lo5AKHByyUJagrozFwrSxDe09w=",
+ "requires": {
+ "source-map": "0.1.32"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.1.32",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.1.32.tgz",
+ "integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=",
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618553299612&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.nlark.com/supports-color/download/supports-color-2.0.0.tgz?cache=0&sync_timestamp=1622293579301&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ },
+ "to-fast-properties": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-1.0.3.tgz",
+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc="
+ }
+ }
+ },
+ "babel-eslint": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.1.0.tgz?cache=0&sync_timestamp=1611946177416&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-eslint%2Fdownload%2Fbabel-eslint-10.1.0.tgz",
+ "integrity": "sha1-aWjlaKkQt4+zd5zdi2rC9HmUMjI=",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "@babel/parser": "^7.7.0",
+ "@babel/traverse": "^7.7.0",
+ "@babel/types": "^7.7.0",
+ "eslint-visitor-keys": "^1.0.0",
+ "resolve": "^1.12.0"
+ }
+ },
+ "babel-helper-vue-jsx-merge-props": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npm.taobao.org/babel-helper-vue-jsx-merge-props/download/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
+ "integrity": "sha1-Iq69OzOQIyjlEyk6jkmSs4T58bY="
+ },
+ "babel-loader": {
+ "version": "8.2.2",
+ "resolved": "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.2.2.tgz?cache=0&sync_timestamp=1606424705083&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-loader%2Fdownload%2Fbabel-loader-8.2.2.tgz",
+ "integrity": "sha1-k2POhMEMmkDmx1N0jhRBtgyKC4E=",
+ "dev": true,
+ "requires": {
+ "find-cache-dir": "^3.3.1",
+ "loader-utils": "^1.4.0",
+ "make-dir": "^3.1.0",
+ "schema-utils": "^2.6.5"
+ }
+ },
+ "babel-plugin-constant-folding": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-constant-folding/download/babel-plugin-constant-folding-1.0.1.tgz",
+ "integrity": "sha1-g2HTZMmORJw2kr26Ue/whEKQqo4="
+ },
+ "babel-plugin-dead-code-elimination": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-dead-code-elimination/download/babel-plugin-dead-code-elimination-1.0.2.tgz",
+ "integrity": "sha1-X3xFEnTc18zNv7s+C4XdKBIfD2U="
+ },
+ "babel-plugin-dynamic-import-node": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.3.tgz",
+ "integrity": "sha1-hP2hnJduxcbe/vV/lCez3vZuF6M=",
+ "dev": true,
+ "requires": {
+ "object.assign": "^4.1.0"
+ }
+ },
+ "babel-plugin-eval": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-eval/download/babel-plugin-eval-1.0.1.tgz",
+ "integrity": "sha1-ovrtJc5r5preS/7CY/cBaRlZUNo="
+ },
+ "babel-plugin-inline-environment-variables": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-inline-environment-variables/download/babel-plugin-inline-environment-variables-1.0.1.tgz",
+ "integrity": "sha1-H1jOkSB61qgmqL9kX6/mj/X+P/4="
+ },
+ "babel-plugin-jscript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-jscript/download/babel-plugin-jscript-1.0.4.tgz",
+ "integrity": "sha1-jzQsOCduh6R9X6CovT1etsytj8w="
+ },
+ "babel-plugin-member-expression-literals": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-member-expression-literals/download/babel-plugin-member-expression-literals-1.0.1.tgz",
+ "integrity": "sha1-zF7bD6qNyScXDnTW0cAkQAIWJNM="
+ },
+ "babel-plugin-polyfill-corejs2": {
+ "version": "0.2.2",
+ "resolved": "https://registry.nlark.com/babel-plugin-polyfill-corejs2/download/babel-plugin-polyfill-corejs2-0.2.2.tgz?cache=0&sync_timestamp=1622023848590&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbabel-plugin-polyfill-corejs2%2Fdownload%2Fbabel-plugin-polyfill-corejs2-0.2.2.tgz",
+ "integrity": "sha1-6RJHheb9lPlLYYp5VOVpMFO/Uyc=",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.13.11",
+ "@babel/helper-define-polyfill-provider": "^0.2.2",
+ "semver": "^6.1.1"
+ }
+ },
+ "babel-plugin-polyfill-corejs3": {
+ "version": "0.2.3",
+ "resolved": "https://registry.nlark.com/babel-plugin-polyfill-corejs3/download/babel-plugin-polyfill-corejs3-0.2.3.tgz?cache=0&sync_timestamp=1623879605583&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbabel-plugin-polyfill-corejs3%2Fdownload%2Fbabel-plugin-polyfill-corejs3-0.2.3.tgz",
+ "integrity": "sha1-cq3WjPCKi/E5um5t/AsdUECY5Xs=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-define-polyfill-provider": "^0.2.2",
+ "core-js-compat": "^3.14.0"
+ }
+ },
+ "babel-plugin-polyfill-regenerator": {
+ "version": "0.2.2",
+ "resolved": "https://registry.nlark.com/babel-plugin-polyfill-regenerator/download/babel-plugin-polyfill-regenerator-0.2.2.tgz",
+ "integrity": "sha1-sxDI1kKsraNIwfo7Pmzg6FG+4Hc=",
+ "dev": true,
+ "requires": {
+ "@babel/helper-define-polyfill-provider": "^0.2.2"
+ }
+ },
+ "babel-plugin-property-literals": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-property-literals/download/babel-plugin-property-literals-1.0.1.tgz",
+ "integrity": "sha1-AlIwGQAZKYCxwRjv6kjOk6q4MzY="
+ },
+ "babel-plugin-proto-to-assign": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-proto-to-assign/download/babel-plugin-proto-to-assign-1.0.4.tgz",
+ "integrity": "sha1-xJ56/QL1d7xNoF6i3wAiUM980SM=",
+ "requires": {
+ "lodash": "^3.9.3"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-3.10.1.tgz?cache=0&sync_timestamp=1613835817439&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-3.10.1.tgz",
+ "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
+ }
+ }
+ },
+ "babel-plugin-react-constant-elements": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-react-constant-elements/download/babel-plugin-react-constant-elements-1.0.3.tgz",
+ "integrity": "sha1-lGc26DeEKcvDSdz/YvUcFDs041o="
+ },
+ "babel-plugin-react-display-name": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-react-display-name/download/babel-plugin-react-display-name-1.0.3.tgz",
+ "integrity": "sha1-dU/jiSboQkpOexWrbqYTne4FFPw="
+ },
+ "babel-plugin-remove-console": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-remove-console/download/babel-plugin-remove-console-1.0.1.tgz",
+ "integrity": "sha1-2PJFVsOgUAXUKqqv0neH9T/wE6c="
+ },
+ "babel-plugin-remove-debugger": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-remove-debugger/download/babel-plugin-remove-debugger-1.0.1.tgz",
+ "integrity": "sha1-/S6jzWGkKK0fO5yJiC/0KT6MFMc="
+ },
+ "babel-plugin-runtime": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-runtime/download/babel-plugin-runtime-1.0.7.tgz",
+ "integrity": "sha1-v3x9lm3Vbs1cF/ocslPJrLflSq8="
+ },
+ "babel-plugin-undeclared-variables-check": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-undeclared-variables-check/download/babel-plugin-undeclared-variables-check-1.0.2.tgz",
+ "integrity": "sha1-XPGqU52BP/ZOmWQSkK9iCWX2Xe4=",
+ "requires": {
+ "leven": "^1.0.2"
+ }
+ },
+ "babel-plugin-undefined-to-void": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npm.taobao.org/babel-plugin-undefined-to-void/download/babel-plugin-undefined-to-void-1.1.6.tgz",
+ "integrity": "sha1-f1eO+LeN+uYAM4XYQXph7aBuL4E="
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "requires": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.nlark.com/core-js/download/core-js-2.6.12.tgz?cache=0&sync_timestamp=1624386795737&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcore-js%2Fdownload%2Fcore-js-2.6.12.tgz",
+ "integrity": "sha1-2TM9+nsGXjR8xWgiGdb2kIWcwuw="
+ },
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk="
+ }
+ }
+ },
+ "babylon": {
+ "version": "5.8.38",
+ "resolved": "https://registry.npm.taobao.org/babylon/download/babylon-5.8.38.tgz?cache=0&sync_timestamp=1593529713109&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabylon%2Fdownload%2Fbabylon-5.8.38.tgz",
+ "integrity": "sha1-7JsSCxG/bM1Bc6GL8hfmC3mFn/0="
+ },
+ "backo2": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/backo2/download/backo2-1.0.2.tgz",
+ "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
+ },
+ "baidumap": {
+ "version": "0.0.4",
+ "resolved": "https://registry.nlark.com/baidumap/download/baidumap-0.0.4.tgz",
+ "integrity": "sha1-1oEsTCWFIIrJRNWg69iOPBHyiU8=",
+ "requires": {
+ "lodash": "2.4.1",
+ "request": "2.44.0"
+ },
+ "dependencies": {
+ "asn1": {
+ "version": "0.1.11",
+ "resolved": "https://registry.npm.taobao.org/asn1/download/asn1-0.1.11.tgz",
+ "integrity": "sha1-VZvhg3bQik7E2+gId9J4GGObLfc=",
+ "optional": true
+ },
+ "assert-plus": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npm.taobao.org/assert-plus/download/assert-plus-0.1.5.tgz",
+ "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=",
+ "optional": true
+ },
+ "async": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npm.taobao.org/async/download/async-0.9.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync%2Fdownload%2Fasync-0.9.2.tgz",
+ "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
+ "optional": true
+ },
+ "aws-sign2": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.5.0.tgz",
+ "integrity": "sha1-xXED96F/wDfwLXwuZLYC6iI/fWM=",
+ "optional": true
+ },
+ "caseless": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npm.taobao.org/caseless/download/caseless-0.6.0.tgz",
+ "integrity": "sha1-gWfBq4OX+1u5X5bSjlqBxQ8kesQ="
+ },
+ "combined-stream": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-0.0.7.tgz",
+ "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=",
+ "optional": true,
+ "requires": {
+ "delayed-stream": "0.0.5"
+ }
+ },
+ "delayed-stream": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-0.0.5.tgz",
+ "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=",
+ "optional": true
+ },
+ "forever-agent": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.5.2.tgz",
+ "integrity": "sha1-bQ4JxJIflKJ/Y9O0nF/v8epMUTA="
+ },
+ "form-data": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npm.taobao.org/form-data/download/form-data-0.1.4.tgz?cache=0&sync_timestamp=1613410812604&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fform-data%2Fdownload%2Fform-data-0.1.4.tgz",
+ "integrity": "sha1-kavXiKupcCsaq/qLwBAxoqyeOxI=",
+ "optional": true,
+ "requires": {
+ "async": "~0.9.0",
+ "combined-stream": "~0.0.4",
+ "mime": "~1.2.11"
+ }
+ },
+ "http-signature": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npm.taobao.org/http-signature/download/http-signature-0.10.1.tgz?cache=0&sync_timestamp=1600868441269&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-signature%2Fdownload%2Fhttp-signature-0.10.1.tgz",
+ "integrity": "sha1-T72sEyVZqoMjEh5UB3nAoBKyfmY=",
+ "optional": true,
+ "requires": {
+ "asn1": "0.1.11",
+ "assert-plus": "^0.1.5",
+ "ctype": "0.5.3"
+ }
+ },
+ "lodash": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-2.4.1.tgz?cache=0&sync_timestamp=1613835817439&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-2.4.1.tgz",
+ "integrity": "sha1-W3cjA03aTSYuWkb7LFjXzCL3FCA="
+ },
+ "mime": {
+ "version": "1.2.11",
+ "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.2.11.tgz?cache=0&sync_timestamp=1613584838235&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-1.2.11.tgz",
+ "integrity": "sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA=",
+ "optional": true
+ },
+ "mime-types": {
+ "version": "1.0.2",
+ "resolved": "https://registry.nlark.com/mime-types/download/mime-types-1.0.2.tgz?cache=0&sync_timestamp=1622569304088&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmime-types%2Fdownload%2Fmime-types-1.0.2.tgz",
+ "integrity": "sha1-mVrhOSq4r/y/yyZB3QVOlDwNXc4="
+ },
+ "node-uuid": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npm.taobao.org/node-uuid/download/node-uuid-1.4.8.tgz",
+ "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc="
+ },
+ "oauth-sign": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.4.0.tgz",
+ "integrity": "sha1-8ilW8x6nFRqCHl8vsywRPK2Ln2k=",
+ "optional": true
+ },
+ "qs": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npm.taobao.org/qs/download/qs-1.2.2.tgz?cache=0&sync_timestamp=1616385328325&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-1.2.2.tgz",
+ "integrity": "sha1-GbV/8k3CqZzh+L32r82ln472H4g="
+ },
+ "request": {
+ "version": "2.44.0",
+ "resolved": "https://registry.npm.taobao.org/request/download/request-2.44.0.tgz",
+ "integrity": "sha1-eNYkVNaIU8rfsHrTH1i57JgHLqg=",
+ "requires": {
+ "aws-sign2": "~0.5.0",
+ "bl": "~0.9.0",
+ "caseless": "~0.6.0",
+ "forever-agent": "~0.5.0",
+ "form-data": "~0.1.0",
+ "hawk": "1.1.1",
+ "http-signature": "~0.10.0",
+ "json-stringify-safe": "~5.0.0",
+ "mime-types": "~1.0.1",
+ "node-uuid": "~1.4.0",
+ "oauth-sign": "~0.4.0",
+ "qs": "~1.2.0",
+ "stringstream": "~0.0.4",
+ "tough-cookie": ">=0.12.0",
+ "tunnel-agent": "~0.4.0"
+ }
+ },
+ "tunnel-agent": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.4.3.tgz",
+ "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us="
+ }
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbalanced-match%2Fdownload%2Fbalanced-match-1.0.2.tgz",
+ "integrity": "sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4="
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz",
+ "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=",
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+ "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "base64-arraybuffer": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npm.taobao.org/base64-arraybuffer/download/base64-arraybuffer-0.1.4.tgz",
+ "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI="
+ },
+ "base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npm.taobao.org/base64-js/download/base64-js-1.5.1.tgz?cache=0&sync_timestamp=1605123700994&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbase64-js%2Fdownload%2Fbase64-js-1.5.1.tgz",
+ "integrity": "sha1-GxtEAWClv3rUC2UPCVljSBkDkwo="
+ },
+ "batch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz",
+ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+ "dev": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+ "dev": true,
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "beeper": {
+ "version": "1.1.1",
+ "resolved": "https://registry.nlark.com/beeper/download/beeper-1.1.1.tgz?cache=0&sync_timestamp=1620038828905&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbeeper%2Fdownload%2Fbeeper-1.1.1.tgz",
+ "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak="
+ },
+ "bfj": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npm.taobao.org/bfj/download/bfj-6.1.2.tgz",
+ "integrity": "sha1-MlyGGoIryzWKQceKM7jm4ght3n8=",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.5",
+ "check-types": "^8.0.3",
+ "hoopy": "^0.1.4",
+ "tryer": "^1.0.1"
+ }
+ },
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.nlark.com/big.js/download/big.js-5.2.2.tgz?cache=0&sync_timestamp=1620132748267&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbig.js%2Fdownload%2Fbig.js-5.2.2.tgz",
+ "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-2.2.0.tgz?cache=0&sync_timestamp=1610299268308&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-2.2.0.tgz",
+ "integrity": "sha1-dfUC7q+f/eQvyYgpZFvk6na9ni0=",
+ "dev": true,
+ "optional": true
+ },
+ "bindings": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npm.taobao.org/bindings/download/bindings-1.5.0.tgz",
+ "integrity": "sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=",
+ "optional": true,
+ "requires": {
+ "file-uri-to-path": "1.0.0"
+ }
+ },
+ "bl": {
+ "version": "0.9.5",
+ "resolved": "https://registry.nlark.com/bl/download/bl-0.9.5.tgz",
+ "integrity": "sha1-wGt5evCF6gC8Unr8jvzxHeIjIFQ=",
+ "requires": {
+ "readable-stream": "~1.0.26"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ }
+ }
+ },
+ "blob": {
+ "version": "0.0.5",
+ "resolved": "https://registry.npm.taobao.org/blob/download/blob-0.0.5.tgz",
+ "integrity": "sha1-1oDu7yX4zZGtUz9bAe7UjmTK9oM="
+ },
+ "block-stream": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npm.taobao.org/block-stream/download/block-stream-0.0.9.tgz",
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.0"
+ }
+ },
+ "bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz",
+ "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=",
+ "dev": true
+ },
+ "bmap": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/bmap/download/bmap-1.0.1.tgz",
+ "integrity": "sha1-PojTY7rBcTrpR09581QmOBjl2X8=",
+ "requires": {
+ "babel-core": "^5.4.7",
+ "babel-loader": "^5.1.3",
+ "google-maps": "3.0.0",
+ "gulp": "3.8.10",
+ "gulp-webpack": "^1.5.0",
+ "webpack": "^1.9.10"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "3.3.0",
+ "resolved": "https://registry.nlark.com/acorn/download/acorn-3.3.0.tgz",
+ "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo="
+ },
+ "anymatch": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-1.3.2.tgz",
+ "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=",
+ "requires": {
+ "micromatch": "^2.1.5",
+ "normalize-path": "^2.0.0"
+ }
+ },
+ "arr-diff": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/arr-diff/download/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "requires": {
+ "arr-flatten": "^1.0.1"
+ }
+ },
+ "array-unique": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npm.taobao.org/array-unique/download/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM="
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npm.taobao.org/async/download/async-1.5.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync%2Fdownload%2Fasync-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
+ },
+ "babel-loader": {
+ "version": "5.4.2",
+ "resolved": "https://registry.npm.taobao.org/babel-loader/download/babel-loader-5.4.2.tgz?cache=0&sync_timestamp=1606424705083&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-loader%2Fdownload%2Fbabel-loader-5.4.2.tgz",
+ "integrity": "sha1-d/4o2OYNDwVrHBvKJbhJTNqrnHY=",
+ "requires": {
+ "babel-core": "^5.4.0",
+ "loader-utils": "^0.2.9",
+ "object-assign": "^3.0.0"
+ }
+ },
+ "big.js": {
+ "version": "3.2.0",
+ "resolved": "https://registry.nlark.com/big.js/download/big.js-3.2.0.tgz?cache=0&sync_timestamp=1620132748267&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbig.js%2Fdownload%2Fbig.js-3.2.0.tgz",
+ "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4="
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz?cache=0&sync_timestamp=1610299268308&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-1.13.1.tgz",
+ "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U="
+ },
+ "braces": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npm.taobao.org/braces/download/braces-1.8.5.tgz",
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "requires": {
+ "expand-range": "^1.8.1",
+ "preserve": "^0.2.0",
+ "repeat-element": "^1.1.2"
+ }
+ },
+ "browserify-aes": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npm.taobao.org/browserify-aes/download/browserify-aes-0.4.0.tgz",
+ "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=",
+ "requires": {
+ "inherits": "^2.0.1"
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npm.taobao.org/browserify-zlib/download/browserify-zlib-0.1.4.tgz",
+ "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
+ "requires": {
+ "pako": "~0.2.0"
+ }
+ },
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-1.2.1.tgz?cache=0&sync_timestamp=1603921884289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
+ },
+ "chokidar": {
+ "version": "1.7.0",
+ "resolved": "https://registry.nlark.com/chokidar/download/chokidar-1.7.0.tgz?cache=0&sync_timestamp=1623763551233&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchokidar%2Fdownload%2Fchokidar-1.7.0.tgz",
+ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+ "requires": {
+ "anymatch": "^1.3.0",
+ "async-each": "^1.0.0",
+ "fsevents": "^1.0.0",
+ "glob-parent": "^2.0.0",
+ "inherits": "^2.0.1",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^2.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.0.0"
+ }
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "requires": {
+ "center-align": "^0.1.1",
+ "right-align": "^0.1.1",
+ "wordwrap": "0.0.2"
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.3.0.tgz",
+ "integrity": "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=",
+ "requires": {
+ "browserify-aes": "0.4.0",
+ "pbkdf2-compat": "2.0.1",
+ "ripemd160": "0.2.0",
+ "sha.js": "2.2.6"
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566571506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+ "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz",
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k="
+ },
+ "enhanced-resolve": {
+ "version": "0.9.1",
+ "resolved": "https://registry.nlark.com/enhanced-resolve/download/enhanced-resolve-0.9.1.tgz",
+ "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "memory-fs": "^0.2.0",
+ "tapable": "^0.1.8"
+ },
+ "dependencies": {
+ "memory-fs": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.2.0.tgz",
+ "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA="
+ }
+ }
+ },
+ "events": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/events/download/events-1.1.1.tgz",
+ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
+ },
+ "expand-brackets": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-0.1.5.tgz",
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "requires": {
+ "is-posix-bracket": "^0.1.0"
+ }
+ },
+ "extglob": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npm.taobao.org/extglob/download/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "requires": {
+ "is-extglob": "^1.0.0"
+ }
+ },
+ "fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.13.tgz",
+ "integrity": "sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=",
+ "optional": true,
+ "requires": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ }
+ },
+ "glob-parent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-2.0.0.tgz",
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "requires": {
+ "is-glob": "^2.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.nlark.com/has-flag/download/has-flag-1.0.0.tgz?cache=0&sync_timestamp=1618847009337&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhas-flag%2Fdownload%2Fhas-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
+ },
+ "https-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npm.taobao.org/https-browserify/download/https-browserify-0.0.1.tgz",
+ "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI="
+ },
+ "interpret": {
+ "version": "0.6.6",
+ "resolved": "https://registry.npm.taobao.org/interpret/download/interpret-0.6.6.tgz",
+ "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls="
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz",
+ "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0="
+ }
+ }
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz",
+ "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0="
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+ "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz",
+ "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0="
+ }
+ }
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "requires": {
+ "is-extglob": "^1.0.0"
+ }
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz?cache=0&sync_timestamp=1612146079519&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ },
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-0.2.17.tgz",
+ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "requires": {
+ "big.js": "^3.1.3",
+ "emojis-list": "^2.0.0",
+ "json5": "^0.5.0",
+ "object-assign": "^4.0.1"
+ },
+ "dependencies": {
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ }
+ }
+ },
+ "memory-fs": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.3.0.tgz",
+ "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=",
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "micromatch": {
+ "version": "2.3.11",
+ "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-2.3.11.tgz?cache=0&sync_timestamp=1618054787196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-2.3.11.tgz",
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "requires": {
+ "arr-diff": "^2.0.0",
+ "array-unique": "^0.2.1",
+ "braces": "^1.8.2",
+ "expand-brackets": "^0.1.4",
+ "extglob": "^0.3.1",
+ "filename-regex": "^2.0.0",
+ "is-extglob": "^1.0.0",
+ "is-glob": "^2.0.1",
+ "kind-of": "^3.0.2",
+ "normalize-path": "^2.0.1",
+ "object.omit": "^2.0.0",
+ "parse-glob": "^3.0.4",
+ "regex-cache": "^0.4.2"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433872491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "node-libs-browser": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npm.taobao.org/node-libs-browser/download/node-libs-browser-0.7.0.tgz",
+ "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=",
+ "requires": {
+ "assert": "^1.1.1",
+ "browserify-zlib": "^0.1.4",
+ "buffer": "^4.9.0",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "^1.0.0",
+ "crypto-browserify": "3.3.0",
+ "domain-browser": "^1.1.1",
+ "events": "^1.0.0",
+ "https-browserify": "0.0.1",
+ "os-browserify": "^0.2.0",
+ "path-browserify": "0.0.0",
+ "process": "^0.11.0",
+ "punycode": "^1.2.4",
+ "querystring-es3": "^0.2.0",
+ "readable-stream": "^2.0.5",
+ "stream-browserify": "^2.0.1",
+ "stream-http": "^2.3.1",
+ "string_decoder": "^0.10.25",
+ "timers-browserify": "^2.0.2",
+ "tty-browserify": "0.0.0",
+ "url": "^0.11.0",
+ "util": "^0.10.3",
+ "vm-browserify": "0.0.4"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ },
+ "object-assign": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/object-assign/download/object-assign-3.0.0.tgz",
+ "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I="
+ },
+ "os-browserify": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npm.taobao.org/os-browserify/download/os-browserify-0.2.1.tgz",
+ "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8="
+ },
+ "pako": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npm.taobao.org/pako/download/pako-0.2.9.tgz?cache=0&sync_timestamp=1610208860443&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpako%2Fdownload%2Fpako-0.2.9.tgz",
+ "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU="
+ },
+ "path-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npm.taobao.org/path-browserify/download/path-browserify-0.0.0.tgz",
+ "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo="
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-2.2.1.tgz",
+ "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz",
+ "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz",
+ "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz",
+ "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0="
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz",
+ "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=",
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz",
+ "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0="
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz?cache=0&sync_timestamp=1618054787196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.10.tgz",
+ "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ }
+ }
+ },
+ "ripemd160": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npm.taobao.org/ripemd160/download/ripemd160-0.2.0.tgz",
+ "integrity": "sha1-K/GYveFnys+lHAqSjoS2i74XH84="
+ },
+ "sha.js": {
+ "version": "2.2.6",
+ "resolved": "https://registry.npm.taobao.org/sha.js/download/sha.js-2.2.6.tgz",
+ "integrity": "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo="
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ },
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.nlark.com/supports-color/download/supports-color-3.2.3.tgz?cache=0&sync_timestamp=1622293579301&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-3.2.3.tgz",
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+ "requires": {
+ "has-flag": "^1.0.0"
+ }
+ },
+ "tapable": {
+ "version": "0.1.10",
+ "resolved": "https://registry.npm.taobao.org/tapable/download/tapable-0.1.10.tgz?cache=0&sync_timestamp=1607088902003&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftapable%2Fdownload%2Ftapable-0.1.10.tgz",
+ "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q="
+ },
+ "uglify-js": {
+ "version": "2.7.5",
+ "resolved": "https://registry.nlark.com/uglify-js/download/uglify-js-2.7.5.tgz?cache=0&sync_timestamp=1624812339222&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fuglify-js%2Fdownload%2Fuglify-js-2.7.5.tgz",
+ "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=",
+ "requires": {
+ "async": "~0.2.6",
+ "source-map": "~0.5.1",
+ "uglify-to-browserify": "~1.0.0",
+ "yargs": "~3.10.0"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npm.taobao.org/async/download/async-0.2.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync%2Fdownload%2Fasync-0.2.10.tgz",
+ "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E="
+ }
+ }
+ },
+ "util": {
+ "version": "0.10.4",
+ "resolved": "https://registry.nlark.com/util/download/util-0.10.4.tgz",
+ "integrity": "sha1-OqASW/5mikZy3liFfTrOJ+y3aQE=",
+ "requires": {
+ "inherits": "2.0.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ }
+ }
+ },
+ "vm-browserify": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-0.0.4.tgz",
+ "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
+ "requires": {
+ "indexof": "0.0.1"
+ }
+ },
+ "watchpack": {
+ "version": "0.2.9",
+ "resolved": "https://registry.nlark.com/watchpack/download/watchpack-0.2.9.tgz",
+ "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=",
+ "requires": {
+ "async": "^0.9.0",
+ "chokidar": "^1.0.0",
+ "graceful-fs": "^4.1.2"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npm.taobao.org/async/download/async-0.9.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync%2Fdownload%2Fasync-0.9.2.tgz",
+ "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
+ }
+ }
+ },
+ "webpack": {
+ "version": "1.15.0",
+ "resolved": "https://registry.nlark.com/webpack/download/webpack-1.15.0.tgz",
+ "integrity": "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg=",
+ "requires": {
+ "acorn": "^3.0.0",
+ "async": "^1.3.0",
+ "clone": "^1.0.2",
+ "enhanced-resolve": "~0.9.0",
+ "interpret": "^0.6.4",
+ "loader-utils": "^0.2.11",
+ "memory-fs": "~0.3.0",
+ "mkdirp": "~0.5.0",
+ "node-libs-browser": "^0.7.0",
+ "optimist": "~0.6.0",
+ "supports-color": "^3.1.0",
+ "tapable": "~0.1.8",
+ "uglify-js": "~2.7.3",
+ "watchpack": "^0.2.1",
+ "webpack-core": "~0.6.9"
+ }
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npm.taobao.org/window-size/download/window-size-0.1.0.tgz",
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
+ },
+ "yargs": {
+ "version": "3.10.0",
+ "resolved": "https://registry.nlark.com/yargs/download/yargs-3.10.0.tgz?cache=0&sync_timestamp=1620086644940&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs%2Fdownload%2Fyargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "requires": {
+ "camelcase": "^1.0.2",
+ "cliui": "^2.1.0",
+ "decamelize": "^1.0.0",
+ "window-size": "0.1.0"
+ }
+ }
+ }
+ },
+ "bmaplib": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/bmaplib/download/bmaplib-1.0.1.tgz",
+ "integrity": "sha1-upj8w6wKF/31b5f6UpPl+lw1iu8="
+ },
+ "bmaplib.curveline": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/bmaplib.curveline/download/bmaplib.curveline-1.0.0.tgz",
+ "integrity": "sha1-gm6wvxxZ+tGyMUK+Zvw2DPAJrqI="
+ },
+ "bmaplib.heatmap": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/bmaplib.heatmap/download/bmaplib.heatmap-1.0.4.tgz",
+ "integrity": "sha1-MBYSYncf54rzVwX/kkV3Jd5dmFA="
+ },
+ "bmaplib.lushu": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npm.taobao.org/bmaplib.lushu/download/bmaplib.lushu-1.0.7.tgz",
+ "integrity": "sha1-d8F9z3FI0wxG6EMMf/hrIOQYuLg="
+ },
+ "bmaplib.markerclusterer": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npm.taobao.org/bmaplib.markerclusterer/download/bmaplib.markerclusterer-1.0.13.tgz",
+ "integrity": "sha1-RC1xpsQIRO5H0B9tshZrVFMLW9E=",
+ "requires": {
+ "bmaplib.texticonoverlay": "^1.0.2"
+ }
+ },
+ "bmaplib.texticonoverlay": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/bmaplib.texticonoverlay/download/bmaplib.texticonoverlay-1.0.2.tgz",
+ "integrity": "sha1-14VG6g8DbZ/pZJg3ljFbbBEqBb8="
+ },
+ "bn.js": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-5.2.0.tgz",
+ "integrity": "sha1-NYhgZ0OWxpl3canQUfzBtX1K4AI=",
+ "dev": true
+ },
+ "body-parser": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz",
+ "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=",
+ "dev": true,
+ "requires": {
+ "bytes": "3.1.0",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "http-errors": "1.7.2",
+ "iconv-lite": "0.4.24",
+ "on-finished": "~2.3.0",
+ "qs": "6.7.0",
+ "raw-body": "2.4.0",
+ "type-is": "~1.6.17"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566571506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+ "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433872491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.7.0",
+ "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&sync_timestamp=1616385315895&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz",
+ "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=",
+ "dev": true
+ }
+ }
+ },
+ "bonjour": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npm.taobao.org/bonjour/download/bonjour-3.5.0.tgz",
+ "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+ "dev": true,
+ "requires": {
+ "array-flatten": "^2.1.0",
+ "deep-equal": "^1.0.1",
+ "dns-equal": "^1.0.0",
+ "dns-txt": "^2.0.2",
+ "multicast-dns": "^6.0.1",
+ "multicast-dns-service-types": "^1.1.0"
+ },
+ "dependencies": {
+ "array-flatten": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-2.1.2.tgz",
+ "integrity": "sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk=",
+ "dev": true
+ }
+ }
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+ "dev": true
+ },
+ "boom": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npm.taobao.org/boom/download/boom-0.4.2.tgz",
+ "integrity": "sha1-emNune1O/O+xnO9JR6PGffrukRs=",
+ "optional": true,
+ "requires": {
+ "hoek": "0.9.x"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz",
+ "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz",
+ "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "breakable": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/breakable/download/breakable-1.0.0.tgz",
+ "integrity": "sha1-eEp5eRWjjq0nutRWtVcstLuqeME="
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "dev": true
+ },
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/browserify-aes/download/browserify-aes-1.2.0.tgz",
+ "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/browserify-cipher/download/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/browserify-des/download/browserify-des-1.0.2.tgz",
+ "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.1.0.tgz",
+ "integrity": "sha1-sv0Gtbda4pf3zi3GUfkY9b4VjI0=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^5.0.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npm.taobao.org/browserify-sign/download/browserify-sign-4.2.1.tgz?cache=0&sync_timestamp=1596557839950&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserify-sign%2Fdownload%2Fbrowserify-sign-4.2.1.tgz",
+ "integrity": "sha1-6vSt1G3VS+O7OzbAzxWrvrp5VsM=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^5.1.1",
+ "browserify-rsa": "^4.0.1",
+ "create-hash": "^1.2.0",
+ "create-hmac": "^1.1.7",
+ "elliptic": "^6.5.3",
+ "inherits": "^2.0.4",
+ "parse-asn1": "^5.1.5",
+ "readable-stream": "^3.6.0",
+ "safe-buffer": "^5.2.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz",
+ "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz",
+ "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=",
+ "dev": true
+ }
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npm.taobao.org/browserify-zlib/download/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=",
+ "dev": true,
+ "requires": {
+ "pako": "~1.0.5"
+ }
+ },
+ "browserslist": {
+ "version": "4.16.6",
+ "resolved": "https://registry.nlark.com/browserslist/download/browserslist-4.16.6.tgz?cache=0&sync_timestamp=1619789101558&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbrowserslist%2Fdownload%2Fbrowserslist-4.16.6.tgz",
+ "integrity": "sha1-15ASd6WojlVO0wWxg+ybDAj2b6I=",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "^1.0.30001219",
+ "colorette": "^1.2.2",
+ "electron-to-chromium": "^1.3.723",
+ "escalade": "^3.1.1",
+ "node-releases": "^1.1.71"
+ }
+ },
+ "buffer": {
+ "version": "4.9.2",
+ "resolved": "https://registry.npm.taobao.org/buffer/download/buffer-4.9.2.tgz?cache=0&sync_timestamp=1606098073225&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbuffer%2Fdownload%2Fbuffer-4.9.2.tgz",
+ "integrity": "sha1-Iw6tNEACmIZEhBqwJEr4xEu+Pvg=",
+ "requires": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
+ }
+ },
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz",
+ "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=",
+ "dev": true
+ },
+ "buffer-indexof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/buffer-indexof/download/buffer-indexof-1.1.1.tgz",
+ "integrity": "sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow=",
+ "dev": true
+ },
+ "buffer-json": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/buffer-json/download/buffer-json-2.0.0.tgz",
+ "integrity": "sha1-9z4TseQvGW/i/WfQAcfXEH7dfCM=",
+ "dev": true
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/buffer-xor/download/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "dev": true
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug="
+ },
+ "bytes": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz",
+ "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=",
+ "dev": true
+ },
+ "cacache": {
+ "version": "12.0.4",
+ "resolved": "https://registry.nlark.com/cacache/download/cacache-12.0.4.tgz?cache=0&sync_timestamp=1621949584977&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcacache%2Fdownload%2Fcacache-12.0.4.tgz",
+ "integrity": "sha1-ZovL0QWutfHZL+JVcOyVJcj6pAw=",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.5",
+ "chownr": "^1.1.1",
+ "figgy-pudding": "^3.5.1",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.1.15",
+ "infer-owner": "^1.0.3",
+ "lru-cache": "^5.1.1",
+ "mississippi": "^3.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.3",
+ "ssri": "^6.0.1",
+ "unique-filename": "^1.1.1",
+ "y18n": "^4.0.0"
+ }
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz",
+ "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=",
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ }
+ },
+ "cache-loader": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npm.taobao.org/cache-loader/download/cache-loader-4.1.0.tgz?cache=0&sync_timestamp=1601432152909&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcache-loader%2Fdownload%2Fcache-loader-4.1.0.tgz",
+ "integrity": "sha1-mUjK41OuwKH8ser9ojAIFuyFOH4=",
+ "dev": true,
+ "requires": {
+ "buffer-json": "^2.0.0",
+ "find-cache-dir": "^3.0.0",
+ "loader-utils": "^1.2.3",
+ "mkdirp": "^0.5.1",
+ "neo-async": "^2.6.1",
+ "schema-utils": "^2.0.0"
+ }
+ },
+ "call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/call-bind/download/call-bind-1.0.2.tgz?cache=0&sync_timestamp=1610405478355&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcall-bind%2Fdownload%2Fcall-bind-1.0.2.tgz",
+ "integrity": "sha1-sdTonmiBGcPJqQOtMKuy9qkZvjw=",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ }
+ },
+ "call-me-maybe": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/call-me-maybe/download/call-me-maybe-1.0.1.tgz",
+ "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
+ "dev": true
+ },
+ "caller-callsite": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/caller-callsite/download/caller-callsite-2.0.0.tgz",
+ "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+ "dev": true,
+ "requires": {
+ "callsites": "^2.0.0"
+ }
+ },
+ "caller-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/caller-path/download/caller-path-2.0.0.tgz",
+ "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+ "dev": true,
+ "requires": {
+ "caller-callsite": "^2.0.0"
+ }
+ },
+ "callsites": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz",
+ "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
+ "dev": true
+ },
+ "camel-case": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/camel-case/download/camel-case-3.0.0.tgz?cache=0&sync_timestamp=1606869170809&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamel-case%2Fdownload%2Fcamel-case-3.0.0.tgz",
+ "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+ "dev": true,
+ "requires": {
+ "no-case": "^2.2.0",
+ "upper-case": "^1.1.1"
+ }
+ },
+ "camelcase": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-6.2.0.tgz?cache=0&sync_timestamp=1603921884289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-6.2.0.tgz",
+ "integrity": "sha1-kkr4gcnVJaydh/QNlk5c6pgqGAk=",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.nlark.com/camelcase-keys/download/camelcase-keys-2.1.0.tgz?cache=0&sync_timestamp=1624608993530&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcamelcase-keys%2Fdownload%2Fcamelcase-keys-2.1.0.tgz",
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^2.0.0",
+ "map-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-2.1.1.tgz?cache=0&sync_timestamp=1603921884289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-2.1.1.tgz",
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+ "dev": true
+ }
+ }
+ },
+ "caniuse-api": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/caniuse-api/download/caniuse-api-3.0.0.tgz",
+ "integrity": "sha1-Xk2Q4idJYdRikZl99Znj7QCO5MA=",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "caniuse-lite": "^1.0.0",
+ "lodash.memoize": "^4.1.2",
+ "lodash.uniq": "^4.5.0"
+ }
+ },
+ "caniuse-lite": {
+ "version": "1.0.30001240",
+ "resolved": "https://registry.nlark.com/caniuse-lite/download/caniuse-lite-1.0.30001240.tgz?cache=0&sync_timestamp=1624686520179&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcaniuse-lite%2Fdownload%2Fcaniuse-lite-1.0.30001240.tgz",
+ "integrity": "sha1-7BXRJbWQYCyHMVRcU1H/BUrS1S8=",
+ "dev": true
+ },
+ "case-sensitive-paths-webpack-plugin": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npm.taobao.org/case-sensitive-paths-webpack-plugin/download/case-sensitive-paths-webpack-plugin-2.4.0.tgz?cache=0&sync_timestamp=1614019098201&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcase-sensitive-paths-webpack-plugin%2Fdownload%2Fcase-sensitive-paths-webpack-plugin-2.4.0.tgz",
+ "integrity": "sha1-22QGbGQi7tLgjMFLmGykN5bbxtQ=",
+ "dev": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+ "dev": true
+ },
+ "center-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npm.taobao.org/center-align/download/center-align-0.1.3.tgz",
+ "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+ "requires": {
+ "align-text": "^0.1.3",
+ "lazy-cache": "^1.0.3"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.nlark.com/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1618995367379&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz",
+ "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz?cache=0&sync_timestamp=1601032467034&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchardet%2Fdownload%2Fchardet-0.7.0.tgz",
+ "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=",
+ "dev": true
+ },
+ "check-types": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npm.taobao.org/check-types/download/check-types-8.0.3.tgz",
+ "integrity": "sha1-M1bMoZyIlUTy16le1JzlCKDs9VI=",
+ "dev": true
+ },
+ "chokidar": {
+ "version": "3.5.2",
+ "resolved": "https://registry.nlark.com/chokidar/download/chokidar-3.5.2.tgz?cache=0&sync_timestamp=1623763551233&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchokidar%2Fdownload%2Fchokidar-3.5.2.tgz",
+ "integrity": "sha1-26OXb8rbAW9m/TZQIdkWANAcHnU=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "fsevents": "~2.3.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz",
+ "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz",
+ "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz",
+ "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=",
+ "dev": true,
+ "optional": true
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz",
+ "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ }
+ }
+ },
+ "chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npm.taobao.org/chownr/download/chownr-1.1.4.tgz",
+ "integrity": "sha1-b8nXtC0ypYNZYzdmbn0ICE2izGs=",
+ "dev": true
+ },
+ "chrome-trace-event": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/chrome-trace-event/download/chrome-trace-event-1.0.3.tgz",
+ "integrity": "sha1-EBXs7UdB4V0GZkqVfbv1DQQeJqw=",
+ "dev": true
+ },
+ "ci-info": {
+ "version": "1.6.0",
+ "resolved": "https://registry.nlark.com/ci-info/download/ci-info-1.6.0.tgz",
+ "integrity": "sha1-LKINu5zrMtRSSmgzAzE/AwSx5Jc=",
+ "dev": true
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/cipher-base/download/cipher-base-1.0.4.tgz",
+ "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz",
+ "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=",
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "clean-css": {
+ "version": "4.2.3",
+ "resolved": "https://registry.nlark.com/clean-css/download/clean-css-4.2.3.tgz",
+ "integrity": "sha1-UHtd59l7SO5T2ErbAWD/YhY4D3g=",
+ "dev": true,
+ "requires": {
+ "source-map": "~0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-2.1.0.tgz",
+ "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "cli-highlight": {
+ "version": "2.1.11",
+ "resolved": "https://registry.npm.taobao.org/cli-highlight/download/cli-highlight-2.1.11.tgz?cache=0&sync_timestamp=1616955054342&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-highlight%2Fdownload%2Fcli-highlight-2.1.11.tgz",
+ "integrity": "sha1-SXNvpFLwqvT65YDjCssmgo0twb8=",
+ "dev": true,
+ "requires": {
+ "chalk": "^4.0.0",
+ "highlight.js": "^10.7.1",
+ "mz": "^2.4.0",
+ "parse5": "^5.1.1",
+ "parse5-htmlparser2-tree-adapter": "^6.0.0",
+ "yargs": "^16.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz",
+ "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.1",
+ "resolved": "https://registry.nlark.com/chalk/download/chalk-4.1.1.tgz?cache=0&sync_timestamp=1618995367379&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.1.tgz",
+ "integrity": "sha1-yAs/qyi/Y3HmhjMl7uZ+YYt35q0=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
+ "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
+ "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
+ "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.nlark.com/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1622293579301&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz",
+ "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "cli-spinners": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.6.0.tgz?cache=0&sync_timestamp=1616091572272&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-spinners%2Fdownload%2Fcli-spinners-2.6.0.tgz",
+ "integrity": "sha1-NsfcmPtqmna9YjjsP3fiQlYn6Tk=",
+ "dev": true
+ },
+ "cli-width": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/cli-width/download/cli-width-3.0.0.tgz",
+ "integrity": "sha1-ovSEN6LKqaIkNueUvwceyeYc7fY=",
+ "dev": true
+ },
+ "clipboardy": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npm.taobao.org/clipboardy/download/clipboardy-2.3.0.tgz",
+ "integrity": "sha1-PCkDZQxo5GqRs4iYW8J3QofbopA=",
+ "dev": true,
+ "requires": {
+ "arch": "^2.1.1",
+ "execa": "^1.0.0",
+ "is-wsl": "^2.1.1"
+ },
+ "dependencies": {
+ "is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-2.2.0.tgz",
+ "integrity": "sha1-dKTHbnfKn9P5MvKQwX6jJs0VcnE=",
+ "dev": true,
+ "requires": {
+ "is-docker": "^2.0.0"
+ }
+ }
+ }
+ },
+ "cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-6.0.0.tgz",
+ "integrity": "sha1-UR1wLAxOQcoVbX0OlgIfI+EyJbE=",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz",
+ "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
+ "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
+ "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha1-6Tk7oHEC5skaOyIUePAlfNKFblM=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ }
+ }
+ },
+ "clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz",
+ "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
+ },
+ "clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npm.taobao.org/clone-deep/download/clone-deep-4.0.1.tgz",
+ "integrity": "sha1-wZ/Zvbv4WUK0/ZechNz31fB8I4c=",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ }
+ },
+ "clone-stats": {
+ "version": "0.0.1",
+ "resolved": "https://registry.nlark.com/clone-stats/download/clone-stats-0.0.1.tgz",
+ "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE="
+ },
+ "coa": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npm.taobao.org/coa/download/coa-2.0.2.tgz",
+ "integrity": "sha1-Q/bCEVG07yv1cYfbDXPeIp4+fsM=",
+ "dev": true,
+ "requires": {
+ "@types/q": "^1.5.1",
+ "chalk": "^2.4.1",
+ "q": "^1.1.2"
+ }
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+ "dev": true
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npm.taobao.org/color/download/color-3.1.3.tgz",
+ "integrity": "sha1-ymf7TnuX1hHc3jns7tQiBn2RWW4=",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.1",
+ "color-string": "^1.5.4"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz",
+ "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "color-string": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npm.taobao.org/color-string/download/color-string-1.5.5.tgz?cache=0&sync_timestamp=1614967248053&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcolor-string%2Fdownload%2Fcolor-string-1.5.5.tgz",
+ "integrity": "sha1-ZUdKjw50OWJfPSemoZ2J/EUiMBQ=",
+ "dev": true,
+ "requires": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npm.taobao.org/color-support/download/color-support-1.1.3.tgz",
+ "integrity": "sha1-k4NDeaHMmgxh+C9S8NBDIiUb1aI="
+ },
+ "colorette": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npm.taobao.org/colorette/download/colorette-1.2.2.tgz?cache=0&sync_timestamp=1614259593633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcolorette%2Fdownload%2Fcolorette-1.2.2.tgz",
+ "integrity": "sha1-y8x51emcrqLb8Q6zom/Ys+as+pQ=",
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz",
+ "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.nlark.com/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1624609510051&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz",
+ "integrity": "sha1-/UhehMA+tIgcIHIrpIA16FMa6zM="
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "dev": true
+ },
+ "commoner": {
+ "version": "0.10.8",
+ "resolved": "https://registry.npm.taobao.org/commoner/download/commoner-0.10.8.tgz",
+ "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=",
+ "requires": {
+ "commander": "^2.5.0",
+ "detective": "^4.3.1",
+ "glob": "^5.0.15",
+ "graceful-fs": "^4.1.2",
+ "iconv-lite": "^0.4.5",
+ "mkdirp": "^0.5.0",
+ "private": "^0.1.6",
+ "q": "^1.1.2",
+ "recast": "^0.11.17"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npm.taobao.org/esprima/download/esprima-3.1.3.tgz",
+ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM="
+ },
+ "glob": {
+ "version": "5.0.15",
+ "resolved": "https://registry.nlark.com/glob/download/glob-5.0.15.tgz?cache=0&sync_timestamp=1620337382269&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob%2Fdownload%2Fglob-5.0.15.tgz",
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "recast": {
+ "version": "0.11.23",
+ "resolved": "https://registry.npm.taobao.org/recast/download/recast-0.11.23.tgz?cache=0&sync_timestamp=1602526173711&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frecast%2Fdownload%2Frecast-0.11.23.tgz",
+ "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=",
+ "requires": {
+ "ast-types": "0.9.6",
+ "esprima": "~3.1.0",
+ "private": "~0.1.5",
+ "source-map": "~0.5.0"
+ }
+ }
+ }
+ },
+ "component-bind": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/component-bind/download/component-bind-1.0.0.tgz",
+ "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E="
+ },
+ "component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz",
+ "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A="
+ },
+ "component-inherit": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npm.taobao.org/component-inherit/download/component-inherit-0.0.3.tgz",
+ "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM="
+ },
+ "compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npm.taobao.org/compressible/download/compressible-2.0.18.tgz",
+ "integrity": "sha1-r1PMprBw1MPAdQ+9dyhqbXzEb7o=",
+ "dev": true,
+ "requires": {
+ "mime-db": ">= 1.43.0 < 2"
+ }
+ },
+ "compression": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npm.taobao.org/compression/download/compression-1.7.4.tgz",
+ "integrity": "sha1-lVI+/xcMpXwpoMpB5v4TH0Hlu48=",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "~2.0.16",
+ "debug": "2.6.9",
+ "on-headers": "~1.0.2",
+ "safe-buffer": "5.1.2",
+ "vary": "~1.1.2"
+ },
+ "dependencies": {
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566571506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+ "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433872491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz",
+ "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "connect-history-api-fallback": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npm.taobao.org/connect-history-api-fallback/download/connect-history-api-fallback-1.6.0.tgz",
+ "integrity": "sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w=",
+ "dev": true
+ },
+ "console-browserify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/console-browserify/download/console-browserify-1.2.0.tgz",
+ "integrity": "sha1-ZwY871fOts9Jk6KrOlWECujEkzY="
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/console-control-strings/download/console-control-strings-1.1.0.tgz",
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
+ "dev": true
+ },
+ "consolidate": {
+ "version": "0.15.1",
+ "resolved": "https://registry.npm.taobao.org/consolidate/download/consolidate-0.15.1.tgz",
+ "integrity": "sha1-IasEMjXHGgfUXZqtmFk7DbpWurc=",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.1.1"
+ }
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/constants-browserify/download/constants-browserify-1.0.0.tgz",
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U="
+ },
+ "content-disposition": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz",
+ "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "content-type": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz",
+ "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=",
+ "dev": true
+ },
+ "convert-source-map": {
+ "version": "1.8.0",
+ "resolved": "https://registry.nlark.com/convert-source-map/download/convert-source-map-1.8.0.tgz?cache=0&sync_timestamp=1624045420970&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fconvert-source-map%2Fdownload%2Fconvert-source-map-1.8.0.tgz",
+ "integrity": "sha1-8zc8MtIbTXgN2ABFFGhPt5HKQ2k=",
+ "requires": {
+ "safe-buffer": "~5.1.1"
+ }
+ },
+ "cookie": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz",
+ "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=",
+ "dev": true
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz",
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+ "dev": true
+ },
+ "copy-concurrently": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz",
+ "integrity": "sha1-kilzmMrjSTf8r9bsgTnBgFHwteA=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "fs-write-stream-atomic": "^1.0.8",
+ "iferr": "^0.1.5",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.0"
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
+ },
+ "copy-webpack-plugin": {
+ "version": "5.1.2",
+ "resolved": "https://registry.nlark.com/copy-webpack-plugin/download/copy-webpack-plugin-5.1.2.tgz?cache=0&sync_timestamp=1624628458516&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcopy-webpack-plugin%2Fdownload%2Fcopy-webpack-plugin-5.1.2.tgz",
+ "integrity": "sha1-ioieHcr6bJHGzUvhrRWPHTgjuuI=",
+ "dev": true,
+ "requires": {
+ "cacache": "^12.0.3",
+ "find-cache-dir": "^2.1.0",
+ "glob-parent": "^3.1.0",
+ "globby": "^7.1.1",
+ "is-glob": "^4.0.1",
+ "loader-utils": "^1.2.3",
+ "minimatch": "^3.0.4",
+ "normalize-path": "^3.0.0",
+ "p-limit": "^2.2.1",
+ "schema-utils": "^1.0.0",
+ "serialize-javascript": "^4.0.0",
+ "webpack-log": "^2.0.0"
+ },
+ "dependencies": {
+ "find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz",
+ "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "globby": {
+ "version": "7.1.1",
+ "resolved": "https://registry.nlark.com/globby/download/globby-7.1.1.tgz?cache=0&sync_timestamp=1623850103454&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglobby%2Fdownload%2Fglobby-7.1.1.tgz",
+ "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "dir-glob": "^2.0.0",
+ "glob": "^7.1.2",
+ "ignore": "^3.3.5",
+ "pify": "^3.0.0",
+ "slash": "^1.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz?cache=0&sync_timestamp=1593529716831&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
+ }
+ },
+ "ignore": {
+ "version": "3.3.10",
+ "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz",
+ "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=",
+ "dev": true
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz",
+ "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz",
+ "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=",
+ "dev": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz",
+ "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz?cache=0&sync_timestamp=1602859056682&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-3.0.0.tgz",
+ "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1601922425223&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz",
+ "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz",
+ "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+ "dev": true
+ },
+ "slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz?cache=0&sync_timestamp=1618384496016&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslash%2Fdownload%2Fslash-1.0.0.tgz",
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+ "dev": true
+ }
+ }
+ },
+ "core-js": {
+ "version": "3.15.1",
+ "resolved": "https://registry.nlark.com/core-js/download/core-js-3.15.1.tgz?cache=0&sync_timestamp=1624386795737&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcore-js%2Fdownload%2Fcore-js-3.15.1.tgz",
+ "integrity": "sha1-bAiriKvfVlRQRcz1/YH0f0B+fxo="
+ },
+ "core-js-compat": {
+ "version": "3.15.1",
+ "resolved": "https://registry.nlark.com/core-js-compat/download/core-js-compat-3.15.1.tgz",
+ "integrity": "sha1-Gv4jNxbTfuAhlW7wl1lAcbK1hac=",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.16.6",
+ "semver": "7.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npm.taobao.org/semver/download/semver-7.0.0.tgz",
+ "integrity": "sha1-XzyjV2HkfgWyBsba/yz4FPAxa44=",
+ "dev": true
+ }
+ }
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "cosmiconfig": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-5.2.1.tgz",
+ "integrity": "sha1-BA9yaAnFked6F8CjYmykW08Wixo=",
+ "dev": true,
+ "requires": {
+ "import-fresh": "^2.0.0",
+ "is-directory": "^0.3.1",
+ "js-yaml": "^3.13.1",
+ "parse-json": "^4.0.0"
+ },
+ "dependencies": {
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz?cache=0&sync_timestamp=1610966642419&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ }
+ }
+ },
+ "create-ecdh": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.4.tgz?cache=0&sync_timestamp=1596557810113&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcreate-ecdh%2Fdownload%2Fcreate-ecdh-4.0.4.tgz",
+ "integrity": "sha1-1uf0v/pmc2CFoHYv06YyaE2rzE4=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.5.3"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz",
+ "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=",
+ "dev": true
+ }
+ }
+ },
+ "create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/create-hash/download/create-hash-1.2.0.tgz",
+ "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npm.taobao.org/create-hmac/download/create-hmac-1.1.7.tgz",
+ "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz",
+ "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz",
+ "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+ "dev": true
+ }
+ }
+ },
+ "cryptiles": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npm.taobao.org/cryptiles/download/cryptiles-0.2.2.tgz",
+ "integrity": "sha1-7ZH/HxetE9N0gohZT4pIoNJvMlw=",
+ "optional": true,
+ "requires": {
+ "boom": "0.4.x"
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=",
+ "dev": true,
+ "requires": {
+ "browserify-cipher": "^1.0.0",
+ "browserify-sign": "^4.0.0",
+ "create-ecdh": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.0",
+ "diffie-hellman": "^5.0.0",
+ "inherits": "^2.0.1",
+ "pbkdf2": "^3.0.3",
+ "public-encrypt": "^4.0.0",
+ "randombytes": "^2.0.0",
+ "randomfill": "^1.0.3"
+ }
+ },
+ "css-color-names": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz",
+ "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
+ "dev": true
+ },
+ "css-declaration-sorter": {
+ "version": "4.0.1",
+ "resolved": "https://registry.nlark.com/css-declaration-sorter/download/css-declaration-sorter-4.0.1.tgz?cache=0&sync_timestamp=1620754698059&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-declaration-sorter%2Fdownload%2Fcss-declaration-sorter-4.0.1.tgz",
+ "integrity": "sha1-wZiUD2OnbX42wecQGLABchBUyyI=",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.1",
+ "timsort": "^0.3.0"
+ }
+ },
+ "css-line-break": {
+ "version": "2.0.1",
+ "resolved": "https://registry.nlark.com/css-line-break/download/css-line-break-2.0.1.tgz?cache=0&sync_timestamp=1628083455740&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-line-break%2Fdownload%2Fcss-line-break-2.0.1.tgz",
+ "integrity": "sha1-PcdMLtXrZCEUgCgZMkdXkCQ+czg=",
+ "requires": {
+ "base64-arraybuffer": "^0.2.0"
+ },
+ "dependencies": {
+ "base64-arraybuffer": {
+ "version": "0.2.0",
+ "resolved": "https://registry.nlark.com/base64-arraybuffer/download/base64-arraybuffer-0.2.0.tgz?cache=0&sync_timestamp=1628588823959&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbase64-arraybuffer%2Fdownload%2Fbase64-arraybuffer-0.2.0.tgz",
+ "integrity": "sha1-S5RPrAGRqlkHr+LYyZnMxXzoD0U="
+ }
+ }
+ },
+ "css-loader": {
+ "version": "3.6.0",
+ "resolved": "https://registry.nlark.com/css-loader/download/css-loader-3.6.0.tgz",
+ "integrity": "sha1-Lkssfm4tJ/jI8o9hv/zS5ske9kU=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.3.1",
+ "cssesc": "^3.0.0",
+ "icss-utils": "^4.1.1",
+ "loader-utils": "^1.2.3",
+ "normalize-path": "^3.0.0",
+ "postcss": "^7.0.32",
+ "postcss-modules-extract-imports": "^2.0.0",
+ "postcss-modules-local-by-default": "^3.0.2",
+ "postcss-modules-scope": "^2.2.0",
+ "postcss-modules-values": "^3.0.0",
+ "postcss-value-parser": "^4.1.0",
+ "schema-utils": "^2.7.0",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz?cache=0&sync_timestamp=1603921884289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-5.3.1.tgz",
+ "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
+ "dev": true
+ }
+ }
+ },
+ "css-select": {
+ "version": "2.1.0",
+ "resolved": "https://registry.nlark.com/css-select/download/css-select-2.1.0.tgz?cache=0&sync_timestamp=1622994276976&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-select%2Fdownload%2Fcss-select-2.1.0.tgz",
+ "integrity": "sha1-ajRlM1ZjWTSoG6ymjQJVQyEF2+8=",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-what": "^3.2.1",
+ "domutils": "^1.7.0",
+ "nth-check": "^1.0.2"
+ }
+ },
+ "css-select-base-adapter": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npm.taobao.org/css-select-base-adapter/download/css-select-base-adapter-0.1.1.tgz",
+ "integrity": "sha1-Oy/0lyzDYquIVhUHqVQIoUMhNdc=",
+ "dev": true
+ },
+ "css-tree": {
+ "version": "1.0.0-alpha.37",
+ "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.37.tgz",
+ "integrity": "sha1-mL69YsTB2flg7DQM+fdSLjBwmiI=",
+ "dev": true,
+ "requires": {
+ "mdn-data": "2.0.4",
+ "source-map": "^0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
+ "css-what": {
+ "version": "3.4.2",
+ "resolved": "https://registry.nlark.com/css-what/download/css-what-3.4.2.tgz?cache=0&sync_timestamp=1622227760882&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-what%2Fdownload%2Fcss-what-3.4.2.tgz",
+ "integrity": "sha1-6nAm/LAXd+295SEk4h8yfnrpUOQ=",
+ "dev": true
+ },
+ "csscolorparser": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/csscolorparser/download/csscolorparser-1.0.3.tgz",
+ "integrity": "sha1-s085HupNqPPpgjHizNjfnAQfFxs="
+ },
+ "cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-3.0.0.tgz",
+ "integrity": "sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=",
+ "dev": true
+ },
+ "cssnano": {
+ "version": "4.1.11",
+ "resolved": "https://registry.nlark.com/cssnano/download/cssnano-4.1.11.tgz?cache=0&sync_timestamp=1623330447215&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcssnano%2Fdownload%2Fcssnano-4.1.11.tgz",
+ "integrity": "sha1-x7X1uB2iacsf2YLLlgwSAJEMmpk=",
+ "dev": true,
+ "requires": {
+ "cosmiconfig": "^5.0.0",
+ "cssnano-preset-default": "^4.0.8",
+ "is-resolvable": "^1.0.0",
+ "postcss": "^7.0.0"
+ }
+ },
+ "cssnano-preset-default": {
+ "version": "4.0.8",
+ "resolved": "https://registry.nlark.com/cssnano-preset-default/download/cssnano-preset-default-4.0.8.tgz?cache=0&sync_timestamp=1623330413864&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcssnano-preset-default%2Fdownload%2Fcssnano-preset-default-4.0.8.tgz",
+ "integrity": "sha1-kgYisfwelaNOiDggPxOXpQTy0/8=",
+ "dev": true,
+ "requires": {
+ "css-declaration-sorter": "^4.0.1",
+ "cssnano-util-raw-cache": "^4.0.1",
+ "postcss": "^7.0.0",
+ "postcss-calc": "^7.0.1",
+ "postcss-colormin": "^4.0.3",
+ "postcss-convert-values": "^4.0.1",
+ "postcss-discard-comments": "^4.0.2",
+ "postcss-discard-duplicates": "^4.0.2",
+ "postcss-discard-empty": "^4.0.1",
+ "postcss-discard-overridden": "^4.0.1",
+ "postcss-merge-longhand": "^4.0.11",
+ "postcss-merge-rules": "^4.0.3",
+ "postcss-minify-font-values": "^4.0.2",
+ "postcss-minify-gradients": "^4.0.2",
+ "postcss-minify-params": "^4.0.2",
+ "postcss-minify-selectors": "^4.0.2",
+ "postcss-normalize-charset": "^4.0.1",
+ "postcss-normalize-display-values": "^4.0.2",
+ "postcss-normalize-positions": "^4.0.2",
+ "postcss-normalize-repeat-style": "^4.0.2",
+ "postcss-normalize-string": "^4.0.2",
+ "postcss-normalize-timing-functions": "^4.0.2",
+ "postcss-normalize-unicode": "^4.0.1",
+ "postcss-normalize-url": "^4.0.1",
+ "postcss-normalize-whitespace": "^4.0.2",
+ "postcss-ordered-values": "^4.1.2",
+ "postcss-reduce-initial": "^4.0.3",
+ "postcss-reduce-transforms": "^4.0.2",
+ "postcss-svgo": "^4.0.3",
+ "postcss-unique-selectors": "^4.0.1"
+ }
+ },
+ "cssnano-util-get-arguments": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/cssnano-util-get-arguments/download/cssnano-util-get-arguments-4.0.0.tgz",
+ "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=",
+ "dev": true
+ },
+ "cssnano-util-get-match": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/cssnano-util-get-match/download/cssnano-util-get-match-4.0.0.tgz",
+ "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=",
+ "dev": true
+ },
+ "cssnano-util-raw-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npm.taobao.org/cssnano-util-raw-cache/download/cssnano-util-raw-cache-4.0.1.tgz",
+ "integrity": "sha1-sm1f1fcqEd/np4RvtMZyYPlr8oI=",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ }
+ },
+ "cssnano-util-same-parent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npm.taobao.org/cssnano-util-same-parent/download/cssnano-util-same-parent-4.0.1.tgz",
+ "integrity": "sha1-V0CC+yhZ0ttDOFWDXZqEVuoYu/M=",
+ "dev": true
+ },
+ "csso": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npm.taobao.org/csso/download/csso-4.2.0.tgz?cache=0&sync_timestamp=1606408849393&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcsso%2Fdownload%2Fcsso-4.2.0.tgz",
+ "integrity": "sha1-6jpWE0bo3J9UbW/r7dUBh884lSk=",
+ "dev": true,
+ "requires": {
+ "css-tree": "^1.1.2"
+ },
+ "dependencies": {
+ "css-tree": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npm.taobao.org/css-tree/download/css-tree-1.1.3.tgz",
+ "integrity": "sha1-60hw+2/XcHMn7JXC/yqwm16NuR0=",
+ "dev": true,
+ "requires": {
+ "mdn-data": "2.0.14",
+ "source-map": "^0.6.1"
+ }
+ },
+ "mdn-data": {
+ "version": "2.0.14",
+ "resolved": "https://registry.nlark.com/mdn-data/download/mdn-data-2.0.14.tgz",
+ "integrity": "sha1-cRP8QoGRfWPOKbQ0RvcB5owlulA=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
+ "ctype": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npm.taobao.org/ctype/download/ctype-0.5.3.tgz",
+ "integrity": "sha1-gsGMJGH3QRTvFsE1IkrQuRRMoS8=",
+ "optional": true
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npm.taobao.org/currently-unhandled/download/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+ "dev": true,
+ "requires": {
+ "array-find-index": "^1.0.1"
+ }
+ },
+ "cyclist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/cyclist/download/cyclist-1.0.1.tgz",
+ "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
+ "dev": true
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz?cache=0&sync_timestamp=1601073602368&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdashdash%2Fdownload%2Fdashdash-1.14.1.tgz",
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "date-fns": {
+ "version": "1.30.1",
+ "resolved": "https://registry.nlark.com/date-fns/download/date-fns-1.30.1.tgz",
+ "integrity": "sha1-LnG/CxGRU9u0zE6I2epaz7UNwFw="
+ },
+ "dateformat": {
+ "version": "2.2.0",
+ "resolved": "https://registry.nlark.com/dateformat/download/dateformat-2.2.0.tgz",
+ "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI="
+ },
+ "de-indent": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz",
+ "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
+ "dev": true
+ },
+ "debug": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.3.1.tgz?cache=0&sync_timestamp=1607566571506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.3.1.tgz",
+ "integrity": "sha1-8NIpxQXgxtjEmsVT0bE9wYP2su4=",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz?cache=0&sync_timestamp=1610348666353&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdecamelize%2Fdownload%2Fdecamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
+ },
+ "deep-equal": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.1.1.tgz",
+ "integrity": "sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=",
+ "dev": true,
+ "requires": {
+ "is-arguments": "^1.0.4",
+ "is-date-object": "^1.0.1",
+ "is-regex": "^1.0.4",
+ "object-is": "^1.0.1",
+ "object-keys": "^1.1.1",
+ "regexp.prototype.flags": "^1.2.0"
+ }
+ },
+ "deep-is": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz",
+ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+ "dev": true
+ },
+ "deepmerge": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz",
+ "integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M="
+ },
+ "default-gateway": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-5.0.5.tgz?cache=0&sync_timestamp=1610365857779&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdefault-gateway%2Fdownload%2Fdefault-gateway-5.0.5.tgz",
+ "integrity": "sha1-T9a9XShV05s0zFpZUFSG6ar8mxA=",
+ "dev": true,
+ "requires": {
+ "execa": "^3.3.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-7.0.3.tgz",
+ "integrity": "sha1-9zqFudXUHQRVUcF34ogtSshXKKY=",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
+ "execa": {
+ "version": "3.4.0",
+ "resolved": "https://registry.nlark.com/execa/download/execa-3.4.0.tgz",
+ "integrity": "sha1-wI7UVQ72XYWPrCaf/IVyRG8364k=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.0",
+ "get-stream": "^5.0.0",
+ "human-signals": "^1.1.1",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.0",
+ "onetime": "^5.1.0",
+ "p-finally": "^2.0.0",
+ "signal-exit": "^3.0.2",
+ "strip-final-newline": "^2.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-5.2.0.tgz",
+ "integrity": "sha1-SWaheV7lrOZecGxLe+txJX1uItM=",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "is-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-2.0.0.tgz",
+ "integrity": "sha1-venDJoDW+uBBKdasnZIc54FfeOM=",
+ "dev": true
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz",
+ "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=",
+ "dev": true
+ },
+ "npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-4.0.1.tgz",
+ "integrity": "sha1-t+zR5e1T2o43pV4cImnguX7XSOo=",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.0.0"
+ }
+ },
+ "onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.2.tgz",
+ "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
+ "p-finally": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-2.0.1.tgz",
+ "integrity": "sha1-vW/KqcVZoJa2gIBvTWV7Pw8kBWE=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-3.1.1.tgz?cache=0&sync_timestamp=1617971695678&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-key%2Fdownload%2Fpath-key-3.1.1.tgz",
+ "integrity": "sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-2.0.0.tgz",
+ "integrity": "sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-3.0.0.tgz",
+ "integrity": "sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=",
+ "dev": true
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz",
+ "integrity": "sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "defaults": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz",
+ "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
+ "requires": {
+ "clone": "^1.0.2"
+ }
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz",
+ "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=",
+ "dev": true,
+ "requires": {
+ "object-keys": "^1.0.12"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz",
+ "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=",
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+ "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "defined": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/defined/download/defined-1.0.0.tgz",
+ "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM="
+ },
+ "defs": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/defs/download/defs-1.1.1.tgz",
+ "integrity": "sha1-siYJ8sehG6ej2xFoBcE5scr/qdI=",
+ "requires": {
+ "alter": "~0.2.0",
+ "ast-traverse": "~0.1.1",
+ "breakable": "~1.0.0",
+ "esprima-fb": "~15001.1001.0-dev-harmony-fb",
+ "simple-fmt": "~0.1.0",
+ "simple-is": "~0.2.0",
+ "stringmap": "~0.2.2",
+ "stringset": "~0.2.1",
+ "tryor": "~0.1.2",
+ "yargs": "~3.27.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-1.2.1.tgz?cache=0&sync_timestamp=1603921884289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "requires": {
+ "center-align": "^0.1.1",
+ "right-align": "^0.1.1",
+ "wordwrap": "0.0.2"
+ }
+ },
+ "esprima-fb": {
+ "version": "15001.1001.0-dev-harmony-fb",
+ "resolved": "https://registry.npm.taobao.org/esprima-fb/download/esprima-fb-15001.1001.0-dev-harmony-fb.tgz",
+ "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk="
+ },
+ "y18n": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-3.2.2.tgz?cache=0&sync_timestamp=1617822642544&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fy18n%2Fdownload%2Fy18n-3.2.2.tgz",
+ "integrity": "sha1-hckBvWRwznH8S7cjrSCbcPfyhpY="
+ },
+ "yargs": {
+ "version": "3.27.0",
+ "resolved": "https://registry.nlark.com/yargs/download/yargs-3.27.0.tgz?cache=0&sync_timestamp=1620086644940&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs%2Fdownload%2Fyargs-3.27.0.tgz",
+ "integrity": "sha1-ISBUaTFuk5Ex1Z8toMbX+YIh6kA=",
+ "requires": {
+ "camelcase": "^1.2.1",
+ "cliui": "^2.1.0",
+ "decamelize": "^1.0.0",
+ "os-locale": "^1.4.0",
+ "window-size": "^0.1.2",
+ "y18n": "^3.2.0"
+ }
+ }
+ }
+ },
+ "del": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npm.taobao.org/del/download/del-4.1.1.tgz",
+ "integrity": "sha1-no8RciLqRKMf86FWwEm5kFKp8LQ=",
+ "dev": true,
+ "requires": {
+ "@types/glob": "^7.1.1",
+ "globby": "^6.1.0",
+ "is-path-cwd": "^2.0.0",
+ "is-path-in-cwd": "^2.0.0",
+ "p-map": "^2.0.0",
+ "pify": "^4.0.1",
+ "rimraf": "^2.6.3"
+ },
+ "dependencies": {
+ "globby": {
+ "version": "6.1.0",
+ "resolved": "https://registry.nlark.com/globby/download/globby-6.1.0.tgz?cache=0&sync_timestamp=1623850103454&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglobby%2Fdownload%2Fglobby-6.1.0.tgz",
+ "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "glob": "^7.0.3",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz?cache=0&sync_timestamp=1593529716831&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "dev": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz",
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
+ "dev": true
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz",
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+ "dev": true
+ },
+ "deprecated": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npm.taobao.org/deprecated/download/deprecated-0.0.1.tgz",
+ "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk="
+ },
+ "des.js": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/des.js/download/des.js-1.0.1.tgz",
+ "integrity": "sha1-U4IULhvcU/hdhtU+X0qn3rkeCEM=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "destroy": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz",
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+ "dev": true
+ },
+ "detect-indent": {
+ "version": "3.0.1",
+ "resolved": "https://registry.nlark.com/detect-indent/download/detect-indent-3.0.1.tgz?cache=0&sync_timestamp=1622185125989&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdetect-indent%2Fdownload%2Fdetect-indent-3.0.1.tgz",
+ "integrity": "sha1-ncXl3bzu+DJXZLlFGwK8bVQIT3U=",
+ "requires": {
+ "get-stdin": "^4.0.1",
+ "minimist": "^1.1.0",
+ "repeating": "^1.1.0"
+ },
+ "dependencies": {
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npm.taobao.org/get-stdin/download/get-stdin-4.0.1.tgz?cache=0&sync_timestamp=1618557641950&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stdin%2Fdownload%2Fget-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4="
+ },
+ "repeating": {
+ "version": "1.1.3",
+ "resolved": "https://registry.nlark.com/repeating/download/repeating-1.1.3.tgz",
+ "integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=",
+ "requires": {
+ "is-finite": "^1.0.0"
+ }
+ }
+ }
+ },
+ "detect-node": {
+ "version": "2.1.0",
+ "resolved": "https://registry.nlark.com/detect-node/download/detect-node-2.1.0.tgz?cache=0&sync_timestamp=1621146902208&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdetect-node%2Fdownload%2Fdetect-node-2.1.0.tgz",
+ "integrity": "sha1-yccHdaScPQO8LAbZpzvlUPl4+LE=",
+ "dev": true
+ },
+ "detective": {
+ "version": "4.7.1",
+ "resolved": "https://registry.npm.taobao.org/detective/download/detective-4.7.1.tgz",
+ "integrity": "sha1-DspzFDOEQv67bWXaVMELscgrJG4=",
+ "requires": {
+ "acorn": "^5.2.1",
+ "defined": "^1.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "5.7.4",
+ "resolved": "https://registry.nlark.com/acorn/download/acorn-5.7.4.tgz",
+ "integrity": "sha1-Po2KmUfQWZoXltECJddDL0pKz14="
+ }
+ }
+ },
+ "diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npm.taobao.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz",
+ "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=",
+ "dev": true
+ }
+ }
+ },
+ "dir-glob": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npm.taobao.org/dir-glob/download/dir-glob-2.2.2.tgz",
+ "integrity": "sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ=",
+ "dev": true,
+ "requires": {
+ "path-type": "^3.0.0"
+ }
+ },
+ "dns-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/dns-equal/download/dns-equal-1.0.0.tgz",
+ "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
+ "dev": true
+ },
+ "dns-packet": {
+ "version": "1.3.4",
+ "resolved": "https://registry.nlark.com/dns-packet/download/dns-packet-1.3.4.tgz",
+ "integrity": "sha1-40VQZYJKJQe6iGxVqJljuxB97G8=",
+ "dev": true,
+ "requires": {
+ "ip": "^1.1.0",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "dns-txt": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npm.taobao.org/dns-txt/download/dns-txt-2.0.2.tgz",
+ "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+ "dev": true,
+ "requires": {
+ "buffer-indexof": "^1.0.0"
+ }
+ },
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz",
+ "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "dom-converter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npm.taobao.org/dom-converter/download/dom-converter-0.2.0.tgz",
+ "integrity": "sha1-ZyGp2u4uKTaClVtq/kFncWJ7t2g=",
+ "dev": true,
+ "requires": {
+ "utila": "~0.4"
+ }
+ },
+ "dom-serializer": {
+ "version": "0.2.2",
+ "resolved": "https://registry.nlark.com/dom-serializer/download/dom-serializer-0.2.2.tgz?cache=0&sync_timestamp=1621256918158&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdom-serializer%2Fdownload%2Fdom-serializer-0.2.2.tgz",
+ "integrity": "sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "entities": "^2.0.0"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.2.0.tgz?cache=0&sync_timestamp=1617298554829&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-2.2.0.tgz",
+ "integrity": "sha1-mgtsJ4LtahxzI9QiZxg9+b2LHVc=",
+ "dev": true
+ }
+ }
+ },
+ "dom-walk": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npm.taobao.org/dom-walk/download/dom-walk-0.1.2.tgz",
+ "integrity": "sha1-DFSL7wSPTR8qlySQAiNgYNqj/YQ="
+ },
+ "domain-browser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz?cache=0&sync_timestamp=1604239998047&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomain-browser%2Fdownload%2Fdomain-browser-1.2.0.tgz",
+ "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto="
+ },
+ "domelementtype": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz?cache=0&sync_timestamp=1617298554829&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-1.3.1.tgz",
+ "integrity": "sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=",
+ "dev": true
+ },
+ "domhandler": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npm.taobao.org/domhandler/download/domhandler-4.2.0.tgz?cache=0&sync_timestamp=1618563954924&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomhandler%2Fdownload%2Fdomhandler-4.2.0.tgz",
+ "integrity": "sha1-+XaKXwNL5gqJonwuTQ9066DYsFk=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.2.0"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.2.0.tgz?cache=0&sync_timestamp=1617298554829&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-2.2.0.tgz",
+ "integrity": "sha1-mgtsJ4LtahxzI9QiZxg9+b2LHVc=",
+ "dev": true
+ }
+ }
+ },
+ "domready": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npm.taobao.org/domready/download/domready-1.0.8.tgz",
+ "integrity": "sha1-kfJS5Ze2Wvd+dFriTdAYXV4m1Yw=",
+ "dev": true
+ },
+ "domutils": {
+ "version": "1.7.0",
+ "resolved": "https://registry.nlark.com/domutils/download/domutils-1.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdomutils%2Fdownload%2Fdomutils-1.7.0.tgz",
+ "integrity": "sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npm.taobao.org/dot-prop/download/dot-prop-5.3.0.tgz?cache=0&sync_timestamp=1605778245785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdot-prop%2Fdownload%2Fdot-prop-5.3.0.tgz",
+ "integrity": "sha1-kMzOcIzZzYLMTcjD3dmr3VWyDog=",
+ "dev": true,
+ "requires": {
+ "is-obj": "^2.0.0"
+ }
+ },
+ "dotenv": {
+ "version": "8.6.0",
+ "resolved": "https://registry.nlark.com/dotenv/download/dotenv-8.6.0.tgz",
+ "integrity": "sha1-Bhr2ZNGff02PxuT/m1hM4jety4s=",
+ "dev": true
+ },
+ "dotenv-expand": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npm.taobao.org/dotenv-expand/download/dotenv-expand-5.1.0.tgz",
+ "integrity": "sha1-P7rwIL/XlIhAcuomsel5HUWmKfA=",
+ "dev": true
+ },
+ "duplexer": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.2.tgz",
+ "integrity": "sha1-Or5DrvODX4rgd9E23c4PJ2sEAOY=",
+ "dev": true
+ },
+ "duplexer2": {
+ "version": "0.0.2",
+ "resolved": "https://registry.nlark.com/duplexer2/download/duplexer2-0.0.2.tgz",
+ "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
+ "requires": {
+ "readable-stream": "~1.1.9"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-1.1.14.tgz",
+ "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ }
+ }
+ },
+ "duplexify": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npm.taobao.org/duplexify/download/duplexify-3.7.1.tgz",
+ "integrity": "sha1-Kk31MX9sz9kfhtb9JdjYoQO4gwk=",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "easy-stack": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/easy-stack/download/easy-stack-1.0.1.tgz",
+ "integrity": "sha1-iv5CZGJpiMq7EfPHBMzQyDVBEGY=",
+ "dev": true
+ },
+ "ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+ "dev": true,
+ "requires": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "echarts": {
+ "version": "4.9.0",
+ "resolved": "https://registry.nlark.com/echarts/download/echarts-4.9.0.tgz?cache=0&sync_timestamp=1623167264935&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fecharts%2Fdownload%2Fecharts-4.9.0.tgz",
+ "integrity": "sha1-qbm6oD8Doqcx5jQMVb77V6nhNH0=",
+ "requires": {
+ "zrender": "4.3.2"
+ }
+ },
+ "echarts-amap": {
+ "version": "1.0.0-rc.6",
+ "resolved": "https://registry.npm.taobao.org/echarts-amap/download/echarts-amap-1.0.0-rc.6.tgz",
+ "integrity": "sha1-V4KnTa7lLtRM4/j2JXdWF4PwnhY="
+ },
+ "echarts-liquidfill": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npm.taobao.org/echarts-liquidfill/download/echarts-liquidfill-2.0.6.tgz",
+ "integrity": "sha1-BmjcYdh6YmIAMJC9MsVaqBCMJS4="
+ },
+ "echarts-wordcloud": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npm.taobao.org/echarts-wordcloud/download/echarts-wordcloud-1.1.3.tgz?cache=0&sync_timestamp=1610777507090&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fecharts-wordcloud%2Fdownload%2Fecharts-wordcloud-1.1.3.tgz",
+ "integrity": "sha1-B7FAyLp2sZwxe0PDEPPV3Jkon/I="
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+ "dev": true
+ },
+ "ejs": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npm.taobao.org/ejs/download/ejs-2.7.4.tgz",
+ "integrity": "sha1-SGYSh1c9zFPjZsehrlLDoSDuybo=",
+ "dev": true
+ },
+ "electron-to-chromium": {
+ "version": "1.3.759",
+ "resolved": "https://registry.nlark.com/electron-to-chromium/download/electron-to-chromium-1.3.759.tgz?cache=0&sync_timestamp=1624658662388&other_urls=https%3A%2F%2Fregistry.nlark.com%2Felectron-to-chromium%2Fdownload%2Felectron-to-chromium-1.3.759.tgz",
+ "integrity": "sha1-sNZS03aDFHCkwjC6ch2iQnv7mWo=",
+ "dev": true
+ },
+ "element-ui": {
+ "version": "2.15.2",
+ "resolved": "https://registry.nlark.com/element-ui/download/element-ui-2.15.2.tgz",
+ "integrity": "sha1-G0xK9YKjcGHefYFGBHo08AmbUsw=",
+ "requires": {
+ "async-validator": "~1.8.1",
+ "babel-helper-vue-jsx-merge-props": "^2.0.0",
+ "deepmerge": "^1.2.0",
+ "normalize-wheel": "^1.0.1",
+ "resize-observer-polyfill": "^1.5.0",
+ "throttle-debounce": "^1.0.1"
+ }
+ },
+ "elliptic": {
+ "version": "6.5.4",
+ "resolved": "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.4.tgz",
+ "integrity": "sha1-2jfOvTHnmhNn6UG1ku0fvr1Yq7s=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.11.9",
+ "brorand": "^1.1.0",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.1",
+ "inherits": "^2.0.4",
+ "minimalistic-assert": "^1.0.1",
+ "minimalistic-crypto-utils": "^1.0.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz",
+ "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=",
+ "dev": true
+ }
+ }
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz",
+ "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=",
+ "dev": true
+ },
+ "emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-3.0.0.tgz",
+ "integrity": "sha1-VXBmIEatKeLpFucariYKvf9Pang=",
+ "dev": true
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+ "dev": true
+ },
+ "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=",
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "engine.io-client": {
+ "version": "5.1.2",
+ "resolved": "https://registry.nlark.com/engine.io-client/download/engine.io-client-5.1.2.tgz",
+ "integrity": "sha1-JxCNqbOa4DJiRD2UXK8sqjZVxMs=",
+ "requires": {
+ "base64-arraybuffer": "0.1.4",
+ "component-emitter": "~1.3.0",
+ "debug": "~4.3.1",
+ "engine.io-parser": "~4.0.1",
+ "has-cors": "1.1.0",
+ "parseqs": "0.0.6",
+ "parseuri": "0.0.6",
+ "ws": "~7.4.2",
+ "yeast": "0.1.2"
+ },
+ "dependencies": {
+ "ws": {
+ "version": "7.4.6",
+ "resolved": "https://registry.nlark.com/ws/download/ws-7.4.6.tgz?cache=0&sync_timestamp=1624943967280&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fws%2Fdownload%2Fws-7.4.6.tgz",
+ "integrity": "sha1-VlTKjs3u5HwzqaS/bSjivimAN3w="
+ }
+ }
+ },
+ "engine.io-parser": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npm.taobao.org/engine.io-parser/download/engine.io-parser-4.0.2.tgz?cache=0&sync_timestamp=1607330710445&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fengine.io-parser%2Fdownload%2Fengine.io-parser-4.0.2.tgz",
+ "integrity": "sha1-5B0LP7Zve/SjZx0gOKFUAk7bUB4=",
+ "requires": {
+ "base64-arraybuffer": "0.1.4"
+ }
+ },
+ "enhanced-resolve": {
+ "version": "4.5.0",
+ "resolved": "https://registry.nlark.com/enhanced-resolve/download/enhanced-resolve-4.5.0.tgz",
+ "integrity": "sha1-Lzz9hNvjtIfxjy2y7x4GSlccpew=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "memory-fs": "^0.5.0",
+ "tapable": "^1.0.0"
+ },
+ "dependencies": {
+ "memory-fs": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.5.0.tgz",
+ "integrity": "sha1-MkwBKIuIZSlm0WHbd4OHIIRajjw=",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ }
+ }
+ },
+ "entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npm.taobao.org/entities/download/entities-2.2.0.tgz",
+ "integrity": "sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU=",
+ "dev": true
+ },
+ "errno": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.8.tgz",
+ "integrity": "sha1-i7Ppx9Rjvkl2/4iPdrSAnrwugR8=",
+ "requires": {
+ "prr": "~1.0.1"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npm.taobao.org/error-ex/download/error-ex-1.3.2.tgz",
+ "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "error-stack-parser": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npm.taobao.org/error-stack-parser/download/error-stack-parser-2.0.6.tgz",
+ "integrity": "sha1-WpmnB716TFinl5AtSNgoA+3mqtg=",
+ "dev": true,
+ "requires": {
+ "stackframe": "^1.1.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.18.3",
+ "resolved": "https://registry.nlark.com/es-abstract/download/es-abstract-1.18.3.tgz?cache=0&sync_timestamp=1622157901871&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fes-abstract%2Fdownload%2Fes-abstract-1.18.3.tgz",
+ "integrity": "sha1-JcTDOAonqiA8RLK2hbupTaMbY+A=",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.2",
+ "is-callable": "^1.2.3",
+ "is-negative-zero": "^2.0.1",
+ "is-regex": "^1.1.3",
+ "is-string": "^1.0.6",
+ "object-inspect": "^1.10.3",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.2",
+ "string.prototype.trimend": "^1.0.4",
+ "string.prototype.trimstart": "^1.0.4",
+ "unbox-primitive": "^1.0.1"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "es5-shim": {
+ "version": "4.5.15",
+ "resolved": "https://registry.npm.taobao.org/es5-shim/download/es5-shim-4.5.15.tgz?cache=0&sync_timestamp=1609855661066&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fes5-shim%2Fdownload%2Fes5-shim-4.5.15.tgz",
+ "integrity": "sha1-aiaGmyYYVKOwRSc/VYPFLTkCF/4="
+ },
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npm.taobao.org/escalade/download/escalade-3.1.1.tgz",
+ "integrity": "sha1-2M/ccACWXFoBdLSoLqpcBVJ0LkA=",
+ "dev": true
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz",
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+ },
+ "eslint": {
+ "version": "6.8.0",
+ "resolved": "https://registry.nlark.com/eslint/download/eslint-6.8.0.tgz",
+ "integrity": "sha1-YiYtZylzn5J1cjgkMC+yJ8jJP/s=",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.10.0",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "eslint-scope": "^5.0.0",
+ "eslint-utils": "^1.4.3",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.1.2",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^5.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.0.0",
+ "globals": "^12.1.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^7.0.0",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.14",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.3",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.1",
+ "semver": "^6.1.2",
+ "strip-ansi": "^5.2.0",
+ "strip-json-comments": "^3.0.1",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "dependencies": {
+ "eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.1.1.tgz",
+ "integrity": "sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw=",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "globals": {
+ "version": "12.4.0",
+ "resolved": "https://registry.nlark.com/globals/download/globals-12.4.0.tgz?cache=0&sync_timestamp=1622088114568&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglobals%2Fdownload%2Fglobals-12.4.0.tgz",
+ "integrity": "sha1-oYgTV2pBsAokqX5/gVkYwuGZJfg=",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.8.1"
+ }
+ },
+ "import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.3.0.tgz?cache=0&sync_timestamp=1608469472392&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-3.3.0.tgz",
+ "integrity": "sha1-NxYsJfy566oublPVtNiM4X2eDCs=",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz",
+ "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz",
+ "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.nlark.com/type-fest/download/type-fest-0.8.1.tgz?cache=0&sync_timestamp=1623872995368&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftype-fest%2Fdownload%2Ftype-fest-0.8.1.tgz",
+ "integrity": "sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-config-prettier": {
+ "version": "6.15.0",
+ "resolved": "https://registry.nlark.com/eslint-config-prettier/download/eslint-config-prettier-6.15.0.tgz",
+ "integrity": "sha1-f5P2y31FqS8VN6cOzAY2bhrG/tk=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "^6.0.0"
+ }
+ },
+ "eslint-loader": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npm.taobao.org/eslint-loader/download/eslint-loader-2.2.1.tgz",
+ "integrity": "sha1-KLnBLaVAV68IReKmEScBova/gzc=",
+ "dev": true,
+ "requires": {
+ "loader-fs-cache": "^1.0.0",
+ "loader-utils": "^1.0.2",
+ "object-assign": "^4.0.1",
+ "object-hash": "^1.1.4",
+ "rimraf": "^2.6.1"
+ }
+ },
+ "eslint-plugin-prettier": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npm.taobao.org/eslint-plugin-prettier/download/eslint-plugin-prettier-3.4.0.tgz",
+ "integrity": "sha1-zbrTvx29Kxd+mCVzf+Y7R2oI8Mc=",
+ "dev": true,
+ "requires": {
+ "prettier-linter-helpers": "^1.0.0"
+ }
+ },
+ "eslint-plugin-vue": {
+ "version": "6.2.2",
+ "resolved": "https://registry.nlark.com/eslint-plugin-vue/download/eslint-plugin-vue-6.2.2.tgz?cache=0&sync_timestamp=1624613641415&other_urls=https%3A%2F%2Fregistry.nlark.com%2Feslint-plugin-vue%2Fdownload%2Feslint-plugin-vue-6.2.2.tgz",
+ "integrity": "sha1-J/7NmjokeJsPER7N1UCp5WGY4P4=",
+ "dev": true,
+ "requires": {
+ "natural-compare": "^1.4.0",
+ "semver": "^5.6.0",
+ "vue-eslint-parser": "^7.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz",
+ "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+ "dev": true
+ }
+ }
+ },
+ "eslint-scope": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-4.0.3.tgz",
+ "integrity": "sha1-ygODMxD2iJoyZHgaqC5j65z+eEg=",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint-utils": {
+ "version": "1.4.3",
+ "resolved": "https://registry.nlark.com/eslint-utils/download/eslint-utils-1.4.3.tgz?cache=0&sync_timestamp=1620975524854&other_urls=https%3A%2F%2Fregistry.nlark.com%2Feslint-utils%2Fdownload%2Feslint-utils-1.4.3.tgz",
+ "integrity": "sha1-dP7HxU0Hdrb2fgJRBAtYBlZOmB8=",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.3.0",
+ "resolved": "https://registry.nlark.com/eslint-visitor-keys/download/eslint-visitor-keys-1.3.0.tgz?cache=0&sync_timestamp=1624559054225&other_urls=https%3A%2F%2Fregistry.nlark.com%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-1.3.0.tgz",
+ "integrity": "sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=",
+ "dev": true
+ },
+ "espree": {
+ "version": "6.2.1",
+ "resolved": "https://registry.nlark.com/espree/download/espree-6.2.1.tgz",
+ "integrity": "sha1-d/xy4f10SiBSwg84pbV1gy6Cc0o=",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.1.1",
+ "acorn-jsx": "^5.2.0",
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.nlark.com/acorn/download/acorn-7.4.1.tgz",
+ "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
+ "dev": true
+ }
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz",
+ "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=",
+ "dev": true
+ },
+ "esquery": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npm.taobao.org/esquery/download/esquery-1.4.0.tgz",
+ "integrity": "sha1-IUj/w4uC6McFff7UhCWz5h8PJKU=",
+ "dev": true,
+ "requires": {
+ "estraverse": "^5.1.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz",
+ "integrity": "sha1-MH30JUfmzHMk088DwVXVzbjFOIA=",
+ "dev": true
+ }
+ }
+ },
+ "esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.3.0.tgz",
+ "integrity": "sha1-eteWTWeauyi+5yzsY3WLHF0smSE=",
+ "dev": true,
+ "requires": {
+ "estraverse": "^5.2.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz",
+ "integrity": "sha1-MH30JUfmzHMk088DwVXVzbjFOIA=",
+ "dev": true
+ }
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz",
+ "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz",
+ "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q="
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz",
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+ "dev": true
+ },
+ "event-pubsub": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npm.taobao.org/event-pubsub/download/event-pubsub-4.3.0.tgz?cache=0&sync_timestamp=1606361604403&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fevent-pubsub%2Fdownload%2Fevent-pubsub-4.3.0.tgz",
+ "integrity": "sha1-9o2Ba8KfHsAsU53FjI3UDOcss24=",
+ "dev": true
+ },
+ "eventemitter3": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-4.0.7.tgz?cache=0&sync_timestamp=1598517819668&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventemitter3%2Fdownload%2Feventemitter3-4.0.7.tgz",
+ "integrity": "sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8=",
+ "dev": true
+ },
+ "events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npm.taobao.org/events/download/events-3.3.0.tgz",
+ "integrity": "sha1-Mala0Kkk4tLEGagTrrLE6HjqdAA=",
+ "dev": true
+ },
+ "eventsource": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/eventsource/download/eventsource-1.1.0.tgz?cache=0&sync_timestamp=1616041710425&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventsource%2Fdownload%2Feventsource-1.1.0.tgz",
+ "integrity": "sha1-AOjKfJIQnpSw3fMtrGd9hBAoz68=",
+ "dev": true,
+ "requires": {
+ "original": "^1.0.0"
+ }
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/evp_bytestokey/download/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=",
+ "dev": true,
+ "requires": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.nlark.com/execa/download/execa-1.0.0.tgz",
+ "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566571506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+ "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433872491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "expand-range": {
+ "version": "1.8.2",
+ "resolved": "https://registry.npm.taobao.org/expand-range/download/expand-range-1.8.2.tgz",
+ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
+ "requires": {
+ "fill-range": "^2.1.0"
+ },
+ "dependencies": {
+ "fill-range": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-2.2.4.tgz",
+ "integrity": "sha1-6x53OrsFbc2N8r/favWbizqTZWU=",
+ "requires": {
+ "is-number": "^2.1.0",
+ "isobject": "^2.0.0",
+ "randomatic": "^3.0.0",
+ "repeat-element": "^1.1.2",
+ "repeat-string": "^1.5.2"
+ }
+ },
+ "is-number": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-2.1.0.tgz",
+ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "express": {
+ "version": "4.17.1",
+ "resolved": "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz?cache=0&sync_timestamp=1596722127254&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexpress%2Fdownload%2Fexpress-4.17.1.tgz",
+ "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.7",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.19.0",
+ "content-disposition": "0.5.3",
+ "content-type": "~1.0.4",
+ "cookie": "0.4.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "~1.1.2",
+ "fresh": "0.5.2",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.5",
+ "qs": "6.7.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.1.2",
+ "send": "0.17.1",
+ "serve-static": "1.14.1",
+ "setprototypeof": "1.1.1",
+ "statuses": "~1.5.0",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566571506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+ "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433872491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.7.0",
+ "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&sync_timestamp=1616385315895&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz",
+ "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=",
+ "dev": true
+ }
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz",
+ "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=",
+ "dev": true
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz",
+ "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/external-editor/download/external-editor-3.1.0.tgz",
+ "integrity": "sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz",
+ "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+ "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz",
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+ "dev": true
+ },
+ "fancy-log": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npm.taobao.org/fancy-log/download/fancy-log-1.3.3.tgz",
+ "integrity": "sha1-28GRVPVYaQFQojlToK29A1vkX8c=",
+ "requires": {
+ "ansi-gray": "^0.1.1",
+ "color-support": "^1.1.3",
+ "parse-node-version": "^1.0.0",
+ "time-stamp": "^1.0.0"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=",
+ "dev": true
+ },
+ "fast-diff": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/fast-diff/download/fast-diff-1.2.0.tgz",
+ "integrity": "sha1-c+4RmC2Gyq95WYKNUZz+kn+sXwM=",
+ "dev": true
+ },
+ "fast-glob": {
+ "version": "2.2.7",
+ "resolved": "https://registry.nlark.com/fast-glob/download/fast-glob-2.2.7.tgz",
+ "integrity": "sha1-aVOFfDr6R1//ku5gFdUtpwpM050=",
+ "dev": true,
+ "requires": {
+ "@mrmlnc/readdir-enhanced": "^2.2.1",
+ "@nodelib/fs.stat": "^1.1.2",
+ "glob-parent": "^3.1.0",
+ "is-glob": "^4.0.0",
+ "merge2": "^1.2.3",
+ "micromatch": "^3.1.10"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ }
+ }
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=",
+ "dev": true
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz?cache=0&sync_timestamp=1605292839055&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-levenshtein%2Fdownload%2Ffast-levenshtein-2.0.6.tgz",
+ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "dev": true
+ },
+ "faye-websocket": {
+ "version": "0.11.4",
+ "resolved": "https://registry.nlark.com/faye-websocket/download/faye-websocket-0.11.4.tgz",
+ "integrity": "sha1-fw2Sdc/dhqHJY9yLZfzEUe3Lsdo=",
+ "dev": true,
+ "requires": {
+ "websocket-driver": ">=0.5.1"
+ }
+ },
+ "figgy-pudding": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.2.tgz",
+ "integrity": "sha1-tO7oFIq7Adzx0aw0Nn1Z4S+mHW4=",
+ "dev": true
+ },
+ "figures": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npm.taobao.org/figures/download/figures-3.2.0.tgz",
+ "integrity": "sha1-YlwYvSk8YE3EqN2y/r8MiDQXRq8=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "file-entry-cache": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^2.0.1"
+ }
+ },
+ "file-loader": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npm.taobao.org/file-loader/download/file-loader-4.3.0.tgz",
+ "integrity": "sha1-eA8ED3KbPRgBnyBgX3I+hEuKWK8=",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.2.3",
+ "schema-utils": "^2.5.0"
+ }
+ },
+ "file-uri-to-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/file-uri-to-path/download/file-uri-to-path-1.0.0.tgz",
+ "integrity": "sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=",
+ "optional": true
+ },
+ "filename-regex": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/filename-regex/download/filename-regex-2.0.1.tgz",
+ "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY="
+ },
+ "filesize": {
+ "version": "3.6.1",
+ "resolved": "https://registry.nlark.com/filesize/download/filesize-3.6.1.tgz",
+ "integrity": "sha1-CQuz7gG2+AGoqL6Z0xcQs0Irsxc=",
+ "dev": true
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "finalhandler": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz",
+ "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.3",
+ "statuses": "~1.5.0",
+ "unpipe": "~1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566571506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+ "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433872491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "find-cache-dir": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-3.3.1.tgz",
+ "integrity": "sha1-ibM/rUpGcNqpT4Vff74x1thP6IA=",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^3.0.2",
+ "pkg-dir": "^4.1.0"
+ }
+ },
+ "find-index": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npm.taobao.org/find-index/download/find-index-0.1.1.tgz",
+ "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ="
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-4.1.0.tgz",
+ "integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "findup-sync": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npm.taobao.org/findup-sync/download/findup-sync-0.1.3.tgz",
+ "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=",
+ "requires": {
+ "glob": "~3.2.9",
+ "lodash": "~2.4.1"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "3.2.11",
+ "resolved": "https://registry.nlark.com/glob/download/glob-3.2.11.tgz?cache=0&sync_timestamp=1620337382269&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob%2Fdownload%2Fglob-3.2.11.tgz",
+ "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
+ "requires": {
+ "inherits": "2",
+ "minimatch": "0.3"
+ }
+ },
+ "lodash": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-2.4.2.tgz?cache=0&sync_timestamp=1613835817439&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-2.4.2.tgz",
+ "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4="
+ },
+ "lru-cache": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-2.7.3.tgz",
+ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI="
+ },
+ "minimatch": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-0.3.0.tgz",
+ "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=",
+ "requires": {
+ "lru-cache": "2",
+ "sigmund": "~1.0.0"
+ }
+ }
+ }
+ },
+ "first-chunk-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/first-chunk-stream/download/first-chunk-stream-1.0.0.tgz",
+ "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04="
+ },
+ "flagged-respawn": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npm.taobao.org/flagged-respawn/download/flagged-respawn-0.3.2.tgz",
+ "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU="
+ },
+ "flat-cache": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/flat-cache/download/flat-cache-2.0.1.tgz",
+ "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=",
+ "dev": true,
+ "requires": {
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz",
+ "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "flatted": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npm.taobao.org/flatted/download/flatted-2.0.2.tgz?cache=0&sync_timestamp=1611059459175&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fflatted%2Fdownload%2Fflatted-2.0.2.tgz",
+ "integrity": "sha1-RXWyHivO50NKqb5mL0t7X5wrUTg=",
+ "dev": true
+ },
+ "flush-write-stream": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/flush-write-stream/download/flush-write-stream-1.1.1.tgz",
+ "integrity": "sha1-jdfYc6G6vCB9lOrQwuDkQnbr8ug=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.3.6"
+ }
+ },
+ "follow-redirects": {
+ "version": "1.14.1",
+ "resolved": "https://registry.nlark.com/follow-redirects/download/follow-redirects-1.14.1.tgz?cache=0&sync_timestamp=1620555292056&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffollow-redirects%2Fdownload%2Ffollow-redirects-1.14.1.tgz",
+ "integrity": "sha1-2RFN7Qoc/dM04WTmZirQK/2R/0M="
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
+ },
+ "for-own": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npm.taobao.org/for-own/download/for-own-0.1.5.tgz",
+ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
+ "requires": {
+ "for-in": "^1.0.1"
+ }
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz",
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+ "dev": true
+ },
+ "form-data": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz?cache=0&sync_timestamp=1613410812604&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fform-data%2Fdownload%2Fform-data-2.3.3.tgz",
+ "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=",
+ "dev": true,
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.nlark.com/forwarded/download/forwarded-0.2.0.tgz?cache=0&sync_timestamp=1622503508967&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fforwarded%2Fdownload%2Fforwarded-0.2.0.tgz",
+ "integrity": "sha1-ImmTZCiq1MFcfr6XeahL8LKoGBE=",
+ "dev": true
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz",
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+ "dev": true
+ },
+ "from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npm.taobao.org/from2/download/from2-2.3.0.tgz",
+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ }
+ },
+ "fs-extra": {
+ "version": "7.0.1",
+ "resolved": "https://registry.nlark.com/fs-extra/download/fs-extra-7.0.1.tgz",
+ "integrity": "sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "fs-readdir-recursive": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npm.taobao.org/fs-readdir-recursive/download/fs-readdir-recursive-0.1.2.tgz",
+ "integrity": "sha1-MVtPuMHKW4xH3v7zGdBz2tNWgFk="
+ },
+ "fs-write-stream-atomic": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npm.taobao.org/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz",
+ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "iferr": "^0.1.5",
+ "imurmurhash": "^0.1.4",
+ "readable-stream": "1 || 2"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-2.3.2.tgz",
+ "integrity": "sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro=",
+ "dev": true,
+ "optional": true
+ },
+ "fstream": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npm.taobao.org/fstream/download/fstream-1.0.12.tgz",
+ "integrity": "sha1-Touo7i1Ivk99DeUFRVVI6uWTIEU=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "inherits": "~2.0.0",
+ "mkdirp": ">=0.5 0",
+ "rimraf": "2"
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz",
+ "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0="
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "dev": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npm.taobao.org/gauge/download/gauge-2.7.4.tgz",
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz?cache=0&sync_timestamp=1618552489864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz?cache=0&sync_timestamp=1618558751438&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
+ "gaze": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npm.taobao.org/gaze/download/gaze-1.1.3.tgz",
+ "integrity": "sha1-xEFzPhO5J6yMD/C0w7Az8ogSkko=",
+ "dev": true,
+ "requires": {
+ "globule": "^1.0.0"
+ }
+ },
+ "gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npm.taobao.org/gensync/download/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha1-MqbudsPX9S1GsrGuXZP+qFgKJeA=",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz",
+ "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=",
+ "dev": true
+ },
+ "get-intrinsic": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/get-intrinsic/download/get-intrinsic-1.1.1.tgz?cache=0&sync_timestamp=1612364352840&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-intrinsic%2Fdownload%2Fget-intrinsic-1.1.1.tgz",
+ "integrity": "sha1-FfWfN2+FXERpY5SPDSTNNje0q8Y=",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1"
+ }
+ },
+ "get-stdin": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npm.taobao.org/get-stdin/download/get-stdin-6.0.0.tgz",
+ "integrity": "sha1-ngm/cSs2CrkiXoEgSPcf3pyJZXs=",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz",
+ "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz",
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.7",
+ "resolved": "https://registry.nlark.com/glob/download/glob-7.1.7.tgz?cache=0&sync_timestamp=1620337382269&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob%2Fdownload%2Fglob-7.1.7.tgz",
+ "integrity": "sha1-Oxk+kjPwHULQs/eClLvutBj5SpA=",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-base": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npm.taobao.org/glob-base/download/glob-base-0.3.0.tgz",
+ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
+ "requires": {
+ "glob-parent": "^2.0.0",
+ "is-glob": "^2.0.0"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-2.0.0.tgz",
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "requires": {
+ "is-glob": "^2.0.0"
+ }
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "requires": {
+ "is-extglob": "^1.0.0"
+ }
+ }
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-5.1.2.tgz",
+ "integrity": "sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "glob-stream": {
+ "version": "3.1.18",
+ "resolved": "https://registry.npm.taobao.org/glob-stream/download/glob-stream-3.1.18.tgz",
+ "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=",
+ "requires": {
+ "glob": "^4.3.1",
+ "glob2base": "^0.0.12",
+ "minimatch": "^2.0.1",
+ "ordered-read-streams": "^0.1.0",
+ "through2": "^0.6.1",
+ "unique-stream": "^1.0.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "4.5.3",
+ "resolved": "https://registry.nlark.com/glob/download/glob-4.5.3.tgz?cache=0&sync_timestamp=1620337382269&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob%2Fdownload%2Fglob-4.5.3.tgz",
+ "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=",
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^2.0.1",
+ "once": "^1.3.0"
+ }
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "minimatch": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-2.0.10.tgz",
+ "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
+ "requires": {
+ "brace-expansion": "^1.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ },
+ "through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npm.taobao.org/through2/download/through2-0.6.5.tgz",
+ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
+ "requires": {
+ "readable-stream": ">=1.0.33-1 <1.1.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
+ }
+ }
+ }
+ },
+ "glob-to-regexp": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npm.taobao.org/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz",
+ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
+ "dev": true
+ },
+ "glob-watcher": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npm.taobao.org/glob-watcher/download/glob-watcher-0.0.6.tgz",
+ "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=",
+ "requires": {
+ "gaze": "^0.5.1"
+ },
+ "dependencies": {
+ "gaze": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npm.taobao.org/gaze/download/gaze-0.5.2.tgz",
+ "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=",
+ "requires": {
+ "globule": "~0.1.0"
+ }
+ },
+ "glob": {
+ "version": "3.1.21",
+ "resolved": "https://registry.nlark.com/glob/download/glob-3.1.21.tgz?cache=0&sync_timestamp=1620337382269&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob%2Fdownload%2Fglob-3.1.21.tgz",
+ "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
+ "requires": {
+ "graceful-fs": "~1.2.0",
+ "inherits": "1",
+ "minimatch": "~0.2.11"
+ }
+ },
+ "globule": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npm.taobao.org/globule/download/globule-0.1.0.tgz",
+ "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=",
+ "requires": {
+ "glob": "~3.1.21",
+ "lodash": "~1.0.1",
+ "minimatch": "~0.2.11"
+ }
+ },
+ "graceful-fs": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-1.2.3.tgz",
+ "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q="
+ },
+ "inherits": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-1.0.2.tgz",
+ "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js="
+ },
+ "lodash": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-1.0.2.tgz?cache=0&sync_timestamp=1613835817439&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-1.0.2.tgz",
+ "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE="
+ },
+ "lru-cache": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-2.7.3.tgz",
+ "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI="
+ },
+ "minimatch": {
+ "version": "0.2.14",
+ "resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-0.2.14.tgz",
+ "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
+ "requires": {
+ "lru-cache": "2",
+ "sigmund": "~1.0.0"
+ }
+ }
+ }
+ },
+ "glob2base": {
+ "version": "0.0.12",
+ "resolved": "https://registry.npm.taobao.org/glob2base/download/glob2base-0.0.12.tgz",
+ "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=",
+ "requires": {
+ "find-index": "^0.1.1"
+ }
+ },
+ "global": {
+ "version": "4.3.2",
+ "resolved": "https://registry.nlark.com/global/download/global-4.3.2.tgz",
+ "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=",
+ "requires": {
+ "min-document": "^2.19.0",
+ "process": "~0.5.1"
+ },
+ "dependencies": {
+ "process": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npm.taobao.org/process/download/process-0.5.2.tgz",
+ "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8="
+ }
+ }
+ },
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.nlark.com/globals/download/globals-11.12.0.tgz?cache=0&sync_timestamp=1622088114568&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglobals%2Fdownload%2Fglobals-11.12.0.tgz",
+ "integrity": "sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=",
+ "dev": true
+ },
+ "globby": {
+ "version": "9.2.0",
+ "resolved": "https://registry.nlark.com/globby/download/globby-9.2.0.tgz?cache=0&sync_timestamp=1623850103454&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglobby%2Fdownload%2Fglobby-9.2.0.tgz",
+ "integrity": "sha1-/QKacGxwPSm90XD0tts6P3p8tj0=",
+ "dev": true,
+ "requires": {
+ "@types/glob": "^7.1.1",
+ "array-union": "^1.0.2",
+ "dir-glob": "^2.2.2",
+ "fast-glob": "^2.2.6",
+ "glob": "^7.1.3",
+ "ignore": "^4.0.3",
+ "pify": "^4.0.1",
+ "slash": "^2.0.0"
+ }
+ },
+ "globule": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npm.taobao.org/globule/download/globule-1.3.2.tgz",
+ "integrity": "sha1-2L3Z6eTu+PluJFmZpd7n612FKcQ=",
+ "dev": true,
+ "requires": {
+ "glob": "~7.1.1",
+ "lodash": "~4.17.10",
+ "minimatch": "~3.0.2"
+ }
+ },
+ "glogg": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/glogg/download/glogg-1.0.2.tgz",
+ "integrity": "sha1-LX3XAr7aIus7/634gGltpthGMT8=",
+ "requires": {
+ "sparkles": "^1.0.0"
+ }
+ },
+ "google-maps": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/google-maps/download/google-maps-3.0.0.tgz",
+ "integrity": "sha1-eGrkEoPfccfMxFn0G5KO63LmAso="
+ },
+ "graceful-fs": {
+ "version": "4.2.6",
+ "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.6.tgz",
+ "integrity": "sha1-/wQLKwhTsjw9MQJ1I3BvGIXXa+4="
+ },
+ "gulp": {
+ "version": "3.8.10",
+ "resolved": "https://registry.nlark.com/gulp/download/gulp-3.8.10.tgz",
+ "integrity": "sha1-v7j8FWvpeCDwKn+LOvYahmZvnjE=",
+ "requires": {
+ "archy": "^1.0.0",
+ "chalk": "^0.5.0",
+ "deprecated": "^0.0.1",
+ "gulp-util": "^3.0.0",
+ "interpret": "^0.3.2",
+ "liftoff": "^0.13.2",
+ "minimist": "^1.1.0",
+ "orchestrator": "^0.3.0",
+ "pretty-hrtime": "^0.2.0",
+ "semver": "^4.1.0",
+ "tildify": "^1.0.0",
+ "v8flags": "^1.0.1",
+ "vinyl-fs": "^0.3.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "0.2.1",
+ "resolved": "https://registry.nlark.com/ansi-regex/download/ansi-regex-0.2.1.tgz",
+ "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk="
+ },
+ "ansi-styles": {
+ "version": "1.1.0",
+ "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-1.1.0.tgz?cache=0&sync_timestamp=1618995778321&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-1.1.0.tgz",
+ "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94="
+ },
+ "chalk": {
+ "version": "0.5.1",
+ "resolved": "https://registry.nlark.com/chalk/download/chalk-0.5.1.tgz?cache=0&sync_timestamp=1618995355917&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-0.5.1.tgz",
+ "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=",
+ "requires": {
+ "ansi-styles": "^1.1.0",
+ "escape-string-regexp": "^1.0.0",
+ "has-ansi": "^0.1.0",
+ "strip-ansi": "^0.3.0",
+ "supports-color": "^0.2.0"
+ }
+ },
+ "has-ansi": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npm.taobao.org/has-ansi/download/has-ansi-0.1.0.tgz",
+ "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=",
+ "requires": {
+ "ansi-regex": "^0.2.0"
+ }
+ },
+ "semver": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npm.taobao.org/semver/download/semver-4.3.6.tgz?cache=0&sync_timestamp=1616463641178&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-4.3.6.tgz",
+ "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto="
+ },
+ "strip-ansi": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-0.3.0.tgz?cache=0&sync_timestamp=1618553299612&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-0.3.0.tgz",
+ "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=",
+ "requires": {
+ "ansi-regex": "^0.2.1"
+ }
+ },
+ "supports-color": {
+ "version": "0.2.0",
+ "resolved": "https://registry.nlark.com/supports-color/download/supports-color-0.2.0.tgz?cache=0&sync_timestamp=1622293579301&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-0.2.0.tgz",
+ "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo="
+ }
+ }
+ },
+ "gulp-util": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npm.taobao.org/gulp-util/download/gulp-util-3.0.8.tgz",
+ "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=",
+ "requires": {
+ "array-differ": "^1.0.0",
+ "array-uniq": "^1.0.2",
+ "beeper": "^1.0.0",
+ "chalk": "^1.0.0",
+ "dateformat": "^2.0.0",
+ "fancy-log": "^1.1.0",
+ "gulplog": "^1.0.0",
+ "has-gulplog": "^0.1.0",
+ "lodash._reescape": "^3.0.0",
+ "lodash._reevaluate": "^3.0.0",
+ "lodash._reinterpolate": "^3.0.0",
+ "lodash.template": "^3.0.0",
+ "minimist": "^1.1.0",
+ "multipipe": "^0.1.2",
+ "object-assign": "^3.0.0",
+ "replace-ext": "0.0.1",
+ "through2": "^2.0.0",
+ "vinyl": "^0.5.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.nlark.com/ansi-regex/download/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&sync_timestamp=1618995778321&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.nlark.com/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1618995355917&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "object-assign": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/object-assign/download/object-assign-3.0.0.tgz",
+ "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I="
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618553299612&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.nlark.com/supports-color/download/supports-color-2.0.0.tgz?cache=0&sync_timestamp=1622293579301&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+ }
+ }
+ },
+ "gulp-webpack": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npm.taobao.org/gulp-webpack/download/gulp-webpack-1.5.0.tgz",
+ "integrity": "sha1-eqaD/ojALSRhSOJ8cinLa2KJLbo=",
+ "requires": {
+ "gulp-util": ">=3.0.0 <3.1.0-0",
+ "memory-fs": ">=0.2.0 <0.3.0-0",
+ "through": ">=2.3.4 <2.4.0-0",
+ "vinyl": ">=0.5.0 <0.6.0-0",
+ "webpack": ">=1.9.0 <2.0.0-0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "3.3.0",
+ "resolved": "https://registry.nlark.com/acorn/download/acorn-3.3.0.tgz",
+ "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo="
+ },
+ "anymatch": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-1.3.2.tgz",
+ "integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=",
+ "requires": {
+ "micromatch": "^2.1.5",
+ "normalize-path": "^2.0.0"
+ }
+ },
+ "arr-diff": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/arr-diff/download/arr-diff-2.0.0.tgz",
+ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
+ "requires": {
+ "arr-flatten": "^1.0.1"
+ }
+ },
+ "array-unique": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npm.taobao.org/array-unique/download/array-unique-0.2.1.tgz",
+ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM="
+ },
+ "async": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npm.taobao.org/async/download/async-1.5.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync%2Fdownload%2Fasync-1.5.2.tgz",
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
+ },
+ "big.js": {
+ "version": "3.2.0",
+ "resolved": "https://registry.nlark.com/big.js/download/big.js-3.2.0.tgz?cache=0&sync_timestamp=1620132748267&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbig.js%2Fdownload%2Fbig.js-3.2.0.tgz",
+ "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4="
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz?cache=0&sync_timestamp=1610299268308&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-1.13.1.tgz",
+ "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U="
+ },
+ "braces": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npm.taobao.org/braces/download/braces-1.8.5.tgz",
+ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+ "requires": {
+ "expand-range": "^1.8.1",
+ "preserve": "^0.2.0",
+ "repeat-element": "^1.1.2"
+ }
+ },
+ "browserify-aes": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npm.taobao.org/browserify-aes/download/browserify-aes-0.4.0.tgz",
+ "integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=",
+ "requires": {
+ "inherits": "^2.0.1"
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npm.taobao.org/browserify-zlib/download/browserify-zlib-0.1.4.tgz",
+ "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
+ "requires": {
+ "pako": "~0.2.0"
+ }
+ },
+ "camelcase": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-1.2.1.tgz?cache=0&sync_timestamp=1603921884289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-1.2.1.tgz",
+ "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
+ },
+ "chokidar": {
+ "version": "1.7.0",
+ "resolved": "https://registry.nlark.com/chokidar/download/chokidar-1.7.0.tgz?cache=0&sync_timestamp=1623763551233&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchokidar%2Fdownload%2Fchokidar-1.7.0.tgz",
+ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
+ "requires": {
+ "anymatch": "^1.3.0",
+ "async-each": "^1.0.0",
+ "fsevents": "^1.0.0",
+ "glob-parent": "^2.0.0",
+ "inherits": "^2.0.1",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^2.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.0.0"
+ }
+ },
+ "cliui": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-2.1.0.tgz",
+ "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+ "requires": {
+ "center-align": "^0.1.1",
+ "right-align": "^0.1.1",
+ "wordwrap": "0.0.2"
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.3.0.tgz",
+ "integrity": "sha1-ufx1u0oO1h3PHNXa6W6zDJw+UGw=",
+ "requires": {
+ "browserify-aes": "0.4.0",
+ "pbkdf2-compat": "2.0.1",
+ "ripemd160": "0.2.0",
+ "sha.js": "2.2.6"
+ }
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566571506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+ "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz",
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k="
+ },
+ "enhanced-resolve": {
+ "version": "0.9.1",
+ "resolved": "https://registry.nlark.com/enhanced-resolve/download/enhanced-resolve-0.9.1.tgz",
+ "integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "memory-fs": "^0.2.0",
+ "tapable": "^0.1.8"
+ }
+ },
+ "events": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/events/download/events-1.1.1.tgz",
+ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
+ },
+ "expand-brackets": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-0.1.5.tgz",
+ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
+ "requires": {
+ "is-posix-bracket": "^0.1.0"
+ }
+ },
+ "extglob": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npm.taobao.org/extglob/download/extglob-0.3.2.tgz",
+ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
+ "requires": {
+ "is-extglob": "^1.0.0"
+ }
+ },
+ "fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.13.tgz",
+ "integrity": "sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=",
+ "optional": true,
+ "requires": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ }
+ },
+ "glob-parent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-2.0.0.tgz",
+ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
+ "requires": {
+ "is-glob": "^2.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.nlark.com/has-flag/download/has-flag-1.0.0.tgz?cache=0&sync_timestamp=1618847009337&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhas-flag%2Fdownload%2Fhas-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
+ },
+ "https-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npm.taobao.org/https-browserify/download/https-browserify-0.0.1.tgz",
+ "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI="
+ },
+ "interpret": {
+ "version": "0.6.6",
+ "resolved": "https://registry.npm.taobao.org/interpret/download/interpret-0.6.6.tgz",
+ "integrity": "sha1-/s16GOfOXKar+5U+H4YhOknxYls="
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz",
+ "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0="
+ }
+ }
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz",
+ "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0="
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+ "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz",
+ "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0="
+ }
+ }
+ },
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "requires": {
+ "is-extglob": "^1.0.0"
+ }
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz?cache=0&sync_timestamp=1612146079519&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ },
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-0.2.17.tgz",
+ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "requires": {
+ "big.js": "^3.1.3",
+ "emojis-list": "^2.0.0",
+ "json5": "^0.5.0",
+ "object-assign": "^4.0.1"
+ }
+ },
+ "memory-fs": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.2.0.tgz",
+ "integrity": "sha1-8rslNovBIeORwlIN6Slpyu4KApA="
+ },
+ "micromatch": {
+ "version": "2.3.11",
+ "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-2.3.11.tgz?cache=0&sync_timestamp=1618054787196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-2.3.11.tgz",
+ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
+ "requires": {
+ "arr-diff": "^2.0.0",
+ "array-unique": "^0.2.1",
+ "braces": "^1.8.2",
+ "expand-brackets": "^0.1.4",
+ "extglob": "^0.3.1",
+ "filename-regex": "^2.0.0",
+ "is-extglob": "^1.0.0",
+ "is-glob": "^2.0.1",
+ "kind-of": "^3.0.2",
+ "normalize-path": "^2.0.1",
+ "object.omit": "^2.0.0",
+ "parse-glob": "^3.0.4",
+ "regex-cache": "^0.4.2"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433872491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "node-libs-browser": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npm.taobao.org/node-libs-browser/download/node-libs-browser-0.7.0.tgz",
+ "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=",
+ "requires": {
+ "assert": "^1.1.1",
+ "browserify-zlib": "^0.1.4",
+ "buffer": "^4.9.0",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "^1.0.0",
+ "crypto-browserify": "3.3.0",
+ "domain-browser": "^1.1.1",
+ "events": "^1.0.0",
+ "https-browserify": "0.0.1",
+ "os-browserify": "^0.2.0",
+ "path-browserify": "0.0.0",
+ "process": "^0.11.0",
+ "punycode": "^1.2.4",
+ "querystring-es3": "^0.2.0",
+ "readable-stream": "^2.0.5",
+ "stream-browserify": "^2.0.1",
+ "stream-http": "^2.3.1",
+ "string_decoder": "^0.10.25",
+ "timers-browserify": "^2.0.2",
+ "tty-browserify": "0.0.0",
+ "url": "^0.11.0",
+ "util": "^0.10.3",
+ "vm-browserify": "0.0.4"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ },
+ "os-browserify": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npm.taobao.org/os-browserify/download/os-browserify-0.2.1.tgz",
+ "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8="
+ },
+ "pako": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npm.taobao.org/pako/download/pako-0.2.9.tgz?cache=0&sync_timestamp=1610208860443&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpako%2Fdownload%2Fpako-0.2.9.tgz",
+ "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU="
+ },
+ "path-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npm.taobao.org/path-browserify/download/path-browserify-0.0.0.tgz",
+ "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo="
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-2.2.1.tgz",
+ "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg="
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz",
+ "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz",
+ "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz",
+ "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0="
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz",
+ "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=",
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz",
+ "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0="
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz?cache=0&sync_timestamp=1618054787196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.10.tgz",
+ "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ }
+ }
+ },
+ "ripemd160": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npm.taobao.org/ripemd160/download/ripemd160-0.2.0.tgz",
+ "integrity": "sha1-K/GYveFnys+lHAqSjoS2i74XH84="
+ },
+ "sha.js": {
+ "version": "2.2.6",
+ "resolved": "https://registry.npm.taobao.org/sha.js/download/sha.js-2.2.6.tgz",
+ "integrity": "sha1-F93t3F9yL7ZlAWWIlUYZd4ZzFbo="
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ },
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.nlark.com/supports-color/download/supports-color-3.2.3.tgz?cache=0&sync_timestamp=1622293579301&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-3.2.3.tgz",
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+ "requires": {
+ "has-flag": "^1.0.0"
+ }
+ },
+ "tapable": {
+ "version": "0.1.10",
+ "resolved": "https://registry.npm.taobao.org/tapable/download/tapable-0.1.10.tgz?cache=0&sync_timestamp=1607088902003&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftapable%2Fdownload%2Ftapable-0.1.10.tgz",
+ "integrity": "sha1-KcNXB8K3DlDQdIK10gLo7URtr9Q="
+ },
+ "uglify-js": {
+ "version": "2.7.5",
+ "resolved": "https://registry.nlark.com/uglify-js/download/uglify-js-2.7.5.tgz?cache=0&sync_timestamp=1624812339222&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fuglify-js%2Fdownload%2Fuglify-js-2.7.5.tgz",
+ "integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=",
+ "requires": {
+ "async": "~0.2.6",
+ "source-map": "~0.5.1",
+ "uglify-to-browserify": "~1.0.0",
+ "yargs": "~3.10.0"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npm.taobao.org/async/download/async-0.2.10.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync%2Fdownload%2Fasync-0.2.10.tgz",
+ "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E="
+ }
+ }
+ },
+ "util": {
+ "version": "0.10.4",
+ "resolved": "https://registry.nlark.com/util/download/util-0.10.4.tgz",
+ "integrity": "sha1-OqASW/5mikZy3liFfTrOJ+y3aQE=",
+ "requires": {
+ "inherits": "2.0.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+ }
+ }
+ },
+ "vm-browserify": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-0.0.4.tgz",
+ "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=",
+ "requires": {
+ "indexof": "0.0.1"
+ }
+ },
+ "watchpack": {
+ "version": "0.2.9",
+ "resolved": "https://registry.nlark.com/watchpack/download/watchpack-0.2.9.tgz",
+ "integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=",
+ "requires": {
+ "async": "^0.9.0",
+ "chokidar": "^1.0.0",
+ "graceful-fs": "^4.1.2"
+ },
+ "dependencies": {
+ "async": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npm.taobao.org/async/download/async-0.9.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync%2Fdownload%2Fasync-0.9.2.tgz",
+ "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
+ }
+ }
+ },
+ "webpack": {
+ "version": "1.15.0",
+ "resolved": "https://registry.nlark.com/webpack/download/webpack-1.15.0.tgz",
+ "integrity": "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg=",
+ "requires": {
+ "acorn": "^3.0.0",
+ "async": "^1.3.0",
+ "clone": "^1.0.2",
+ "enhanced-resolve": "~0.9.0",
+ "interpret": "^0.6.4",
+ "loader-utils": "^0.2.11",
+ "memory-fs": "~0.3.0",
+ "mkdirp": "~0.5.0",
+ "node-libs-browser": "^0.7.0",
+ "optimist": "~0.6.0",
+ "supports-color": "^3.1.0",
+ "tapable": "~0.1.8",
+ "uglify-js": "~2.7.3",
+ "watchpack": "^0.2.1",
+ "webpack-core": "~0.6.9"
+ },
+ "dependencies": {
+ "memory-fs": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.3.0.tgz",
+ "integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=",
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ }
+ }
+ },
+ "window-size": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npm.taobao.org/window-size/download/window-size-0.1.0.tgz",
+ "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0="
+ },
+ "yargs": {
+ "version": "3.10.0",
+ "resolved": "https://registry.nlark.com/yargs/download/yargs-3.10.0.tgz?cache=0&sync_timestamp=1620086644940&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs%2Fdownload%2Fyargs-3.10.0.tgz",
+ "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+ "requires": {
+ "camelcase": "^1.0.2",
+ "cliui": "^2.1.0",
+ "decamelize": "^1.0.0",
+ "window-size": "0.1.0"
+ }
+ }
+ }
+ },
+ "gulplog": {
+ "version": "1.0.0",
+ "resolved": "https://registry.nlark.com/gulplog/download/gulplog-1.0.0.tgz",
+ "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
+ "requires": {
+ "glogg": "^1.0.0"
+ }
+ },
+ "gzip-size": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npm.taobao.org/gzip-size/download/gzip-size-5.1.1.tgz?cache=0&sync_timestamp=1605523125680&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fgzip-size%2Fdownload%2Fgzip-size-5.1.1.tgz",
+ "integrity": "sha1-y5vuaS+HwGErIyhAqHOQTkwTUnQ=",
+ "dev": true,
+ "requires": {
+ "duplexer": "^0.1.1",
+ "pify": "^4.0.1"
+ }
+ },
+ "handle-thing": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/handle-thing/download/handle-thing-2.0.1.tgz",
+ "integrity": "sha1-hX95zjWVgMNA1DCBzGSJcNC7I04=",
+ "dev": true
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+ "dev": true
+ },
+ "har-validator": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.5.tgz",
+ "integrity": "sha1-HwgDufjLIMD6E4It8ezds2veHv0=",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.12.3",
+ "har-schema": "^2.0.0"
+ }
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz",
+ "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=",
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz?cache=0&sync_timestamp=1618558073716&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-ansi%2Fdownload%2Fhas-ansi-2.0.0.tgz",
+ "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ }
+ }
+ },
+ "has-bigints": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/has-bigints/download/has-bigints-1.0.1.tgz?cache=0&sync_timestamp=1615461293395&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-bigints%2Fdownload%2Fhas-bigints-1.0.1.tgz",
+ "integrity": "sha1-ZP5qywIGc+O3jbA1pa9pqp0HsRM=",
+ "dev": true
+ },
+ "has-binary2": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/has-binary2/download/has-binary2-1.0.3.tgz",
+ "integrity": "sha1-d3asYn8+p3JQz8My2rfd9eT10R0=",
+ "requires": {
+ "isarray": "2.0.1"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-2.0.1.tgz",
+ "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
+ }
+ }
+ },
+ "has-cors": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/has-cors/download/has-cors-1.1.0.tgz",
+ "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "has-gulplog": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npm.taobao.org/has-gulplog/download/has-gulplog-0.1.0.tgz",
+ "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
+ "requires": {
+ "sparkles": "^1.0.0"
+ }
+ },
+ "has-symbols": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.2.tgz",
+ "integrity": "sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM=",
+ "dev": true
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/has-unicode/download/has-unicode-2.0.1.tgz",
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
+ "dev": true
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "hash-base": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/hash-base/download/hash-base-3.1.0.tgz",
+ "integrity": "sha1-VcOB2eBuHSmXqIO0o/3f5/DTrzM=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "safe-buffer": "^5.2.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz",
+ "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.1.tgz",
+ "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=",
+ "dev": true
+ }
+ }
+ },
+ "hash-sum": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-2.0.0.tgz",
+ "integrity": "sha1-gdAbtd6OpKIUrV1urRtSNGCwtFo=",
+ "dev": true
+ },
+ "hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npm.taobao.org/hash.js/download/hash.js-1.1.7.tgz",
+ "integrity": "sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ }
+ },
+ "hawk": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/hawk/download/hawk-1.1.1.tgz",
+ "integrity": "sha1-h81JH5tG5OKurKM1QWdmiF0tHtk=",
+ "optional": true,
+ "requires": {
+ "boom": "0.4.x",
+ "cryptiles": "0.2.x",
+ "hoek": "0.9.x",
+ "sntp": "0.2.x"
+ }
+ },
+ "he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/he/download/he-1.2.0.tgz",
+ "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=",
+ "dev": true
+ },
+ "hex-color-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz",
+ "integrity": "sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4=",
+ "dev": true
+ },
+ "highlight.js": {
+ "version": "10.7.3",
+ "resolved": "https://registry.nlark.com/highlight.js/download/highlight.js-10.7.3.tgz",
+ "integrity": "sha1-aXJy45kTVuQMPKxWanTu9oF1ZTE=",
+ "dev": true
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "dev": true,
+ "requires": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "hoek": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npm.taobao.org/hoek/download/hoek-0.9.1.tgz",
+ "integrity": "sha1-PTIkYrrfB3Fup+uFuviAec3c5QU=",
+ "optional": true
+ },
+ "home-or-tmp": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/home-or-tmp/download/home-or-tmp-1.0.0.tgz?cache=0&sync_timestamp=1618599551277&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhome-or-tmp%2Fdownload%2Fhome-or-tmp-1.0.0.tgz",
+ "integrity": "sha1-S58eQIAMPlDGwn94FnavzOcfOYU=",
+ "requires": {
+ "os-tmpdir": "^1.0.1",
+ "user-home": "^1.1.1"
+ }
+ },
+ "hoopy": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npm.taobao.org/hoopy/download/hoopy-0.1.4.tgz",
+ "integrity": "sha1-YJIH1mEQADOpqUAq096mdzgcGx0=",
+ "dev": true
+ },
+ "hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.9.tgz?cache=0&sync_timestamp=1617826545071&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhosted-git-info%2Fdownload%2Fhosted-git-info-2.8.9.tgz",
+ "integrity": "sha1-3/wL+aIcAiCQkPKqaUKeFBTa8/k=",
+ "dev": true
+ },
+ "hpack.js": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npm.taobao.org/hpack.js/download/hpack.js-2.1.6.tgz",
+ "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "obuf": "^1.0.0",
+ "readable-stream": "^2.0.1",
+ "wbuf": "^1.1.0"
+ }
+ },
+ "hsl-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/hsl-regex/download/hsl-regex-1.0.0.tgz",
+ "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=",
+ "dev": true
+ },
+ "hsla-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/hsla-regex/download/hsla-regex-1.0.0.tgz",
+ "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=",
+ "dev": true
+ },
+ "html-entities": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npm.taobao.org/html-entities/download/html-entities-1.4.0.tgz",
+ "integrity": "sha1-z70bAdKvr5rcobEK59/6uYxx0tw=",
+ "dev": true
+ },
+ "html-minifier": {
+ "version": "3.5.21",
+ "resolved": "https://registry.npm.taobao.org/html-minifier/download/html-minifier-3.5.21.tgz",
+ "integrity": "sha1-0AQOBUcw41TbAIRjWTGUAVIS0gw=",
+ "dev": true,
+ "requires": {
+ "camel-case": "3.0.x",
+ "clean-css": "4.2.x",
+ "commander": "2.17.x",
+ "he": "1.2.x",
+ "param-case": "2.1.x",
+ "relateurl": "0.2.x",
+ "uglify-js": "3.4.x"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.17.1",
+ "resolved": "https://registry.nlark.com/commander/download/commander-2.17.1.tgz?cache=0&sync_timestamp=1624609510051&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.17.1.tgz",
+ "integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=",
+ "dev": true
+ }
+ }
+ },
+ "html-tags": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/html-tags/download/html-tags-3.1.0.tgz",
+ "integrity": "sha1-e15vfmZen7QfMAB+2eDUHpf7IUA=",
+ "dev": true
+ },
+ "html-webpack-plugin": {
+ "version": "3.2.0",
+ "resolved": "https://registry.nlark.com/html-webpack-plugin/download/html-webpack-plugin-3.2.0.tgz",
+ "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=",
+ "dev": true,
+ "requires": {
+ "html-minifier": "^3.2.3",
+ "loader-utils": "^0.2.16",
+ "lodash": "^4.17.3",
+ "pretty-error": "^2.0.2",
+ "tapable": "^1.0.0",
+ "toposort": "^1.0.0",
+ "util.promisify": "1.0.0"
+ },
+ "dependencies": {
+ "big.js": {
+ "version": "3.2.0",
+ "resolved": "https://registry.nlark.com/big.js/download/big.js-3.2.0.tgz?cache=0&sync_timestamp=1620132748267&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbig.js%2Fdownload%2Fbig.js-3.2.0.tgz",
+ "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=",
+ "dev": true
+ },
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz",
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+ "dev": true
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz?cache=0&sync_timestamp=1612146079519&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-0.5.1.tgz",
+ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-0.2.17.tgz",
+ "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+ "dev": true,
+ "requires": {
+ "big.js": "^3.1.3",
+ "emojis-list": "^2.0.0",
+ "json5": "^0.5.0",
+ "object-assign": "^4.0.1"
+ }
+ },
+ "util.promisify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.0.tgz?cache=0&sync_timestamp=1610159866228&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil.promisify%2Fdownload%2Futil.promisify-1.0.0.tgz",
+ "integrity": "sha1-RA9xZaRZyaFtwUXrjnLzVocJcDA=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "object.getownpropertydescriptors": "^2.0.3"
+ }
+ }
+ }
+ },
+ "html2canvas": {
+ "version": "1.3.2",
+ "resolved": "https://registry.nlark.com/html2canvas/download/html2canvas-1.3.2.tgz?cache=0&sync_timestamp=1629033907288&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhtml2canvas%2Fdownload%2Fhtml2canvas-1.3.2.tgz",
+ "integrity": "sha1-lRzIOIo86Tn9rAITEAfuKBJK/Cc=",
+ "requires": {
+ "css-line-break": "2.0.1",
+ "text-segmentation": "^1.0.2"
+ }
+ },
+ "htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-6.1.0.tgz?cache=0&sync_timestamp=1617914918585&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtmlparser2%2Fdownload%2Fhtmlparser2-6.1.0.tgz",
+ "integrity": "sha1-xNditsM3GgXb5l6UrkOp+EX7j7c=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "domutils": "^2.5.2",
+ "entities": "^2.0.0"
+ },
+ "dependencies": {
+ "dom-serializer": {
+ "version": "1.3.2",
+ "resolved": "https://registry.nlark.com/dom-serializer/download/dom-serializer-1.3.2.tgz?cache=0&sync_timestamp=1621256918158&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdom-serializer%2Fdownload%2Fdom-serializer-1.3.2.tgz",
+ "integrity": "sha1-YgZDfTLO767HFhgDIwx6ILwbTZE=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ }
+ },
+ "domelementtype": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.2.0.tgz?cache=0&sync_timestamp=1617298554829&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-2.2.0.tgz",
+ "integrity": "sha1-mgtsJ4LtahxzI9QiZxg9+b2LHVc=",
+ "dev": true
+ },
+ "domutils": {
+ "version": "2.7.0",
+ "resolved": "https://registry.nlark.com/domutils/download/domutils-2.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdomutils%2Fdownload%2Fdomutils-2.7.0.tgz",
+ "integrity": "sha1-jrrwxB66/PVbC3LsMcVjI3EsVEI=",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ }
+ }
+ }
+ },
+ "http-deceiver": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz",
+ "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
+ "dev": true
+ },
+ "http-errors": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz",
+ "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=",
+ "dev": true,
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.1",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.0"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "http-parser-js": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npm.taobao.org/http-parser-js/download/http-parser-js-0.5.3.tgz?cache=0&sync_timestamp=1609542336109&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-parser-js%2Fdownload%2Fhttp-parser-js-0.5.3.tgz",
+ "integrity": "sha1-AdJwnHnUFpi7AdTezF6dpOSgM9k=",
+ "dev": true
+ },
+ "http-proxy": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.18.1.tgz",
+ "integrity": "sha1-QBVB8FNIhLv5UmAzTnL4juOXZUk=",
+ "dev": true,
+ "requires": {
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "http-proxy-middleware": {
+ "version": "1.3.1",
+ "resolved": "https://registry.nlark.com/http-proxy-middleware/download/http-proxy-middleware-1.3.1.tgz",
+ "integrity": "sha1-Q3ANbZ7st0Gb8IahKND3IF2etmU=",
+ "dev": true,
+ "requires": {
+ "@types/http-proxy": "^1.17.5",
+ "http-proxy": "^1.18.1",
+ "is-glob": "^4.0.1",
+ "is-plain-obj": "^3.0.0",
+ "micromatch": "^4.0.2"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npm.taobao.org/braces/download/braces-3.0.2.tgz",
+ "integrity": "sha1-NFThpGLujVmeI23zNs2epPiv4Qc=",
+ "dev": true,
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npm.taobao.org/fill-range/download/fill-range-7.0.1.tgz",
+ "integrity": "sha1-GRmmp8df44ssfHflGYU12prN2kA=",
+ "dev": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-7.0.0.tgz",
+ "integrity": "sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-4.0.4.tgz?cache=0&sync_timestamp=1618054740956&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-4.0.4.tgz",
+ "integrity": "sha1-iW1Rnf6dsl/OlM63pQCRm/iB6/k=",
+ "dev": true,
+ "requires": {
+ "braces": "^3.0.1",
+ "picomatch": "^2.2.3"
+ }
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-5.0.1.tgz",
+ "integrity": "sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=",
+ "dev": true,
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ }
+ }
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz?cache=0&sync_timestamp=1600868441269&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-signature%2Fdownload%2Fhttp-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
+ "https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz",
+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+ "dev": true
+ },
+ "human-signals": {
+ "version": "1.1.1",
+ "resolved": "https://registry.nlark.com/human-signals/download/human-signals-1.1.1.tgz",
+ "integrity": "sha1-xbHNFPUK6uCatsWf5jujOV/k36M=",
+ "dev": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.nlark.com/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&sync_timestamp=1621826342262&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz",
+ "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "icss-utils": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npm.taobao.org/icss-utils/download/icss-utils-4.1.1.tgz?cache=0&sync_timestamp=1605801375650&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ficss-utils%2Fdownload%2Ficss-utils-4.1.1.tgz",
+ "integrity": "sha1-IRcLU3ie4nRHwvR91oMIFAP5pGc=",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.14"
+ }
+ },
+ "ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.2.1.tgz?cache=0&sync_timestamp=1603838418666&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fieee754%2Fdownload%2Fieee754-1.2.1.tgz",
+ "integrity": "sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I="
+ },
+ "iferr": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz",
+ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+ "dev": true
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz",
+ "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=",
+ "dev": true
+ },
+ "image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npm.taobao.org/image-size/download/image-size-0.5.5.tgz",
+ "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+ "dev": true
+ },
+ "import-cwd": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz",
+ "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=",
+ "dev": true,
+ "requires": {
+ "import-from": "^2.1.0"
+ }
+ },
+ "import-fresh": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/import-fresh/download/import-fresh-2.0.0.tgz?cache=0&sync_timestamp=1608469472392&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimport-fresh%2Fdownload%2Fimport-fresh-2.0.0.tgz",
+ "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
+ "dev": true,
+ "requires": {
+ "caller-path": "^2.0.0",
+ "resolve-from": "^3.0.0"
+ }
+ },
+ "import-from": {
+ "version": "2.1.0",
+ "resolved": "https://registry.nlark.com/import-from/download/import-from-2.1.0.tgz",
+ "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
+ "dev": true,
+ "requires": {
+ "resolve-from": "^3.0.0"
+ }
+ },
+ "import-local": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/import-local/download/import-local-2.0.0.tgz",
+ "integrity": "sha1-VQcL44pZk88Y72236WH1vuXFoJ0=",
+ "dev": true,
+ "requires": {
+ "pkg-dir": "^3.0.0",
+ "resolve-cwd": "^2.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz",
+ "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz",
+ "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz",
+ "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz?cache=0&sync_timestamp=1602859056682&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-3.0.0.tgz",
+ "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0"
+ }
+ }
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "in-publish": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/in-publish/download/in-publish-2.0.1.tgz",
+ "integrity": "sha1-lIsaU1yAMFYc6lIvc/ePS+NX4Aw=",
+ "dev": true
+ },
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/indent-string/download/indent-string-2.1.0.tgz?cache=0&sync_timestamp=1618679442183&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Findent-string%2Fdownload%2Findent-string-2.1.0.tgz",
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+ "dev": true,
+ "requires": {
+ "repeating": "^2.0.0"
+ }
+ },
+ "indexes-of": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz",
+ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
+ "dev": true
+ },
+ "indexof": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npm.taobao.org/indexof/download/indexof-0.0.1.tgz",
+ "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10="
+ },
+ "individual": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/individual/download/individual-2.0.0.tgz",
+ "integrity": "sha1-gzsJfa0jKU52EXqY+zjg2a1hu5c="
+ },
+ "infer-owner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/infer-owner/download/infer-owner-1.0.4.tgz",
+ "integrity": "sha1-xM78qo5RBRwqQLos6KPScpWvlGc=",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz",
+ "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w="
+ },
+ "inquirer": {
+ "version": "7.3.3",
+ "resolved": "https://registry.nlark.com/inquirer/download/inquirer-7.3.3.tgz",
+ "integrity": "sha1-BNF2sq8Er8FXqD/XwQDpjuCq0AM=",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-width": "^3.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^3.0.0",
+ "lodash": "^4.17.19",
+ "mute-stream": "0.0.8",
+ "run-async": "^2.4.0",
+ "rxjs": "^6.6.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "through": "^2.3.6"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz",
+ "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.1",
+ "resolved": "https://registry.nlark.com/chalk/download/chalk-4.1.1.tgz?cache=0&sync_timestamp=1618995367379&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.1.tgz",
+ "integrity": "sha1-yAs/qyi/Y3HmhjMl7uZ+YYt35q0=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-3.1.0.tgz",
+ "integrity": "sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^3.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
+ "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
+ "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
+ "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
+ "dev": true
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz",
+ "integrity": "sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=",
+ "dev": true
+ },
+ "onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-5.1.2.tgz",
+ "integrity": "sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-3.1.0.tgz",
+ "integrity": "sha1-OfZ8VLOnpYzqUjbZXPADQjljH34=",
+ "dev": true,
+ "requires": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.nlark.com/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1622293579301&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz",
+ "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "internal-ip": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npm.taobao.org/internal-ip/download/internal-ip-4.3.0.tgz?cache=0&sync_timestamp=1605885556992&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finternal-ip%2Fdownload%2Finternal-ip-4.3.0.tgz",
+ "integrity": "sha1-hFRSuq2dLKO2nGNaE3rLmg2tCQc=",
+ "dev": true,
+ "requires": {
+ "default-gateway": "^4.2.0",
+ "ipaddr.js": "^1.9.0"
+ },
+ "dependencies": {
+ "default-gateway": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npm.taobao.org/default-gateway/download/default-gateway-4.2.0.tgz?cache=0&sync_timestamp=1610365857779&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdefault-gateway%2Fdownload%2Fdefault-gateway-4.2.0.tgz",
+ "integrity": "sha1-FnEEx1AMIRX23WmwpTa7jtcgVSs=",
+ "dev": true,
+ "requires": {
+ "execa": "^1.0.0",
+ "ip-regex": "^2.1.0"
+ }
+ }
+ }
+ },
+ "interpret": {
+ "version": "0.3.10",
+ "resolved": "https://registry.npm.taobao.org/interpret/download/interpret-0.3.10.tgz",
+ "integrity": "sha1-CIwl3nMcbFsRKpDwBxz69Fnlp7s="
+ },
+ "invert-kv": {
+ "version": "1.0.0",
+ "resolved": "https://registry.nlark.com/invert-kv/download/invert-kv-1.0.0.tgz",
+ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
+ },
+ "ip": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npm.taobao.org/ip/download/ip-1.1.5.tgz",
+ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+ "dev": true
+ },
+ "ip-regex": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/ip-regex/download/ip-regex-2.1.0.tgz",
+ "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
+ "dev": true
+ },
+ "ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.nlark.com/ipaddr.js/download/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=",
+ "dev": true
+ },
+ "is-absolute-url": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-2.1.0.tgz",
+ "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-arguments": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-arguments/download/is-arguments-1.1.0.tgz",
+ "integrity": "sha1-YjUwMd++4HzrNGVqa95Z7+yujdk=",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0"
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-bigint": {
+ "version": "1.0.2",
+ "resolved": "https://registry.nlark.com/is-bigint/download/is-bigint-1.0.2.tgz",
+ "integrity": "sha1-/7OBRCUDI1rSReqJ5Fs9v/BA7lo=",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-2.1.0.tgz",
+ "integrity": "sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
+ "is-boolean-object": {
+ "version": "1.1.1",
+ "resolved": "https://registry.nlark.com/is-boolean-object/download/is-boolean-object-1.1.1.tgz",
+ "integrity": "sha1-PAh48DXLghIo01DS4eNnGXFqPeg=",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz?cache=0&sync_timestamp=1604432378894&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-buffer%2Fdownload%2Fis-buffer-1.1.6.tgz",
+ "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4="
+ },
+ "is-callable": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npm.taobao.org/is-callable/download/is-callable-1.2.3.tgz?cache=0&sync_timestamp=1612134205336&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-callable%2Fdownload%2Fis-callable-1.2.3.tgz",
+ "integrity": "sha1-ix4FALc6HXbHBIdjbzaOUZ3o244=",
+ "dev": true
+ },
+ "is-ci": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz?cache=0&sync_timestamp=1613631987391&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-ci%2Fdownload%2Fis-ci-1.2.1.tgz",
+ "integrity": "sha1-43ecjuF/zPQoSI9uKBGH8uYyhBw=",
+ "dev": true,
+ "requires": {
+ "ci-info": "^1.5.0"
+ }
+ },
+ "is-color-stop": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-color-stop/download/is-color-stop-1.1.0.tgz",
+ "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=",
+ "dev": true,
+ "requires": {
+ "css-color-names": "^0.0.4",
+ "hex-color-regex": "^1.1.0",
+ "hsl-regex": "^1.0.0",
+ "hsla-regex": "^1.0.0",
+ "rgb-regex": "^1.0.1",
+ "rgba-regex": "^1.0.0"
+ }
+ },
+ "is-core-module": {
+ "version": "2.4.0",
+ "resolved": "https://registry.nlark.com/is-core-module/download/is-core-module-2.4.0.tgz",
+ "integrity": "sha1-jp/I4VAnsBFBgCbpjw5vTYYwXME=",
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.4",
+ "resolved": "https://registry.nlark.com/is-date-object/download/is-date-object-1.0.4.tgz",
+ "integrity": "sha1-VQz8wDr62gXuo90wmBx7CVUfc+U=",
+ "dev": true
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz",
+ "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz",
+ "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0="
+ }
+ }
+ },
+ "is-directory": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npm.taobao.org/is-directory/download/is-directory-0.3.1.tgz",
+ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
+ "dev": true
+ },
+ "is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npm.taobao.org/is-docker/download/is-docker-2.2.1.tgz?cache=0&sync_timestamp=1617958843085&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-docker%2Fdownload%2Fis-docker-2.2.1.tgz",
+ "integrity": "sha1-M+6r4jz+hvFL3kQIoCwM+4U6zao=",
+ "dev": true
+ },
+ "is-dotfile": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/is-dotfile/download/is-dotfile-1.0.3.tgz",
+ "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE="
+ },
+ "is-equal-shallow": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npm.taobao.org/is-equal-shallow/download/is-equal-shallow-0.1.3.tgz",
+ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
+ "requires": {
+ "is-primitive": "^2.0.0"
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-finite": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-finite/download/is-finite-1.1.0.tgz?cache=0&sync_timestamp=1617779324274&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-finite%2Fdownload%2Fis-finite-1.1.0.tgz",
+ "integrity": "sha1-kEE1x3+0LAZB1qobzbxNqo2ggvM="
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz?cache=0&sync_timestamp=1618552489864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=",
+ "dev": true
+ },
+ "is-function": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/is-function/download/is-function-1.0.2.tgz",
+ "integrity": "sha1-Twl/MKv2762smDOxfKXcA/gUTgg="
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz",
+ "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-integer": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npm.taobao.org/is-integer/download/is-integer-1.0.7.tgz",
+ "integrity": "sha1-a96Bqs3feLZZtmKdYpytxRqIbVw=",
+ "requires": {
+ "is-finite": "^1.0.0"
+ }
+ },
+ "is-negative-zero": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/is-negative-zero/download/is-negative-zero-2.0.1.tgz?cache=0&sync_timestamp=1607123159909&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-negative-zero%2Fdownload%2Fis-negative-zero-2.0.1.tgz",
+ "integrity": "sha1-PedGwY3aIxkkGlNnWQjY92bxHCQ=",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-number-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.nlark.com/is-number-object/download/is-number-object-1.0.5.tgz",
+ "integrity": "sha1-bt+u7XlQz/Ga/tzp+/yp7m3Sies=",
+ "dev": true
+ },
+ "is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-obj/download/is-obj-2.0.0.tgz",
+ "integrity": "sha1-Rz+wXZc3BeP9liBUUBjKjiLvSYI=",
+ "dev": true
+ },
+ "is-path-cwd": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-2.2.0.tgz",
+ "integrity": "sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s=",
+ "dev": true
+ },
+ "is-path-in-cwd": {
+ "version": "2.1.0",
+ "resolved": "https://registry.nlark.com/is-path-in-cwd/download/is-path-in-cwd-2.1.0.tgz?cache=0&sync_timestamp=1620047110449&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-path-in-cwd%2Fdownload%2Fis-path-in-cwd-2.1.0.tgz",
+ "integrity": "sha1-v+Lcomxp85cmWkAJljYCk1oFOss=",
+ "dev": true,
+ "requires": {
+ "is-path-inside": "^2.1.0"
+ }
+ },
+ "is-path-inside": {
+ "version": "2.1.0",
+ "resolved": "https://registry.nlark.com/is-path-inside/download/is-path-inside-2.1.0.tgz?cache=0&sync_timestamp=1620046845369&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-path-inside%2Fdownload%2Fis-path-inside-2.1.0.tgz",
+ "integrity": "sha1-fJgQWH1lmkDSe8201WFuqwWUlLI=",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "^1.0.2"
+ }
+ },
+ "is-plain-obj": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-3.0.0.tgz?cache=0&sync_timestamp=1618600489644&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-plain-obj%2Fdownload%2Fis-plain-obj-3.0.0.tgz",
+ "integrity": "sha1-r28uoUrFpkYYOlu9tbqrvBVq2dc=",
+ "dev": true
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz?cache=0&sync_timestamp=1599667273698&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-plain-object%2Fdownload%2Fis-plain-object-2.0.4.tgz",
+ "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=",
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "is-posix-bracket": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npm.taobao.org/is-posix-bracket/download/is-posix-bracket-0.1.1.tgz",
+ "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q="
+ },
+ "is-primitive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-primitive/download/is-primitive-2.0.0.tgz",
+ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU="
+ },
+ "is-regex": {
+ "version": "1.1.3",
+ "resolved": "https://registry.nlark.com/is-regex/download/is-regex-1.1.3.tgz?cache=0&sync_timestamp=1620452285370&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-regex%2Fdownload%2Fis-regex-1.1.3.tgz",
+ "integrity": "sha1-0Cn5r/ZEi5Prvj8z2scVEf3L758=",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "is-resolvable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-resolvable/download/is-resolvable-1.1.0.tgz",
+ "integrity": "sha1-+xj4fOH+uSUWnJpAfBkxijIG7Yg=",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "is-string": {
+ "version": "1.0.6",
+ "resolved": "https://registry.nlark.com/is-string/download/is-string-1.0.6.tgz?cache=0&sync_timestamp=1620448245505&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-string%2Fdownload%2Fis-string-1.0.6.tgz",
+ "integrity": "sha1-P+XVmS+w2TQE8yWE1LAXmnG1Sl8=",
+ "dev": true
+ },
+ "is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.nlark.com/is-symbol/download/is-symbol-1.0.4.tgz?cache=0&sync_timestamp=1620501182675&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-symbol%2Fdownload%2Fis-symbol-1.0.4.tgz",
+ "integrity": "sha1-ptrJO2NbBjymhyI23oiRClevE5w=",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "dev": true
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz",
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz",
+ "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0="
+ },
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-wsl/download/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz",
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+ "dev": true
+ },
+ "javascript-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/javascript-stringify/download/javascript-stringify-2.1.0.tgz",
+ "integrity": "sha1-J8dlOb4U2L0Sghmi1zGwkzeQTnk=",
+ "dev": true
+ },
+ "js-base64": {
+ "version": "2.6.4",
+ "resolved": "https://registry.nlark.com/js-base64/download/js-base64-2.6.4.tgz?cache=0&sync_timestamp=1621703447855&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fjs-base64%2Fdownload%2Fjs-base64-2.6.4.tgz",
+ "integrity": "sha1-9OaGxd4eofhn28rT1G2WlCjfmMQ=",
+ "dev": true
+ },
+ "js-message": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npm.taobao.org/js-message/download/js-message-1.0.7.tgz?cache=0&sync_timestamp=1605128905632&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-message%2Fdownload%2Fjs-message-1.0.7.tgz",
+ "integrity": "sha1-+93QU8ekcCGHG7iyyVOXzBfCDkc=",
+ "dev": true
+ },
+ "js-queue": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npm.taobao.org/js-queue/download/js-queue-2.0.2.tgz",
+ "integrity": "sha1-C+WQM4+QOzbHPTPDGIOoIUEs1II=",
+ "dev": true,
+ "requires": {
+ "easy-stack": "^1.0.1"
+ }
+ },
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.nlark.com/js-tokens/download/js-tokens-4.0.0.tgz?cache=0&sync_timestamp=1619345098261&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fjs-tokens%2Fdownload%2Fjs-tokens-4.0.0.tgz",
+ "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=",
+ "dev": true
+ },
+ "js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.14.1.tgz?cache=0&sync_timestamp=1618435004368&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-yaml%2Fdownload%2Fjs-yaml-3.14.1.tgz",
+ "integrity": "sha1-2ugS/bOCX6MGYJqHFzg8UMNqBTc=",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz",
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+ "dev": true
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz?cache=0&sync_timestamp=1603891161295&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsesc%2Fdownload%2Fjsesc-2.5.2.tgz",
+ "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=",
+ "dev": true
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=",
+ "dev": true
+ },
+ "json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npm.taobao.org/json-parse-even-better-errors/download/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha1-fEeAWpQxmSjgV3dAXcEuH3pO4C0=",
+ "dev": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz?cache=0&sync_timestamp=1609553686459&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson-schema%2Fdownload%2Fjson-schema-0.2.3.tgz",
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=",
+ "dev": true
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "dev": true
+ },
+ "json-stringify-pretty-compact": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/json-stringify-pretty-compact/download/json-stringify-pretty-compact-2.0.0.tgz",
+ "integrity": "sha1-53xBn1L/AMRaMfB/TIIMJDMUOIU="
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+ },
+ "json3": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz",
+ "integrity": "sha1-f8EON1/FrkLEcFpcwKpvYr4wW4E=",
+ "dev": true
+ },
+ "json5": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npm.taobao.org/json5/download/json5-2.2.0.tgz?cache=0&sync_timestamp=1612146079519&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-2.2.0.tgz",
+ "integrity": "sha1-Lf7+cgxrpSXZ69kJlQ8FFTFsiaM=",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz?cache=0&sync_timestamp=1604161844511&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsonfile%2Fdownload%2Fjsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "jsprim": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz",
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.2.3",
+ "verror": "1.10.0"
+ }
+ },
+ "killable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/killable/download/killable-1.0.1.tgz",
+ "integrity": "sha1-TIzkQRh6Bhx0dPuHygjipjgZSJI=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.3.tgz",
+ "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0="
+ },
+ "launch-editor": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npm.taobao.org/launch-editor/download/launch-editor-2.2.1.tgz",
+ "integrity": "sha1-hxtaPuOdZoD8wm03kwtu7aidsMo=",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.3.0",
+ "shell-quote": "^1.6.1"
+ }
+ },
+ "launch-editor-middleware": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npm.taobao.org/launch-editor-middleware/download/launch-editor-middleware-2.2.1.tgz",
+ "integrity": "sha1-4UsH5scVSwpLhqD9NFeE5FgEwVc=",
+ "dev": true,
+ "requires": {
+ "launch-editor": "^2.2.1"
+ }
+ },
+ "lazy-cache": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/lazy-cache/download/lazy-cache-1.0.4.tgz",
+ "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4="
+ },
+ "lcid": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/lcid/download/lcid-1.0.0.tgz",
+ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+ "requires": {
+ "invert-kv": "^1.0.0"
+ }
+ },
+ "leven": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/leven/download/leven-1.0.2.tgz",
+ "integrity": "sha1-kUS27ryl8dBoAWnxpncNzqYLdcM="
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz",
+ "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "liftoff": {
+ "version": "0.13.6",
+ "resolved": "https://registry.npm.taobao.org/liftoff/download/liftoff-0.13.6.tgz",
+ "integrity": "sha1-YA6JZrktHgFQ6rW1d2UlafTH0dg=",
+ "requires": {
+ "extend": "~1.3.0",
+ "findup-sync": "~0.1.2",
+ "flagged-respawn": "~0.3.0",
+ "minimist": "~1.1.0",
+ "resolve": "~1.0.0"
+ },
+ "dependencies": {
+ "extend": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npm.taobao.org/extend/download/extend-1.3.0.tgz",
+ "integrity": "sha1-0VFvsP9WJNLr+RI+odrFoZlABPg="
+ },
+ "minimist": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.1.3.tgz",
+ "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag="
+ },
+ "resolve": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.0.0.tgz",
+ "integrity": "sha1-Km47MU3NV8ZRno4igq+Gh+jeYcY="
+ }
+ }
+ },
+ "lines-and-columns": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npm.taobao.org/lines-and-columns/download/lines-and-columns-1.1.6.tgz",
+ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
+ "dev": true
+ },
+ "linkify-it": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npm.taobao.org/linkify-it/download/linkify-it-2.2.0.tgz",
+ "integrity": "sha1-47VGl+eL+RXHCjis14/QngBYsc8=",
+ "requires": {
+ "uc.micro": "^1.0.1"
+ }
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/load-json-file/download/load-json-file-1.1.0.tgz",
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
+ },
+ "dependencies": {
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz?cache=0&sync_timestamp=1610966642419&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz?cache=0&sync_timestamp=1593529716831&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ }
+ }
+ },
+ "loader-fs-cache": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/loader-fs-cache/download/loader-fs-cache-1.0.3.tgz",
+ "integrity": "sha1-8IZXZG1gcHi+LwoDL4vWndbyd9k=",
+ "dev": true,
+ "requires": {
+ "find-cache-dir": "^0.1.1",
+ "mkdirp": "^0.5.1"
+ },
+ "dependencies": {
+ "find-cache-dir": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-0.1.1.tgz",
+ "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "mkdirp": "^0.5.1",
+ "pkg-dir": "^1.0.0"
+ }
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-1.0.0.tgz?cache=0&sync_timestamp=1602859056682&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-1.0.0.tgz",
+ "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0"
+ }
+ }
+ }
+ },
+ "loader-runner": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npm.taobao.org/loader-runner/download/loader-runner-2.4.0.tgz?cache=0&sync_timestamp=1610027852811&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floader-runner%2Fdownload%2Floader-runner-2.4.0.tgz",
+ "integrity": "sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c=",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.4.0.tgz",
+ "integrity": "sha1-xXm140yzSxp07cbB+za/o3HVphM=",
+ "dev": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz?cache=0&sync_timestamp=1612146079519&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjson5%2Fdownload%2Fjson5-1.0.1.tgz",
+ "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ }
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-5.0.0.tgz",
+ "integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.21.tgz?cache=0&sync_timestamp=1613835817439&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.21.tgz",
+ "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw="
+ },
+ "lodash._basecopy": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npm.taobao.org/lodash._basecopy/download/lodash._basecopy-3.0.1.tgz",
+ "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY="
+ },
+ "lodash._basetostring": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npm.taobao.org/lodash._basetostring/download/lodash._basetostring-3.0.1.tgz",
+ "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U="
+ },
+ "lodash._basevalues": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/lodash._basevalues/download/lodash._basevalues-3.0.0.tgz",
+ "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc="
+ },
+ "lodash._getnative": {
+ "version": "3.9.1",
+ "resolved": "https://registry.npm.taobao.org/lodash._getnative/download/lodash._getnative-3.9.1.tgz",
+ "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U="
+ },
+ "lodash._isiterateecall": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npm.taobao.org/lodash._isiterateecall/download/lodash._isiterateecall-3.0.9.tgz",
+ "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw="
+ },
+ "lodash._reescape": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/lodash._reescape/download/lodash._reescape-3.0.0.tgz",
+ "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo="
+ },
+ "lodash._reevaluate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/lodash._reevaluate/download/lodash._reevaluate-3.0.0.tgz",
+ "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0="
+ },
+ "lodash._reinterpolate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/lodash._reinterpolate/download/lodash._reinterpolate-3.0.0.tgz",
+ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0="
+ },
+ "lodash._root": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npm.taobao.org/lodash._root/download/lodash._root-3.0.1.tgz",
+ "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI="
+ },
+ "lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npm.taobao.org/lodash.debounce/download/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
+ "dev": true
+ },
+ "lodash.defaultsdeep": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npm.taobao.org/lodash.defaultsdeep/download/lodash.defaultsdeep-4.6.1.tgz",
+ "integrity": "sha1-US6b1yHSctlOPTpjZT+hdRZ0HKY=",
+ "dev": true
+ },
+ "lodash.escape": {
+ "version": "3.2.0",
+ "resolved": "https://registry.nlark.com/lodash.escape/download/lodash.escape-3.2.0.tgz",
+ "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
+ "requires": {
+ "lodash._root": "^3.0.0"
+ }
+ },
+ "lodash.isarguments": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/lodash.isarguments/download/lodash.isarguments-3.1.0.tgz",
+ "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo="
+ },
+ "lodash.isarray": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npm.taobao.org/lodash.isarray/download/lodash.isarray-3.0.4.tgz",
+ "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U="
+ },
+ "lodash.kebabcase": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npm.taobao.org/lodash.kebabcase/download/lodash.kebabcase-4.1.1.tgz",
+ "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=",
+ "dev": true
+ },
+ "lodash.keys": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npm.taobao.org/lodash.keys/download/lodash.keys-3.1.2.tgz",
+ "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
+ "requires": {
+ "lodash._getnative": "^3.0.0",
+ "lodash.isarguments": "^3.0.0",
+ "lodash.isarray": "^3.0.0"
+ }
+ },
+ "lodash.mapvalues": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npm.taobao.org/lodash.mapvalues/download/lodash.mapvalues-4.6.0.tgz",
+ "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=",
+ "dev": true
+ },
+ "lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npm.taobao.org/lodash.memoize/download/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
+ "dev": true
+ },
+ "lodash.restparam": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npm.taobao.org/lodash.restparam/download/lodash.restparam-3.6.1.tgz",
+ "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU="
+ },
+ "lodash.template": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npm.taobao.org/lodash.template/download/lodash.template-3.6.2.tgz",
+ "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
+ "requires": {
+ "lodash._basecopy": "^3.0.0",
+ "lodash._basetostring": "^3.0.0",
+ "lodash._basevalues": "^3.0.0",
+ "lodash._isiterateecall": "^3.0.0",
+ "lodash._reinterpolate": "^3.0.0",
+ "lodash.escape": "^3.0.0",
+ "lodash.keys": "^3.0.0",
+ "lodash.restparam": "^3.0.0",
+ "lodash.templatesettings": "^3.0.0"
+ }
+ },
+ "lodash.templatesettings": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npm.taobao.org/lodash.templatesettings/download/lodash.templatesettings-3.1.1.tgz",
+ "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
+ "requires": {
+ "lodash._reinterpolate": "^3.0.0",
+ "lodash.escape": "^3.0.0"
+ }
+ },
+ "lodash.transform": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npm.taobao.org/lodash.transform/download/lodash.transform-4.6.0.tgz",
+ "integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=",
+ "dev": true
+ },
+ "lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npm.taobao.org/lodash.uniq/download/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npm.taobao.org/log-symbols/download/log-symbols-2.2.0.tgz?cache=0&sync_timestamp=1618723151470&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flog-symbols%2Fdownload%2Flog-symbols-2.2.0.tgz",
+ "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1"
+ }
+ },
+ "loglevel": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npm.taobao.org/loglevel/download/loglevel-1.7.1.tgz?cache=0&sync_timestamp=1606314029553&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floglevel%2Fdownload%2Floglevel-1.7.1.tgz",
+ "integrity": "sha1-AF/eL15uRwaPk1/yhXPhJe9y8Zc=",
+ "dev": true
+ },
+ "longest": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/longest/download/longest-1.0.1.tgz",
+ "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc="
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npm.taobao.org/loud-rejection/download/loud-rejection-1.6.0.tgz",
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+ "dev": true,
+ "requires": {
+ "currently-unhandled": "^0.4.1",
+ "signal-exit": "^3.0.0"
+ }
+ },
+ "lower-case": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npm.taobao.org/lower-case/download/lower-case-1.1.4.tgz?cache=0&sync_timestamp=1606867292121&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flower-case%2Fdownload%2Flower-case-1.1.4.tgz",
+ "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz",
+ "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=",
+ "dev": true,
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "m3u8-parser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.nlark.com/m3u8-parser/download/m3u8-parser-2.1.0.tgz?cache=0&sync_timestamp=1621435699786&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fm3u8-parser%2Fdownload%2Fm3u8-parser-2.1.0.tgz",
+ "integrity": "sha1-yBcDKewc1RXQ1Yu4t2LamJbLA2g="
+ },
+ "make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-3.1.0.tgz",
+ "integrity": "sha1-QV6WcEazp/HRhSd9hKpYIDcmoT8=",
+ "dev": true,
+ "requires": {
+ "semver": "^6.0.0"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8="
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/map-obj/download/map-obj-1.0.1.tgz?cache=0&sync_timestamp=1617771232226&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmap-obj%2Fdownload%2Fmap-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+ "dev": true
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "mapbox-to-css-font": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npm.taobao.org/mapbox-to-css-font/download/mapbox-to-css-font-2.4.0.tgz",
+ "integrity": "sha1-ojtRZkoe6Dm+rvreAT8mVb7po5A="
+ },
+ "markdown-it": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npm.taobao.org/markdown-it/download/markdown-it-8.4.2.tgz",
+ "integrity": "sha1-OG+YmY3BWjdyKqdyIIT0Agvdm1Q=",
+ "requires": {
+ "argparse": "^1.0.7",
+ "entities": "~1.1.1",
+ "linkify-it": "^2.0.0",
+ "mdurl": "^1.0.1",
+ "uc.micro": "^1.0.5"
+ },
+ "dependencies": {
+ "entities": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz",
+ "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY="
+ }
+ }
+ },
+ "math-random": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/math-random/download/math-random-1.0.4.tgz?cache=0&sync_timestamp=1596773193769&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmath-random%2Fdownload%2Fmath-random-1.0.4.tgz",
+ "integrity": "sha1-XdaUPJOFSCZwFtTjTwV1gwgMUUw="
+ },
+ "md5.js": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz",
+ "integrity": "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "mdn-data": {
+ "version": "2.0.4",
+ "resolved": "https://registry.nlark.com/mdn-data/download/mdn-data-2.0.4.tgz",
+ "integrity": "sha1-aZs8OKxvHXKAkaZGULZdOIUC/Vs=",
+ "dev": true
+ },
+ "mdurl": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/mdurl/download/mdurl-1.0.1.tgz",
+ "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz",
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+ "dev": true
+ },
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.4.1.tgz",
+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.nlark.com/meow/download/meow-3.7.0.tgz",
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+ "dev": true,
+ "requires": {
+ "camelcase-keys": "^2.0.0",
+ "decamelize": "^1.1.2",
+ "loud-rejection": "^1.0.0",
+ "map-obj": "^1.0.1",
+ "minimist": "^1.1.3",
+ "normalize-package-data": "^2.3.4",
+ "object-assign": "^4.0.1",
+ "read-pkg-up": "^1.0.1",
+ "redent": "^1.0.0",
+ "trim-newlines": "^1.0.0"
+ }
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+ "dev": true
+ },
+ "merge-options": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/merge-options/download/merge-options-1.0.1.tgz?cache=0&sync_timestamp=1606147071422&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmerge-options%2Fdownload%2Fmerge-options-1.0.1.tgz",
+ "integrity": "sha1-KmSyRFe+zU5NxggoMkfpTOWJqjI=",
+ "dev": true,
+ "requires": {
+ "is-plain-obj": "^1.1"
+ },
+ "dependencies": {
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true
+ }
+ }
+ },
+ "merge-source-map": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/merge-source-map/download/merge-source-map-1.1.0.tgz",
+ "integrity": "sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=",
+ "dev": true,
+ "requires": {
+ "source-map": "^0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/merge-stream/download/merge-stream-2.0.0.tgz",
+ "integrity": "sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=",
+ "dev": true
+ },
+ "merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npm.taobao.org/merge2/download/merge2-1.4.1.tgz",
+ "integrity": "sha1-Q2iJL4hekHRVpv19xVwMnUBJkK4=",
+ "dev": true
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz",
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz?cache=0&sync_timestamp=1618054740956&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.10.tgz",
+ "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npm.taobao.org/miller-rabin/download/miller-rabin-4.0.1.tgz",
+ "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz",
+ "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=",
+ "dev": true
+ }
+ }
+ },
+ "mime": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npm.taobao.org/mime/download/mime-2.5.2.tgz?cache=0&sync_timestamp=1613584838235&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-2.5.2.tgz",
+ "integrity": "sha1-bj3GzCuVEGQ4MOXxnVy3U9pe6r4=",
+ "dev": true
+ },
+ "mime-db": {
+ "version": "1.48.0",
+ "resolved": "https://registry.nlark.com/mime-db/download/mime-db-1.48.0.tgz?cache=0&sync_timestamp=1622433591448&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmime-db%2Fdownload%2Fmime-db-1.48.0.tgz",
+ "integrity": "sha1-41sxBF3X6to6qtU37YijOvvvLR0=",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.31",
+ "resolved": "https://registry.nlark.com/mime-types/download/mime-types-2.1.31.tgz?cache=0&sync_timestamp=1622569304088&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmime-types%2Fdownload%2Fmime-types-2.1.31.tgz",
+ "integrity": "sha1-oA12t0MXxh+cLbIhi46fjpxcnms=",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.48.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-1.2.0.tgz",
+ "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=",
+ "dev": true
+ },
+ "min-document": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npm.taobao.org/min-document/download/min-document-2.19.0.tgz",
+ "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
+ "requires": {
+ "dom-walk": "^0.1.0"
+ }
+ },
+ "mini-css-extract-plugin": {
+ "version": "0.9.0",
+ "resolved": "https://registry.nlark.com/mini-css-extract-plugin/download/mini-css-extract-plugin-0.9.0.tgz",
+ "integrity": "sha1-R/LPB6oWWrNXM7H8l9TEbAVkM54=",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.1.0",
+ "normalize-url": "1.9.1",
+ "schema-utils": "^1.0.0",
+ "webpack-sources": "^1.1.0"
+ },
+ "dependencies": {
+ "normalize-url": {
+ "version": "1.9.1",
+ "resolved": "https://registry.nlark.com/normalize-url/download/normalize-url-1.9.1.tgz",
+ "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.0.1",
+ "prepend-http": "^1.0.0",
+ "query-string": "^4.1.0",
+ "sort-keys": "^1.0.0"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1601922425223&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz",
+ "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ }
+ }
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz",
+ "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz",
+ "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI="
+ },
+ "minipass": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npm.taobao.org/minipass/download/minipass-3.1.3.tgz",
+ "integrity": "sha1-fUL/HzljVILhX5zbUxhN7r1YFf0=",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ },
+ "dependencies": {
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz",
+ "integrity": "sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=",
+ "dev": true
+ }
+ }
+ },
+ "mississippi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/mississippi/download/mississippi-3.0.0.tgz",
+ "integrity": "sha1-6goykfl+C16HdrNj1fChLZTGcCI=",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^3.0.0",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
+ }
+ },
+ "mitt": {
+ "version": "1.1.2",
+ "resolved": "https://registry.nlark.com/mitt/download/mitt-1.1.2.tgz",
+ "integrity": "sha1-OA5hSA1qYVtmDwertg1R4KTkvtY=",
+ "dev": true
+ },
+ "mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz",
+ "integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=",
+ "requires": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz",
+ "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.5.tgz",
+ "integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=",
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
+ "move-concurrently": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz",
+ "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "copy-concurrently": "^1.0.0",
+ "fs-write-stream-atomic": "^1.0.8",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.3"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&sync_timestamp=1607433872491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz",
+ "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk="
+ },
+ "multicast-dns": {
+ "version": "6.2.3",
+ "resolved": "https://registry.nlark.com/multicast-dns/download/multicast-dns-6.2.3.tgz?cache=0&sync_timestamp=1621890647706&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmulticast-dns%2Fdownload%2Fmulticast-dns-6.2.3.tgz",
+ "integrity": "sha1-oOx72QVcQoL3kMPIL04o2zsxsik=",
+ "dev": true,
+ "requires": {
+ "dns-packet": "^1.3.1",
+ "thunky": "^1.0.2"
+ }
+ },
+ "multicast-dns-service-types": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz",
+ "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+ "dev": true
+ },
+ "multipipe": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npm.taobao.org/multipipe/download/multipipe-0.1.2.tgz",
+ "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=",
+ "requires": {
+ "duplexer2": "0.0.2"
+ }
+ },
+ "mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.8.tgz",
+ "integrity": "sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=",
+ "dev": true
+ },
+ "mux.js": {
+ "version": "4.3.2",
+ "resolved": "https://registry.nlark.com/mux.js/download/mux.js-4.3.2.tgz",
+ "integrity": "sha1-V21TffA33F7DXsExa5SNgV01whA="
+ },
+ "mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz",
+ "integrity": "sha1-lQCAV6Vsr63CvGPd5/n/aVWUjjI=",
+ "dev": true,
+ "requires": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "nan": {
+ "version": "2.14.2",
+ "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.2.tgz?cache=0&sync_timestamp=1602591709094&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnan%2Fdownload%2Fnan-2.14.2.tgz",
+ "integrity": "sha1-9TdkAGlRaPTMaUrJOT0MlYXu6hk="
+ },
+ "nanoid": {
+ "version": "3.1.23",
+ "resolved": "https://registry.nlark.com/nanoid/download/nanoid-3.1.23.tgz",
+ "integrity": "sha1-90QIbOfCvEfuCoRyV01ceOQYOoE=",
+ "dev": true
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.13.tgz",
+ "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=",
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "natives": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npm.taobao.org/natives/download/natives-1.1.6.tgz",
+ "integrity": "sha1-pgO0pJirdxc2ErnqGs3sTZgPALs="
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz",
+ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
+ "dev": true
+ },
+ "negotiator": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz",
+ "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=",
+ "dev": true
+ },
+ "neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npm.taobao.org/neo-async/download/neo-async-2.6.2.tgz",
+ "integrity": "sha1-tKr7k+OustgXTKU88WOrfXMIMF8=",
+ "dev": true
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz",
+ "integrity": "sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=",
+ "dev": true
+ },
+ "no-case": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npm.taobao.org/no-case/download/no-case-2.3.2.tgz?cache=0&sync_timestamp=1606867290260&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fno-case%2Fdownload%2Fno-case-2.3.2.tgz",
+ "integrity": "sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw=",
+ "dev": true,
+ "requires": {
+ "lower-case": "^1.1.1"
+ }
+ },
+ "node-forge": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npm.taobao.org/node-forge/download/node-forge-0.10.0.tgz?cache=0&sync_timestamp=1599010719234&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-forge%2Fdownload%2Fnode-forge-0.10.0.tgz",
+ "integrity": "sha1-Mt6ir7Ppkm8C7lzoeUkCaRpna/M=",
+ "dev": true
+ },
+ "node-gyp": {
+ "version": "3.8.0",
+ "resolved": "https://registry.nlark.com/node-gyp/download/node-gyp-3.8.0.tgz",
+ "integrity": "sha1-VAMEJhwzDoDQ1e3OJTpoyzlkIYw=",
+ "dev": true,
+ "requires": {
+ "fstream": "^1.0.0",
+ "glob": "^7.0.3",
+ "graceful-fs": "^4.1.2",
+ "mkdirp": "^0.5.0",
+ "nopt": "2 || 3",
+ "npmlog": "0 || 1 || 2 || 3 || 4",
+ "osenv": "0",
+ "request": "^2.87.0",
+ "rimraf": "2",
+ "semver": "~5.3.0",
+ "tar": "^2.0.0",
+ "which": "1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.3.0.tgz",
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
+ "dev": true
+ }
+ }
+ },
+ "node-ipc": {
+ "version": "9.1.4",
+ "resolved": "https://registry.npm.taobao.org/node-ipc/download/node-ipc-9.1.4.tgz?cache=0&sync_timestamp=1614360246127&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-ipc%2Fdownload%2Fnode-ipc-9.1.4.tgz",
+ "integrity": "sha1-Ks+WJoGv2sJgKHbZj+ZDTVTZvTw=",
+ "dev": true,
+ "requires": {
+ "event-pubsub": "4.3.0",
+ "js-message": "1.0.7",
+ "js-queue": "2.0.2"
+ }
+ },
+ "node-libs-browser": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npm.taobao.org/node-libs-browser/download/node-libs-browser-2.2.1.tgz",
+ "integrity": "sha1-tk9RPRgzhiX5A0bSew0jXmMfZCU=",
+ "dev": true,
+ "requires": {
+ "assert": "^1.1.1",
+ "browserify-zlib": "^0.2.0",
+ "buffer": "^4.3.0",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "^1.0.0",
+ "crypto-browserify": "^3.11.0",
+ "domain-browser": "^1.1.1",
+ "events": "^3.0.0",
+ "https-browserify": "^1.0.0",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "0.0.1",
+ "process": "^0.11.10",
+ "punycode": "^1.2.4",
+ "querystring-es3": "^0.2.0",
+ "readable-stream": "^2.3.3",
+ "stream-browserify": "^2.0.1",
+ "stream-http": "^2.7.2",
+ "string_decoder": "^1.0.0",
+ "timers-browserify": "^2.0.4",
+ "tty-browserify": "0.0.0",
+ "url": "^0.11.0",
+ "util": "^0.11.0",
+ "vm-browserify": "^1.0.1"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ }
+ }
+ },
+ "node-releases": {
+ "version": "1.1.73",
+ "resolved": "https://registry.nlark.com/node-releases/download/node-releases-1.1.73.tgz?cache=0&sync_timestamp=1623060267794&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnode-releases%2Fdownload%2Fnode-releases-1.1.73.tgz",
+ "integrity": "sha1-3U6B3dUnf/hGuAtSu0DEnt96eyA=",
+ "dev": true
+ },
+ "node-sass": {
+ "version": "4.14.1",
+ "resolved": "https://registry.nlark.com/node-sass/download/node-sass-4.14.1.tgz",
+ "integrity": "sha1-mch+wu+3BH7WOPtMnbfzpC4iF7U=",
+ "dev": true,
+ "requires": {
+ "async-foreach": "^0.1.3",
+ "chalk": "^1.1.1",
+ "cross-spawn": "^3.0.0",
+ "gaze": "^1.0.0",
+ "get-stdin": "^4.0.1",
+ "glob": "^7.0.3",
+ "in-publish": "^2.0.0",
+ "lodash": "^4.17.15",
+ "meow": "^3.7.0",
+ "mkdirp": "^0.5.1",
+ "nan": "^2.13.2",
+ "node-gyp": "^3.8.0",
+ "npmlog": "^4.0.0",
+ "request": "^2.88.0",
+ "sass-graph": "2.2.5",
+ "stdout-stream": "^1.4.0",
+ "true-case-path": "^1.0.2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.nlark.com/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1618995367379&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-3.0.1.tgz",
+ "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "which": "^1.2.9"
+ }
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npm.taobao.org/get-stdin/download/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz",
+ "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.nlark.com/supports-color/download/supports-color-2.0.0.tgz?cache=0&sync_timestamp=1622293579301&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ }
+ }
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npm.taobao.org/nopt/download/nopt-3.0.6.tgz?cache=0&sync_timestamp=1597649942437&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnopt%2Fdownload%2Fnopt-3.0.6.tgz",
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
+ "dev": true,
+ "requires": {
+ "abbrev": "1"
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz",
+ "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+ "dev": true
+ }
+ }
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz",
+ "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=",
+ "dev": true
+ },
+ "normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npm.taobao.org/normalize-range/download/normalize-range-0.1.2.tgz",
+ "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+ "dev": true
+ },
+ "normalize-url": {
+ "version": "3.3.0",
+ "resolved": "https://registry.nlark.com/normalize-url/download/normalize-url-3.3.0.tgz",
+ "integrity": "sha1-suHE3E98bVd0PfczpPWXjRhlBVk=",
+ "dev": true
+ },
+ "normalize-wheel": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/normalize-wheel/download/normalize-wheel-1.0.1.tgz",
+ "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU="
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npm.taobao.org/npmlog/download/npmlog-4.1.2.tgz",
+ "integrity": "sha1-CKfyqL9zRgR3mp76StXMcXq7lUs=",
+ "dev": true,
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "nth-check": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/nth-check/download/nth-check-1.0.2.tgz?cache=0&sync_timestamp=1606860664533&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnth-check%2Fdownload%2Fnth-check-1.0.2.tgz",
+ "integrity": "sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw=",
+ "dev": true,
+ "requires": {
+ "boolbase": "~1.0.0"
+ }
+ },
+ "num2fraction": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npm.taobao.org/num2fraction/download/num2fraction-1.2.2.tgz",
+ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
+ "dev": true
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz?cache=0&sync_timestamp=1617776101309&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnumber-is-nan%2Fdownload%2Fnumber-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+ "dev": true
+ },
+ "numerify": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npm.taobao.org/numerify/download/numerify-1.2.9.tgz",
+ "integrity": "sha1-r0aWux1X+NOXCmFdiwzVPZMr1Vk="
+ },
+ "oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz",
+ "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=",
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "requires": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "object-hash": {
+ "version": "1.3.1",
+ "resolved": "https://registry.nlark.com/object-hash/download/object-hash-1.3.1.tgz",
+ "integrity": "sha1-/eRSCYqVHLFF8Dm7fUVUSd3BJt8=",
+ "dev": true
+ },
+ "object-inspect": {
+ "version": "1.10.3",
+ "resolved": "https://registry.nlark.com/object-inspect/download/object-inspect-1.10.3.tgz?cache=0&sync_timestamp=1620446150016&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fobject-inspect%2Fdownload%2Fobject-inspect-1.10.3.tgz",
+ "integrity": "sha1-wqp9LQn1DJk3VwT3oK3yTFeC02k=",
+ "dev": true
+ },
+ "object-is": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npm.taobao.org/object-is/download/object-is-1.1.5.tgz?cache=0&sync_timestamp=1613858223300&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject-is%2Fdownload%2Fobject-is-1.1.5.tgz",
+ "integrity": "sha1-ud7qpfx/GEag+uzc7sE45XePU6w=",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ }
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz",
+ "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=",
+ "dev": true
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "requires": {
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.assign": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.2.tgz?cache=0&sync_timestamp=1604115167242&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject.assign%2Fdownload%2Fobject.assign-4.1.2.tgz",
+ "integrity": "sha1-DtVKNC7Os3s4/3brgxoOeIy2OUA=",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "has-symbols": "^1.0.1",
+ "object-keys": "^1.1.1"
+ }
+ },
+ "object.getownpropertydescriptors": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.1.2.tgz?cache=0&sync_timestamp=1613860098805&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fobject.getownpropertydescriptors%2Fdownload%2Fobject.getownpropertydescriptors-2.1.2.tgz",
+ "integrity": "sha1-G9Y66s8NXS0vMbXjk7A6fGAaI/c=",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.18.0-next.2"
+ }
+ },
+ "object.omit": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/object.omit/download/object.omit-2.0.1.tgz",
+ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
+ "requires": {
+ "for-own": "^0.1.4",
+ "is-extendable": "^0.1.1"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "object.values": {
+ "version": "1.1.4",
+ "resolved": "https://registry.nlark.com/object.values/download/object.values-1.1.4.tgz",
+ "integrity": "sha1-DSc3YoM+gWtpOmN9MAc+cFFTWzA=",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.18.2"
+ }
+ },
+ "obuf": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npm.taobao.org/obuf/download/obuf-1.1.2.tgz",
+ "integrity": "sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=",
+ "dev": true
+ },
+ "ol": {
+ "version": "6.6.1",
+ "resolved": "https://registry.nlark.com/ol/download/ol-6.6.1.tgz",
+ "integrity": "sha1-66OyvVwvbU8k9N3LcTUjvToTI08=",
+ "requires": {
+ "ol-mapbox-style": "^6.4.1",
+ "pbf": "3.2.1",
+ "rbush": "^3.0.1"
+ }
+ },
+ "ol-mapbox-style": {
+ "version": "6.4.1",
+ "resolved": "https://registry.nlark.com/ol-mapbox-style/download/ol-mapbox-style-6.4.1.tgz",
+ "integrity": "sha1-PA3WdEMGcNAPqY+aKRAm4X+kdmQ=",
+ "requires": {
+ "@mapbox/mapbox-gl-style-spec": "^13.20.1",
+ "mapbox-to-css-font": "^2.4.0",
+ "webfont-matcher": "^1.1.0"
+ }
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz",
+ "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+ "dev": true,
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "on-headers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/on-headers/download/on-headers-1.0.2.tgz",
+ "integrity": "sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8=",
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/onetime/download/onetime-2.0.1.tgz",
+ "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ },
+ "open": {
+ "version": "6.4.0",
+ "resolved": "https://registry.nlark.com/open/download/open-6.4.0.tgz",
+ "integrity": "sha1-XBPpbQ3IlGhhZPGJZez+iJ7PyKk=",
+ "dev": true,
+ "requires": {
+ "is-wsl": "^1.1.0"
+ }
+ },
+ "opener": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npm.taobao.org/opener/download/opener-1.5.2.tgz",
+ "integrity": "sha1-XTfh81B3udysQwE3InGv3rKhNZg=",
+ "dev": true
+ },
+ "opn": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npm.taobao.org/opn/download/opn-5.5.0.tgz",
+ "integrity": "sha1-/HFk+rVtI1kExRw7J9pnWMo7m/w=",
+ "dev": true,
+ "requires": {
+ "is-wsl": "^1.1.0"
+ }
+ },
+ "optimist": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npm.taobao.org/optimist/download/optimist-0.6.1.tgz",
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
+ "requires": {
+ "minimist": "~0.0.1",
+ "wordwrap": "~0.0.2"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-0.0.10.tgz",
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8="
+ }
+ }
+ },
+ "optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npm.taobao.org/optionator/download/optionator-0.8.3.tgz",
+ "integrity": "sha1-hPodA2/p08fiHZmIS2ARZ+yPtJU=",
+ "dev": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ }
+ },
+ "ora": {
+ "version": "3.4.0",
+ "resolved": "https://registry.nlark.com/ora/download/ora-3.4.0.tgz",
+ "integrity": "sha1-vwdSSRBZo+8+1MhQl1Md6f280xg=",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "cli-cursor": "^2.1.0",
+ "cli-spinners": "^2.0.0",
+ "log-symbols": "^2.2.0",
+ "strip-ansi": "^5.2.0",
+ "wcwidth": "^1.0.1"
+ },
+ "dependencies": {
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz",
+ "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "orchestrator": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npm.taobao.org/orchestrator/download/orchestrator-0.3.8.tgz",
+ "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=",
+ "requires": {
+ "end-of-stream": "~0.1.5",
+ "sequencify": "~0.0.7",
+ "stream-consume": "~0.1.0"
+ },
+ "dependencies": {
+ "end-of-stream": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-0.1.5.tgz",
+ "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=",
+ "requires": {
+ "once": "~1.3.0"
+ }
+ },
+ "once": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npm.taobao.org/once/download/once-1.3.3.tgz",
+ "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
+ "requires": {
+ "wrappy": "1"
+ }
+ }
+ }
+ },
+ "ordered-read-streams": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npm.taobao.org/ordered-read-streams/download/ordered-read-streams-0.1.0.tgz",
+ "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY="
+ },
+ "original": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/original/download/original-1.0.2.tgz",
+ "integrity": "sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8=",
+ "dev": true,
+ "requires": {
+ "url-parse": "^1.4.3"
+ }
+ },
+ "os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npm.taobao.org/os-browserify/download/os-browserify-0.3.0.tgz",
+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+ "dev": true
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
+ },
+ "os-locale": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npm.taobao.org/os-locale/download/os-locale-1.4.0.tgz",
+ "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+ "requires": {
+ "lcid": "^1.0.0"
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npm.taobao.org/osenv/download/osenv-0.1.5.tgz",
+ "integrity": "sha1-hc36+uso6Gd/QW4odZK18/SepBA=",
+ "dev": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "output-file-sync": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npm.taobao.org/output-file-sync/download/output-file-sync-1.1.2.tgz",
+ "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=",
+ "requires": {
+ "graceful-fs": "^4.1.4",
+ "mkdirp": "^0.5.1",
+ "object-assign": "^4.1.0"
+ }
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1606288352885&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz",
+ "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-4.1.0.tgz",
+ "integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "p-map": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/p-map/download/p-map-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-map%2Fdownload%2Fp-map-2.1.0.tgz",
+ "integrity": "sha1-MQko/u+cnsxltosXaTAYpmXOoXU=",
+ "dev": true
+ },
+ "p-retry": {
+ "version": "3.0.1",
+ "resolved": "https://registry.nlark.com/p-retry/download/p-retry-3.0.1.tgz?cache=0&sync_timestamp=1624534411422&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fp-retry%2Fdownload%2Fp-retry-3.0.1.tgz",
+ "integrity": "sha1-MWtMiJPiyNwc+okfQGxLQivr8yg=",
+ "dev": true,
+ "requires": {
+ "retry": "^0.12.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz",
+ "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=",
+ "dev": true
+ },
+ "pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npm.taobao.org/pako/download/pako-1.0.11.tgz?cache=0&sync_timestamp=1610208860443&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpako%2Fdownload%2Fpako-1.0.11.tgz",
+ "integrity": "sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8=",
+ "dev": true
+ },
+ "parallel-transform": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/parallel-transform/download/parallel-transform-1.2.0.tgz",
+ "integrity": "sha1-kEnKN9bLIYLDsdLHIL6U0UpYFPw=",
+ "dev": true,
+ "requires": {
+ "cyclist": "^1.0.1",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
+ }
+ },
+ "param-case": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/param-case/download/param-case-2.1.1.tgz?cache=0&sync_timestamp=1606867288643&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparam-case%2Fdownload%2Fparam-case-2.1.1.tgz",
+ "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
+ "dev": true,
+ "requires": {
+ "no-case": "^2.2.0"
+ }
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz",
+ "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0"
+ },
+ "dependencies": {
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/callsites/download/callsites-3.1.0.tgz",
+ "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=",
+ "dev": true
+ }
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.6.tgz?cache=0&sync_timestamp=1597165710136&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-asn1%2Fdownload%2Fparse-asn1-5.1.6.tgz",
+ "integrity": "sha1-OFCAo+wTy2KmLTlAnLPoiETNrtQ=",
+ "dev": true,
+ "requires": {
+ "asn1.js": "^5.2.0",
+ "browserify-aes": "^1.0.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "parse-glob": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npm.taobao.org/parse-glob/download/parse-glob-3.0.4.tgz",
+ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
+ "requires": {
+ "glob-base": "^0.3.0",
+ "is-dotfile": "^1.0.0",
+ "is-extglob": "^1.0.0",
+ "is-glob": "^2.0.0"
+ },
+ "dependencies": {
+ "is-extglob": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-1.0.0.tgz",
+ "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
+ },
+ "is-glob": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-2.0.1.tgz",
+ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
+ "requires": {
+ "is-extglob": "^1.0.0"
+ }
+ }
+ }
+ },
+ "parse-headers": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npm.taobao.org/parse-headers/download/parse-headers-2.0.3.tgz",
+ "integrity": "sha1-Xo51Ejg9FAugLwx6qfSbQ5nJJRU="
+ },
+ "parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-5.2.0.tgz?cache=0&sync_timestamp=1610966642419&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-5.2.0.tgz",
+ "integrity": "sha1-x2/Gbe5UIxyWKyK8yKcs8vmXU80=",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ }
+ },
+ "parse-node-version": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/parse-node-version/download/parse-node-version-1.0.1.tgz",
+ "integrity": "sha1-4rXb7eAOf6m8NjYH9TMn6LBzGJs="
+ },
+ "parse5": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npm.taobao.org/parse5/download/parse5-5.1.1.tgz?cache=0&sync_timestamp=1595850971402&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5%2Fdownload%2Fparse5-5.1.1.tgz",
+ "integrity": "sha1-9o5OW6GFKsLK3AD0VV//bCq7YXg=",
+ "dev": true
+ },
+ "parse5-htmlparser2-tree-adapter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npm.taobao.org/parse5-htmlparser2-tree-adapter/download/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+ "integrity": "sha1-LN+a2CMyEUA3DU2/XT6Sx8jdxuY=",
+ "dev": true,
+ "requires": {
+ "parse5": "^6.0.1"
+ },
+ "dependencies": {
+ "parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npm.taobao.org/parse5/download/parse5-6.0.1.tgz?cache=0&sync_timestamp=1595850971402&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5%2Fdownload%2Fparse5-6.0.1.tgz",
+ "integrity": "sha1-4aHAhcVps9wIMhGE8Zo5zCf3wws=",
+ "dev": true
+ }
+ }
+ },
+ "parseqs": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npm.taobao.org/parseqs/download/parseqs-0.0.6.tgz",
+ "integrity": "sha1-jku1oZ0c3IRKCKyXTTTic6+mcNU="
+ },
+ "parseuri": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npm.taobao.org/parseuri/download/parseuri-0.0.6.tgz",
+ "integrity": "sha1-4Ulugp46wv9H85pN0ESzKCPEolo="
+ },
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz",
+ "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=",
+ "dev": true
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ="
+ },
+ "path-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npm.taobao.org/path-browserify/download/path-browserify-0.0.1.tgz",
+ "integrity": "sha1-5sTd1+06onxoogzE5Q4aTug7vEo=",
+ "dev": true
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/path-dirname/download/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-4.0.0.tgz",
+ "integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/path-is-inside/download/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz?cache=0&sync_timestamp=1617971695678&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-key%2Fdownload%2Fpath-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.nlark.com/path-parse/download/path-parse-1.0.7.tgz",
+ "integrity": "sha1-+8EUtgykKzDZ2vWFjkvWi77bZzU="
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-to-regexp%2Fdownload%2Fpath-to-regexp-0.1.7.tgz",
+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+ "dev": true
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-3.0.0.tgz?cache=0&sync_timestamp=1611752058913&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-type%2Fdownload%2Fpath-type-3.0.0.tgz",
+ "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz?cache=0&sync_timestamp=1593529716831&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
+ }
+ },
+ "pbf": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npm.taobao.org/pbf/download/pbf-3.2.1.tgz",
+ "integrity": "sha1-tMG55yr5Zs2CxlMWkRFcwECf/io=",
+ "requires": {
+ "ieee754": "^1.1.12",
+ "resolve-protobuf-schema": "^2.1.0"
+ }
+ },
+ "pbkdf2": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.1.2.tgz?cache=0&sync_timestamp=1617975984684&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpbkdf2%2Fdownload%2Fpbkdf2-3.1.2.tgz",
+ "integrity": "sha1-3YIqoIh1gOUvGgOdw+2hCO+uMHU=",
+ "dev": true,
+ "requires": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "pbkdf2-compat": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/pbkdf2-compat/download/pbkdf2-compat-2.0.1.tgz",
+ "integrity": "sha1-tuDI+plJTZTgURV1gCpZpcFC8og="
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+ "dev": true
+ },
+ "picomatch": {
+ "version": "2.3.0",
+ "resolved": "https://registry.nlark.com/picomatch/download/picomatch-2.3.0.tgz?cache=0&sync_timestamp=1621648246651&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpicomatch%2Fdownload%2Fpicomatch-2.3.0.tgz",
+ "integrity": "sha1-8fBh3o9qS/AiiS4tEoI0+5gwKXI=",
+ "dev": true
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz?cache=0&sync_timestamp=1593529716831&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-4.0.1.tgz",
+ "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=",
+ "dev": true
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz",
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+ "dev": true
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+ "dev": true,
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "pkcs7": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npm.taobao.org/pkcs7/download/pkcs7-0.2.3.tgz",
+ "integrity": "sha1-ItYGZtAQZcXyRDkJjkpIMEUic74="
+ },
+ "pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-4.2.0.tgz?cache=0&sync_timestamp=1602859056682&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-4.2.0.tgz",
+ "integrity": "sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=",
+ "dev": true,
+ "requires": {
+ "find-up": "^4.0.0"
+ }
+ },
+ "pnp-webpack-plugin": {
+ "version": "1.6.4",
+ "resolved": "https://registry.npm.taobao.org/pnp-webpack-plugin/download/pnp-webpack-plugin-1.6.4.tgz",
+ "integrity": "sha1-yXEaxNxIpoXauvyG+Lbdn434QUk=",
+ "dev": true,
+ "requires": {
+ "ts-pnp": "^1.1.6"
+ }
+ },
+ "popper.js": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npm.taobao.org/popper.js/download/popper.js-0.6.4.tgz",
+ "integrity": "sha1-GDfEdgr1TSuyC2b5wJuSmT2Exik="
+ },
+ "portfinder": {
+ "version": "1.0.28",
+ "resolved": "https://registry.npm.taobao.org/portfinder/download/portfinder-1.0.28.tgz",
+ "integrity": "sha1-Z8RiKFK9U3TdHdkA93n1NGL6x3g=",
+ "dev": true,
+ "requires": {
+ "async": "^2.6.2",
+ "debug": "^3.1.1",
+ "mkdirp": "^0.5.5"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.7.tgz?cache=0&sync_timestamp=1607566571506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.7.tgz",
+ "integrity": "sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ }
+ }
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
+ },
+ "postcss": {
+ "version": "7.0.36",
+ "resolved": "https://registry.nlark.com/postcss/download/postcss-7.0.36.tgz",
+ "integrity": "sha1-BW+M/6k5ZiqPWQWVDAfVKFZE38s=",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.nlark.com/supports-color/download/supports-color-6.1.0.tgz?cache=0&sync_timestamp=1622293579301&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz",
+ "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "postcss-calc": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npm.taobao.org/postcss-calc/download/postcss-calc-7.0.5.tgz?cache=0&sync_timestamp=1609689190192&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-calc%2Fdownload%2Fpostcss-calc-7.0.5.tgz",
+ "integrity": "sha1-+KbpnxLmGcLrwjz2xIb9wVhgkz4=",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.27",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.0.2"
+ }
+ },
+ "postcss-colormin": {
+ "version": "4.0.3",
+ "resolved": "https://registry.nlark.com/postcss-colormin/download/postcss-colormin-4.0.3.tgz",
+ "integrity": "sha1-rgYLzpPteUrHEmTwgTLVUJVr04E=",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "color": "^3.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-convert-values": {
+ "version": "4.0.1",
+ "resolved": "https://registry.nlark.com/postcss-convert-values/download/postcss-convert-values-4.0.1.tgz",
+ "integrity": "sha1-yjgT7U2g+BL51DcDWE5Enr4Ymn8=",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-discard-comments": {
+ "version": "4.0.2",
+ "resolved": "https://registry.nlark.com/postcss-discard-comments/download/postcss-discard-comments-4.0.2.tgz?cache=0&sync_timestamp=1621449592883&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-discard-comments%2Fdownload%2Fpostcss-discard-comments-4.0.2.tgz",
+ "integrity": "sha1-H7q9LCRr/2qq15l7KwkY9NevQDM=",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ }
+ },
+ "postcss-discard-duplicates": {
+ "version": "4.0.2",
+ "resolved": "https://registry.nlark.com/postcss-discard-duplicates/download/postcss-discard-duplicates-4.0.2.tgz?cache=0&sync_timestamp=1621449593093&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-discard-duplicates%2Fdownload%2Fpostcss-discard-duplicates-4.0.2.tgz",
+ "integrity": "sha1-P+EzzTyCKC5VD8myORdqkge3hOs=",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ }
+ },
+ "postcss-discard-empty": {
+ "version": "4.0.1",
+ "resolved": "https://registry.nlark.com/postcss-discard-empty/download/postcss-discard-empty-4.0.1.tgz",
+ "integrity": "sha1-yMlR6fc+2UKAGUWERKAq2Qu592U=",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ }
+ },
+ "postcss-discard-overridden": {
+ "version": "4.0.1",
+ "resolved": "https://registry.nlark.com/postcss-discard-overridden/download/postcss-discard-overridden-4.0.1.tgz",
+ "integrity": "sha1-ZSrvipZybwKfXj4AFG7npOdV/1c=",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ }
+ },
+ "postcss-load-config": {
+ "version": "2.1.2",
+ "resolved": "https://registry.nlark.com/postcss-load-config/download/postcss-load-config-2.1.2.tgz",
+ "integrity": "sha1-xepQTyxK7zPHNZo03jVzdyrXUCo=",
+ "dev": true,
+ "requires": {
+ "cosmiconfig": "^5.0.0",
+ "import-cwd": "^2.0.0"
+ }
+ },
+ "postcss-loader": {
+ "version": "3.0.0",
+ "resolved": "https://registry.nlark.com/postcss-loader/download/postcss-loader-3.0.0.tgz?cache=0&sync_timestamp=1623349063856&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-loader%2Fdownload%2Fpostcss-loader-3.0.0.tgz",
+ "integrity": "sha1-a5eUPkfHLYRfqeA/Jzdz1OjdbC0=",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.1.0",
+ "postcss": "^7.0.0",
+ "postcss-load-config": "^2.0.0",
+ "schema-utils": "^1.0.0"
+ },
+ "dependencies": {
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1601922425223&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz",
+ "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ }
+ }
+ },
+ "postcss-merge-longhand": {
+ "version": "4.0.11",
+ "resolved": "https://registry.nlark.com/postcss-merge-longhand/download/postcss-merge-longhand-4.0.11.tgz",
+ "integrity": "sha1-YvSaE+Sg7gTnuY9CuxYGLKJUniQ=",
+ "dev": true,
+ "requires": {
+ "css-color-names": "0.0.4",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "stylehacks": "^4.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-merge-rules": {
+ "version": "4.0.3",
+ "resolved": "https://registry.nlark.com/postcss-merge-rules/download/postcss-merge-rules-4.0.3.tgz?cache=0&sync_timestamp=1622234641993&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-merge-rules%2Fdownload%2Fpostcss-merge-rules-4.0.3.tgz",
+ "integrity": "sha1-NivqT/Wh+Y5AdacTxsslrv75plA=",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "caniuse-api": "^3.0.0",
+ "cssnano-util-same-parent": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.0.0",
+ "vendors": "^1.0.0"
+ },
+ "dependencies": {
+ "postcss-selector-parser": {
+ "version": "3.1.2",
+ "resolved": "https://registry.nlark.com/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz?cache=0&sync_timestamp=1620752924836&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ }
+ }
+ },
+ "postcss-minify-font-values": {
+ "version": "4.0.2",
+ "resolved": "https://registry.nlark.com/postcss-minify-font-values/download/postcss-minify-font-values-4.0.2.tgz",
+ "integrity": "sha1-zUw0TM5HQ0P6xdgiBqssvLiv1aY=",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-minify-gradients": {
+ "version": "4.0.2",
+ "resolved": "https://registry.nlark.com/postcss-minify-gradients/download/postcss-minify-gradients-4.0.2.tgz?cache=0&sync_timestamp=1621449598992&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-minify-gradients%2Fdownload%2Fpostcss-minify-gradients-4.0.2.tgz",
+ "integrity": "sha1-k7KcL/UJnFNe7NpWxKpuZlpmNHE=",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "is-color-stop": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-minify-params": {
+ "version": "4.0.2",
+ "resolved": "https://registry.nlark.com/postcss-minify-params/download/postcss-minify-params-4.0.2.tgz",
+ "integrity": "sha1-a5zvAwwR41Jh+V9hjJADbWgNuHQ=",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "^1.0.0",
+ "browserslist": "^4.0.0",
+ "cssnano-util-get-arguments": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "uniqs": "^2.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-minify-selectors": {
+ "version": "4.0.2",
+ "resolved": "https://registry.nlark.com/postcss-minify-selectors/download/postcss-minify-selectors-4.0.2.tgz?cache=0&sync_timestamp=1621449593365&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-minify-selectors%2Fdownload%2Fpostcss-minify-selectors-4.0.2.tgz",
+ "integrity": "sha1-4uXrQL/uUA0M2SQ1APX46kJi+9g=",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "^1.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-selector-parser": {
+ "version": "3.1.2",
+ "resolved": "https://registry.nlark.com/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz?cache=0&sync_timestamp=1620752924836&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ }
+ }
+ },
+ "postcss-modules-extract-imports": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/postcss-modules-extract-imports/download/postcss-modules-extract-imports-2.0.0.tgz?cache=0&sync_timestamp=1602588202058&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-extract-imports%2Fdownload%2Fpostcss-modules-extract-imports-2.0.0.tgz",
+ "integrity": "sha1-gYcZoa4doyX5gyRGsBE27rSTzX4=",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.5"
+ }
+ },
+ "postcss-modules-local-by-default": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npm.taobao.org/postcss-modules-local-by-default/download/postcss-modules-local-by-default-3.0.3.tgz",
+ "integrity": "sha1-uxTgzHgnnVBNvcv9fgyiiZP/u7A=",
+ "dev": true,
+ "requires": {
+ "icss-utils": "^4.1.1",
+ "postcss": "^7.0.32",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.1.0"
+ }
+ },
+ "postcss-modules-scope": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npm.taobao.org/postcss-modules-scope/download/postcss-modules-scope-2.2.0.tgz",
+ "integrity": "sha1-OFyuATzHdD9afXYC0Qc6iequYu4=",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.6",
+ "postcss-selector-parser": "^6.0.0"
+ }
+ },
+ "postcss-modules-values": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/postcss-modules-values/download/postcss-modules-values-3.0.0.tgz?cache=0&sync_timestamp=1602586308035&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-modules-values%2Fdownload%2Fpostcss-modules-values-3.0.0.tgz",
+ "integrity": "sha1-W1AA1uuuKbQlUwG0o6VFdEI+fxA=",
+ "dev": true,
+ "requires": {
+ "icss-utils": "^4.0.0",
+ "postcss": "^7.0.6"
+ }
+ },
+ "postcss-normalize-charset": {
+ "version": "4.0.1",
+ "resolved": "https://registry.nlark.com/postcss-normalize-charset/download/postcss-normalize-charset-4.0.1.tgz?cache=0&sync_timestamp=1621449593655&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-charset%2Fdownload%2Fpostcss-normalize-charset-4.0.1.tgz",
+ "integrity": "sha1-izWt067oOhNrBHHg1ZvlilAoXdQ=",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ }
+ },
+ "postcss-normalize-display-values": {
+ "version": "4.0.2",
+ "resolved": "https://registry.nlark.com/postcss-normalize-display-values/download/postcss-normalize-display-values-4.0.2.tgz?cache=0&sync_timestamp=1621449599414&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-display-values%2Fdownload%2Fpostcss-normalize-display-values-4.0.2.tgz",
+ "integrity": "sha1-Db4EpM6QY9RmftK+R2u4MMglk1o=",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-positions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.nlark.com/postcss-normalize-positions/download/postcss-normalize-positions-4.0.2.tgz",
+ "integrity": "sha1-BfdX+E8mBDc3g2ipH4ky1LECkX8=",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-repeat-style": {
+ "version": "4.0.2",
+ "resolved": "https://registry.nlark.com/postcss-normalize-repeat-style/download/postcss-normalize-repeat-style-4.0.2.tgz?cache=0&sync_timestamp=1621449596114&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-repeat-style%2Fdownload%2Fpostcss-normalize-repeat-style-4.0.2.tgz",
+ "integrity": "sha1-xOu8KJ85kaAo1EdRy90RkYsXkQw=",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-string": {
+ "version": "4.0.2",
+ "resolved": "https://registry.nlark.com/postcss-normalize-string/download/postcss-normalize-string-4.0.2.tgz?cache=0&sync_timestamp=1621449595099&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-string%2Fdownload%2Fpostcss-normalize-string-4.0.2.tgz",
+ "integrity": "sha1-zUTECrB6DHo23F6Zqs4eyk7CaQw=",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-timing-functions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.nlark.com/postcss-normalize-timing-functions/download/postcss-normalize-timing-functions-4.0.2.tgz",
+ "integrity": "sha1-jgCcoqOUnNr4rSPmtquZy159KNk=",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-unicode": {
+ "version": "4.0.1",
+ "resolved": "https://registry.nlark.com/postcss-normalize-unicode/download/postcss-normalize-unicode-4.0.1.tgz",
+ "integrity": "sha1-hBvUj9zzAZrUuqdJOj02O1KuHPs=",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-url": {
+ "version": "4.0.1",
+ "resolved": "https://registry.nlark.com/postcss-normalize-url/download/postcss-normalize-url-4.0.1.tgz?cache=0&sync_timestamp=1623330408845&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-url%2Fdownload%2Fpostcss-normalize-url-4.0.1.tgz",
+ "integrity": "sha1-EOQ3+GvHx+WPe5ZS7YeNqqlfquE=",
+ "dev": true,
+ "requires": {
+ "is-absolute-url": "^2.0.0",
+ "normalize-url": "^3.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-whitespace": {
+ "version": "4.0.2",
+ "resolved": "https://registry.nlark.com/postcss-normalize-whitespace/download/postcss-normalize-whitespace-4.0.2.tgz?cache=0&sync_timestamp=1621449593892&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-normalize-whitespace%2Fdownload%2Fpostcss-normalize-whitespace-4.0.2.tgz",
+ "integrity": "sha1-vx1AcP5Pzqh9E0joJdjMDF+qfYI=",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-ordered-values": {
+ "version": "4.1.2",
+ "resolved": "https://registry.nlark.com/postcss-ordered-values/download/postcss-ordered-values-4.1.2.tgz?cache=0&sync_timestamp=1623330247733&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-ordered-values%2Fdownload%2Fpostcss-ordered-values-4.1.2.tgz",
+ "integrity": "sha1-DPdcgg7H1cTSgBiVWeC1ceusDu4=",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-prefix-selector": {
+ "version": "1.10.0",
+ "resolved": "https://registry.nlark.com/postcss-prefix-selector/download/postcss-prefix-selector-1.10.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-prefix-selector%2Fdownload%2Fpostcss-prefix-selector-1.10.0.tgz",
+ "integrity": "sha1-ftMZTUT2wxSrS9k6S3uKLYlxiEQ=",
+ "dev": true,
+ "requires": {
+ "postcss": "^8.2.10"
+ },
+ "dependencies": {
+ "postcss": {
+ "version": "8.3.6",
+ "resolved": "https://registry.nlark.com/postcss/download/postcss-8.3.6.tgz?cache=0&sync_timestamp=1626882933935&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss%2Fdownload%2Fpostcss-8.3.6.tgz",
+ "integrity": "sha1-JzDddql5afN/U7mmCWGXvjEcxOo=",
+ "dev": true,
+ "requires": {
+ "colorette": "^1.2.2",
+ "nanoid": "^3.1.23",
+ "source-map-js": "^0.6.2"
+ }
+ }
+ }
+ },
+ "postcss-reduce-initial": {
+ "version": "4.0.3",
+ "resolved": "https://registry.nlark.com/postcss-reduce-initial/download/postcss-reduce-initial-4.0.3.tgz?cache=0&sync_timestamp=1621449599206&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-reduce-initial%2Fdownload%2Fpostcss-reduce-initial-4.0.3.tgz",
+ "integrity": "sha1-f9QuvqXpyBRgljniwuhK4nC6SN8=",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "caniuse-api": "^3.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0"
+ }
+ },
+ "postcss-reduce-transforms": {
+ "version": "4.0.2",
+ "resolved": "https://registry.nlark.com/postcss-reduce-transforms/download/postcss-reduce-transforms-4.0.2.tgz",
+ "integrity": "sha1-F++kBerMbge+NBSlyi0QdGgdTik=",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-match": "^4.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "6.0.6",
+ "resolved": "https://registry.nlark.com/postcss-selector-parser/download/postcss-selector-parser-6.0.6.tgz?cache=0&sync_timestamp=1620752924836&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-6.0.6.tgz",
+ "integrity": "sha1-LFu6gXSsL2mBq2MaQqsO5UrzMuo=",
+ "dev": true,
+ "requires": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "postcss-svgo": {
+ "version": "4.0.3",
+ "resolved": "https://registry.nlark.com/postcss-svgo/download/postcss-svgo-4.0.3.tgz?cache=0&sync_timestamp=1622234649078&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-svgo%2Fdownload%2Fpostcss-svgo-4.0.3.tgz",
+ "integrity": "sha1-NDos26yVBdQWJD1Jb3JPOIlMlB4=",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "svgo": "^1.0.0"
+ },
+ "dependencies": {
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=",
+ "dev": true
+ }
+ }
+ },
+ "postcss-unique-selectors": {
+ "version": "4.0.1",
+ "resolved": "https://registry.nlark.com/postcss-unique-selectors/download/postcss-unique-selectors-4.0.1.tgz",
+ "integrity": "sha1-lEaRHzKJv9ZMbWgPBzwDsfnuS6w=",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "^1.0.0",
+ "postcss": "^7.0.0",
+ "uniqs": "^2.0.0"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.1.0.tgz",
+ "integrity": "sha1-RD9qIM7WSBor2k+oUypuVdeJoss=",
+ "dev": true
+ },
+ "posthtml": {
+ "version": "0.9.2",
+ "resolved": "https://registry.nlark.com/posthtml/download/posthtml-0.9.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fposthtml%2Fdownload%2Fposthtml-0.9.2.tgz",
+ "integrity": "sha1-9MBtufZ7Yf0XxOJW5+PZUVv3Jv0=",
+ "dev": true,
+ "requires": {
+ "posthtml-parser": "^0.2.0",
+ "posthtml-render": "^1.0.5"
+ }
+ },
+ "posthtml-parser": {
+ "version": "0.2.1",
+ "resolved": "https://registry.nlark.com/posthtml-parser/download/posthtml-parser-0.2.1.tgz",
+ "integrity": "sha1-NdUw3jhnQMK6JP8usvrznM3ycd0=",
+ "dev": true,
+ "requires": {
+ "htmlparser2": "^3.8.3",
+ "isobject": "^2.1.0"
+ },
+ "dependencies": {
+ "domhandler": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npm.taobao.org/domhandler/download/domhandler-2.4.2.tgz?cache=0&sync_timestamp=1618563983578&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomhandler%2Fdownload%2Fdomhandler-2.4.2.tgz",
+ "integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1"
+ }
+ },
+ "entities": {
+ "version": "1.1.2",
+ "resolved": "https://registry.nlark.com/entities/download/entities-1.1.2.tgz",
+ "integrity": "sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=",
+ "dev": true
+ },
+ "htmlparser2": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.1.tgz?cache=0&sync_timestamp=1617916210217&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtmlparser2%2Fdownload%2Fhtmlparser2-3.10.1.tgz",
+ "integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^1.3.1",
+ "domhandler": "^2.3.0",
+ "domutils": "^1.5.1",
+ "entities": "^1.1.1",
+ "inherits": "^2.0.1",
+ "readable-stream": "^3.1.1"
+ }
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.nlark.com/isobject/download/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz",
+ "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ }
+ }
+ },
+ "posthtml-rename-id": {
+ "version": "1.0.12",
+ "resolved": "https://registry.nlark.com/posthtml-rename-id/download/posthtml-rename-id-1.0.12.tgz",
+ "integrity": "sha1-z39us3FGvxr6wx5o8YxswZrmFDM=",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "1.0.5"
+ }
+ },
+ "posthtml-render": {
+ "version": "1.4.0",
+ "resolved": "https://registry.nlark.com/posthtml-render/download/posthtml-render-1.4.0.tgz?cache=0&sync_timestamp=1627374519063&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fposthtml-render%2Fdownload%2Fposthtml-render-1.4.0.tgz",
+ "integrity": "sha1-QBFAcMRYgcrLkzR9rj7/U6+8/xM=",
+ "dev": true
+ },
+ "posthtml-svg-mode": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/posthtml-svg-mode/download/posthtml-svg-mode-1.0.3.tgz",
+ "integrity": "sha1-q9VU+s6BIjyrDLNn4Y5O/SpOdLA=",
+ "dev": true,
+ "requires": {
+ "merge-options": "1.0.1",
+ "posthtml": "^0.9.2",
+ "posthtml-parser": "^0.2.1",
+ "posthtml-render": "^1.0.6"
+ }
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz",
+ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+ "dev": true
+ },
+ "prepend-http": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz",
+ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+ "dev": true
+ },
+ "preserve": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npm.taobao.org/preserve/download/preserve-0.2.0.tgz",
+ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks="
+ },
+ "prettier": {
+ "version": "2.3.2",
+ "resolved": "https://registry.nlark.com/prettier/download/prettier-2.3.2.tgz",
+ "integrity": "sha1-7ygKBewlNxLkhiM9tcbyNEHnNC0=",
+ "dev": true
+ },
+ "prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/prettier-linter-helpers/download/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha1-0j1B/hN1ZG3i0BBNNFSjAIgCz3s=",
+ "dev": true,
+ "requires": {
+ "fast-diff": "^1.1.2"
+ }
+ },
+ "pretty-error": {
+ "version": "2.1.2",
+ "resolved": "https://registry.nlark.com/pretty-error/download/pretty-error-2.1.2.tgz",
+ "integrity": "sha1-von4LYGxyG7I/fvDhQRYgnJ/k7Y=",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.20",
+ "renderkid": "^2.0.4"
+ }
+ },
+ "pretty-hrtime": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npm.taobao.org/pretty-hrtime/download/pretty-hrtime-0.2.2.tgz",
+ "integrity": "sha1-1P2INR46R0H4Fzr31qS4RvmJXAA="
+ },
+ "private": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npm.taobao.org/private/download/private-0.1.8.tgz",
+ "integrity": "sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8="
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
+ },
+ "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="
+ },
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz",
+ "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=",
+ "dev": true
+ },
+ "promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz",
+ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+ "dev": true
+ },
+ "protocol-buffers-schema": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npm.taobao.org/protocol-buffers-schema/download/protocol-buffers-schema-3.5.1.tgz?cache=0&sync_timestamp=1611415627212&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprotocol-buffers-schema%2Fdownload%2Fprotocol-buffers-schema-3.5.1.tgz",
+ "integrity": "sha1-g4jnaNODrIy+oj4SgN+tt59BIq0="
+ },
+ "proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.nlark.com/proxy-addr/download/proxy-addr-2.0.7.tgz",
+ "integrity": "sha1-8Z/mnOqzEe65S0LnDowgcPm6ECU=",
+ "dev": true,
+ "requires": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ }
+ },
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz",
+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY="
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
+ },
+ "psl": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npm.taobao.org/psl/download/psl-1.8.0.tgz",
+ "integrity": "sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ="
+ },
+ "public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npm.taobao.org/public-encrypt/download/public-encrypt-4.0.3.tgz",
+ "integrity": "sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-4.12.0.tgz",
+ "integrity": "sha1-d1s/J477uXGO7HNh9IP7Nvu/6og=",
+ "dev": true
+ }
+ }
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz",
+ "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npm.taobao.org/pumpify/download/pumpify-1.5.1.tgz",
+ "integrity": "sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4=",
+ "dev": true,
+ "requires": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz",
+ "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz",
+ "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew="
+ },
+ "q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npm.taobao.org/q/download/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="
+ },
+ "qs": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz?cache=0&sync_timestamp=1616385315895&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.5.2.tgz",
+ "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=",
+ "dev": true
+ },
+ "query-string": {
+ "version": "4.3.4",
+ "resolved": "https://registry.nlark.com/query-string/download/query-string-4.3.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fquery-string%2Fdownload%2Fquery-string-4.3.4.tgz",
+ "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.1.0",
+ "strict-uri-encode": "^1.0.0"
+ }
+ },
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npm.taobao.org/querystring/download/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
+ },
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npm.taobao.org/querystring-es3/download/querystring-es3-0.2.1.tgz",
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM="
+ },
+ "querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npm.taobao.org/querystringify/download/querystringify-2.2.0.tgz?cache=0&sync_timestamp=1597687052330&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquerystringify%2Fdownload%2Fquerystringify-2.2.0.tgz",
+ "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y=",
+ "dev": true
+ },
+ "quickselect": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/quickselect/download/quickselect-2.0.0.tgz",
+ "integrity": "sha1-8ZaApIal7vtYEwPgI+mPqvJd0Bg="
+ },
+ "randomatic": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npm.taobao.org/randomatic/download/randomatic-3.1.1.tgz",
+ "integrity": "sha1-t3bvxZN1mE42xTey9RofCv8Noe0=",
+ "requires": {
+ "is-number": "^4.0.0",
+ "kind-of": "^6.0.0",
+ "math-random": "^1.0.1"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-number/download/is-number-4.0.0.tgz",
+ "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8="
+ }
+ }
+ },
+ "randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz",
+ "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/randomfill/download/randomfill-1.0.4.tgz",
+ "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz",
+ "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=",
+ "dev": true
+ },
+ "raw-body": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz",
+ "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=",
+ "dev": true,
+ "requires": {
+ "bytes": "3.1.0",
+ "http-errors": "1.7.2",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ }
+ },
+ "rbush": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npm.taobao.org/rbush/download/rbush-3.0.1.tgz",
+ "integrity": "sha1-X6+op5s7mv3+UAhAOnIMwd6ILs8=",
+ "requires": {
+ "quickselect": "^2.0.0"
+ }
+ },
+ "read-pkg": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-5.2.0.tgz",
+ "integrity": "sha1-e/KVQ4yloz5WzTDgU7NO5yUMk8w=",
+ "dev": true,
+ "requires": {
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^2.5.0",
+ "parse-json": "^5.0.0",
+ "type-fest": "^0.6.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz",
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz",
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-1.1.0.tgz?cache=0&sync_timestamp=1611752058913&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-type%2Fdownload%2Fpath-type-1.1.0.tgz",
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz?cache=0&sync_timestamp=1593529716831&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-1.1.0.tgz",
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
+ }
+ }
+ }
+ },
+ "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"
+ }
+ },
+ "readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-3.6.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-3.6.0.tgz",
+ "integrity": "sha1-dKNwvYVxFuJFspzJc0DNQxoCpsc=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "picomatch": "^2.2.1"
+ }
+ },
+ "recast": {
+ "version": "0.10.33",
+ "resolved": "https://registry.npm.taobao.org/recast/download/recast-0.10.33.tgz?cache=0&sync_timestamp=1602526173711&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frecast%2Fdownload%2Frecast-0.10.33.tgz",
+ "integrity": "sha1-lCgI96oBbx+nFCxGHX5XBKqo1pc=",
+ "requires": {
+ "ast-types": "0.8.12",
+ "esprima-fb": "~15001.1001.0-dev-harmony-fb",
+ "private": "~0.1.5",
+ "source-map": "~0.5.0"
+ },
+ "dependencies": {
+ "ast-types": {
+ "version": "0.8.12",
+ "resolved": "https://registry.npm.taobao.org/ast-types/download/ast-types-0.8.12.tgz?cache=0&sync_timestamp=1599935882818&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fast-types%2Fdownload%2Fast-types-0.8.12.tgz",
+ "integrity": "sha1-oNkOQ1G7iHcWyD/WN+v4GK9K38w="
+ },
+ "esprima-fb": {
+ "version": "15001.1001.0-dev-harmony-fb",
+ "resolved": "https://registry.npm.taobao.org/esprima-fb/download/esprima-fb-15001.1001.0-dev-harmony-fb.tgz",
+ "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk="
+ }
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.nlark.com/redent/download/redent-1.0.0.tgz?cache=0&sync_timestamp=1620069702182&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fredent%2Fdownload%2Fredent-1.0.0.tgz",
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+ "dev": true,
+ "requires": {
+ "indent-string": "^2.1.0",
+ "strip-indent": "^1.0.1"
+ },
+ "dependencies": {
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npm.taobao.org/get-stdin/download/get-stdin-4.0.1.tgz",
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+ "dev": true
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.nlark.com/strip-indent/download/strip-indent-1.0.1.tgz",
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+ "dev": true,
+ "requires": {
+ "get-stdin": "^4.0.1"
+ }
+ }
+ }
+ },
+ "regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npm.taobao.org/regenerate/download/regenerate-1.4.2.tgz?cache=0&sync_timestamp=1604220147658&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregenerate%2Fdownload%2Fregenerate-1.4.2.tgz",
+ "integrity": "sha1-uTRtiCfo9aMve6KWN9OYtpAUhIo="
+ },
+ "regenerate-unicode-properties": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.2.0.tgz",
+ "integrity": "sha1-5d5xEdZV57pgwFfb6f83yH5lzew=",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.0"
+ }
+ },
+ "regenerator": {
+ "version": "0.8.40",
+ "resolved": "https://registry.npm.taobao.org/regenerator/download/regenerator-0.8.40.tgz",
+ "integrity": "sha1-oORXxY69uuV1yfjNdRJ+k3VkNdg=",
+ "requires": {
+ "commoner": "~0.10.3",
+ "defs": "~1.1.0",
+ "esprima-fb": "~15001.1001.0-dev-harmony-fb",
+ "private": "~0.1.5",
+ "recast": "0.10.33",
+ "through": "~2.3.8"
+ },
+ "dependencies": {
+ "esprima-fb": {
+ "version": "15001.1001.0-dev-harmony-fb",
+ "resolved": "https://registry.npm.taobao.org/esprima-fb/download/esprima-fb-15001.1001.0-dev-harmony-fb.tgz",
+ "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk="
+ }
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.13.7",
+ "resolved": "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.7.tgz",
+ "integrity": "sha1-ysLazIoepnX+qrrriugziYrkb1U=",
+ "dev": true
+ },
+ "regenerator-transform": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.14.5.tgz",
+ "integrity": "sha1-yY2hVGg2ccnE3LFuznNlF+G3/rQ=",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
+ "regex-cache": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npm.taobao.org/regex-cache/download/regex-cache-0.4.4.tgz",
+ "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=",
+ "requires": {
+ "is-equal-shallow": "^0.1.3"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz",
+ "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=",
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "regexp.prototype.flags": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npm.taobao.org/regexp.prototype.flags/download/regexp.prototype.flags-1.3.1.tgz?cache=0&sync_timestamp=1610725764337&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexp.prototype.flags%2Fdownload%2Fregexp.prototype.flags-1.3.1.tgz",
+ "integrity": "sha1-fvNSro0VnnWMDq3Kb4/LTu8HviY=",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ }
+ },
+ "regexpp": {
+ "version": "2.0.1",
+ "resolved": "https://registry.nlark.com/regexpp/download/regexpp-2.0.1.tgz?cache=0&sync_timestamp=1623668872577&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fregexpp%2Fdownload%2Fregexpp-2.0.1.tgz",
+ "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=",
+ "dev": true
+ },
+ "regexpu": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npm.taobao.org/regexpu/download/regexpu-1.3.0.tgz",
+ "integrity": "sha1-5TTcmRqeWEYFDJjebX3UpVyeoW0=",
+ "requires": {
+ "esprima": "^2.6.0",
+ "recast": "^0.10.10",
+ "regenerate": "^1.2.1",
+ "regjsgen": "^0.2.0",
+ "regjsparser": "^0.1.4"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npm.taobao.org/esprima/download/esprima-2.7.3.tgz",
+ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE="
+ },
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz?cache=0&sync_timestamp=1603891161295&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsesc%2Fdownload%2Fjsesc-0.5.0.tgz",
+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0="
+ },
+ "regjsgen": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.2.0.tgz",
+ "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc="
+ },
+ "regjsparser": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.1.5.tgz",
+ "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
+ "requires": {
+ "jsesc": "~0.5.0"
+ }
+ }
+ }
+ },
+ "regexpu-core": {
+ "version": "4.7.1",
+ "resolved": "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-4.7.1.tgz?cache=0&sync_timestamp=1600413542312&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpu-core%2Fdownload%2Fregexpu-core-4.7.1.tgz",
+ "integrity": "sha1-LepamgcjMpj78NuR+pq8TG4PitY=",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.0",
+ "regenerate-unicode-properties": "^8.2.0",
+ "regjsgen": "^0.5.1",
+ "regjsparser": "^0.6.4",
+ "unicode-match-property-ecmascript": "^1.0.4",
+ "unicode-match-property-value-ecmascript": "^1.2.0"
+ }
+ },
+ "regjsgen": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.5.2.tgz",
+ "integrity": "sha1-kv8pX7He7L9uzaslQ9IH6RqjNzM=",
+ "dev": true
+ },
+ "regjsparser": {
+ "version": "0.6.9",
+ "resolved": "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.9.tgz?cache=0&sync_timestamp=1616544864193&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregjsparser%2Fdownload%2Fregjsparser-0.6.9.tgz",
+ "integrity": "sha1-tInu98mizkNydicBFCnPgzpxg+Y=",
+ "dev": true,
+ "requires": {
+ "jsesc": "~0.5.0"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz?cache=0&sync_timestamp=1603891161295&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsesc%2Fdownload%2Fjsesc-0.5.0.tgz",
+ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+ "dev": true
+ }
+ }
+ },
+ "relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npm.taobao.org/relateurl/download/relateurl-0.2.7.tgz",
+ "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
+ "dev": true
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
+ },
+ "renderkid": {
+ "version": "2.0.7",
+ "resolved": "https://registry.nlark.com/renderkid/download/renderkid-2.0.7.tgz?cache=0&sync_timestamp=1623343659191&other_urls=https%3A%2F%2Fregistry.nlark.com%2Frenderkid%2Fdownload%2Frenderkid-2.0.7.tgz",
+ "integrity": "sha1-Rk8namvc7mBvShWZP5sp/HTKhgk=",
+ "dev": true,
+ "requires": {
+ "css-select": "^4.1.3",
+ "dom-converter": "^0.2.0",
+ "htmlparser2": "^6.1.0",
+ "lodash": "^4.17.21",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "css-select": {
+ "version": "4.1.3",
+ "resolved": "https://registry.nlark.com/css-select/download/css-select-4.1.3.tgz?cache=0&sync_timestamp=1622994276976&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-select%2Fdownload%2Fcss-select-4.1.3.tgz",
+ "integrity": "sha1-pwRA9wMX8maRGK10/xBeZYSccGc=",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-what": "^5.0.0",
+ "domhandler": "^4.2.0",
+ "domutils": "^2.6.0",
+ "nth-check": "^2.0.0"
+ }
+ },
+ "css-what": {
+ "version": "5.0.1",
+ "resolved": "https://registry.nlark.com/css-what/download/css-what-5.0.1.tgz?cache=0&sync_timestamp=1622227760882&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcss-what%2Fdownload%2Fcss-what-5.0.1.tgz",
+ "integrity": "sha1-PvqCATH0ZpqKwkCPnDLnx96fTK0=",
+ "dev": true
+ },
+ "dom-serializer": {
+ "version": "1.3.2",
+ "resolved": "https://registry.nlark.com/dom-serializer/download/dom-serializer-1.3.2.tgz?cache=0&sync_timestamp=1621256918158&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdom-serializer%2Fdownload%2Fdom-serializer-1.3.2.tgz",
+ "integrity": "sha1-YgZDfTLO767HFhgDIwx6ILwbTZE=",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ }
+ },
+ "domelementtype": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.2.0.tgz?cache=0&sync_timestamp=1617298554829&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-2.2.0.tgz",
+ "integrity": "sha1-mgtsJ4LtahxzI9QiZxg9+b2LHVc=",
+ "dev": true
+ },
+ "domutils": {
+ "version": "2.7.0",
+ "resolved": "https://registry.nlark.com/domutils/download/domutils-2.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fdomutils%2Fdownload%2Fdomutils-2.7.0.tgz",
+ "integrity": "sha1-jrrwxB66/PVbC3LsMcVjI3EsVEI=",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ }
+ },
+ "nth-check": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/nth-check/download/nth-check-2.0.0.tgz?cache=0&sync_timestamp=1606860664533&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnth-check%2Fdownload%2Fnth-check-2.0.0.tgz",
+ "integrity": "sha1-G7T22scAcvwxPoyc0UF7UHTAoSU=",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
+ "repeat-element": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.4.tgz",
+ "integrity": "sha1-vmgVIIR6tYx1aKx1+/rSjtQtOek="
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.nlark.com/repeating/download/repeating-2.0.1.tgz",
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+ "dev": true,
+ "requires": {
+ "is-finite": "^1.0.0"
+ }
+ },
+ "replace-ext": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npm.taobao.org/replace-ext/download/replace-ext-0.0.1.tgz",
+ "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ="
+ },
+ "request": {
+ "version": "2.88.2",
+ "resolved": "https://registry.npm.taobao.org/request/download/request-2.88.2.tgz",
+ "integrity": "sha1-1zyRhzHLWofaBH4gcjQUb2ZNErM=",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.3",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.5.0",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.3.2"
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz",
+ "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=",
+ "dev": true
+ },
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz",
+ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+ "dev": true
+ },
+ "resize-observer-polyfill": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz",
+ "integrity": "sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ="
+ },
+ "resolve": {
+ "version": "1.20.0",
+ "resolved": "https://registry.npm.taobao.org/resolve/download/resolve-1.20.0.tgz",
+ "integrity": "sha1-YpoBP7P3B1XW8LeTXMHCxTeLGXU=",
+ "requires": {
+ "is-core-module": "^2.2.0",
+ "path-parse": "^1.0.6"
+ }
+ },
+ "resolve-cwd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz",
+ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+ "dev": true,
+ "requires": {
+ "resolve-from": "^3.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "dev": true
+ },
+ "resolve-protobuf-schema": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/resolve-protobuf-schema/download/resolve-protobuf-schema-2.1.0.tgz",
+ "integrity": "sha1-nKmp5pzxkrva8QBuwZc5SKpKN1g=",
+ "requires": {
+ "protocol-buffers-schema": "^3.3.1"
+ }
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo="
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz",
+ "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+ "dev": true,
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz?cache=0&sync_timestamp=1613002746282&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fret%2Fdownload%2Fret-0.1.15.tgz",
+ "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w="
+ },
+ "retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.nlark.com/retry/download/retry-0.12.0.tgz",
+ "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
+ "dev": true
+ },
+ "rgb-regex": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz",
+ "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=",
+ "dev": true
+ },
+ "rgba-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/rgba-regex/download/rgba-regex-1.0.0.tgz",
+ "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=",
+ "dev": true
+ },
+ "right-align": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npm.taobao.org/right-align/download/right-align-0.1.3.tgz",
+ "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+ "requires": {
+ "align-text": "^0.1.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz",
+ "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npm.taobao.org/ripemd160/download/ripemd160-2.0.2.tgz",
+ "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "run-async": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npm.taobao.org/run-async/download/run-async-2.4.1.tgz",
+ "integrity": "sha1-hEDsz5nqPnC9QJ1JqriOEMGJpFU=",
+ "dev": true
+ },
+ "run-queue": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/run-queue/download/run-queue-1.0.3.tgz",
+ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1"
+ }
+ },
+ "rust-result": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/rust-result/download/rust-result-1.0.0.tgz",
+ "integrity": "sha1-NMdbLm3Dn+WHXlveyFteD5FTb3I=",
+ "requires": {
+ "individual": "^2.0.0"
+ }
+ },
+ "rw": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npm.taobao.org/rw/download/rw-1.3.3.tgz",
+ "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q="
+ },
+ "rxjs": {
+ "version": "6.6.7",
+ "resolved": "https://registry.nlark.com/rxjs/download/rxjs-6.6.7.tgz?cache=0&sync_timestamp=1621619391474&other_urls=https%3A%2F%2Fregistry.nlark.com%2Frxjs%2Fdownload%2Frxjs-6.6.7.tgz",
+ "integrity": "sha1-kKwBisq/SRv2UEQjXVhjxNq4BMk=",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
+ "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
+ },
+ "safe-json-parse": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/safe-json-parse/download/safe-json-parse-4.0.0.tgz",
+ "integrity": "sha1-fA9XjPzNEtM6ccDgVBPi7KFx6qw=",
+ "requires": {
+ "rust-result": "^1.0.0"
+ }
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz",
+ "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo="
+ },
+ "sass-graph": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npm.taobao.org/sass-graph/download/sass-graph-2.2.5.tgz",
+ "integrity": "sha1-qYHIdEa4MZ2W3OBnHkh4eb0kwug=",
+ "dev": true,
+ "requires": {
+ "glob": "^7.0.0",
+ "lodash": "^4.0.0",
+ "scss-tokenizer": "^0.2.3",
+ "yargs": "^13.3.2"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz?cache=0&sync_timestamp=1603921884289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-5.3.1.tgz",
+ "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
+ "dev": true
+ },
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-5.0.0.tgz",
+ "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz",
+ "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=",
+ "dev": true
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz",
+ "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz?cache=0&sync_timestamp=1618552489864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz",
+ "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz",
+ "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz?cache=0&sync_timestamp=1618558751438&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-3.1.0.tgz",
+ "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz",
+ "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ }
+ },
+ "yargs": {
+ "version": "13.3.2",
+ "resolved": "https://registry.nlark.com/yargs/download/yargs-13.3.2.tgz?cache=0&sync_timestamp=1620086644940&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs%2Fdownload%2Fyargs-13.3.2.tgz",
+ "integrity": "sha1-rX/+/sGqWVZayRX4Lcyzipwxot0=",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.2",
+ "resolved": "https://registry.nlark.com/yargs-parser/download/yargs-parser-13.1.2.tgz?cache=0&sync_timestamp=1624233514145&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs-parser%2Fdownload%2Fyargs-parser-13.1.2.tgz",
+ "integrity": "sha1-Ew8JcC667vJlDVTObj5XBvek+zg=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "sass-loader": {
+ "version": "8.0.2",
+ "resolved": "https://registry.nlark.com/sass-loader/download/sass-loader-8.0.2.tgz?cache=0&sync_timestamp=1623350053592&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsass-loader%2Fdownload%2Fsass-loader-8.0.2.tgz",
+ "integrity": "sha1-3r7NjDziQ8dkVPLoKQSCFQOACQ0=",
+ "dev": true,
+ "requires": {
+ "clone-deep": "^4.0.1",
+ "loader-utils": "^1.2.3",
+ "neo-async": "^2.6.1",
+ "schema-utils": "^2.6.1",
+ "semver": "^6.3.0"
+ }
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz",
+ "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=",
+ "dev": true
+ },
+ "schema-utils": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-2.7.1.tgz?cache=0&sync_timestamp=1601922425223&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-2.7.1.tgz",
+ "integrity": "sha1-HKTzLRskxZDCA7jnpQvw6kzTlNc=",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.5",
+ "ajv": "^6.12.4",
+ "ajv-keywords": "^3.5.2"
+ }
+ },
+ "scss-tokenizer": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npm.taobao.org/scss-tokenizer/download/scss-tokenizer-0.2.3.tgz",
+ "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
+ "dev": true,
+ "requires": {
+ "js-base64": "^2.1.8",
+ "source-map": "^0.4.2"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "dev": true,
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
+ }
+ }
+ },
+ "select-hose": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz",
+ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
+ "dev": true
+ },
+ "selfsigned": {
+ "version": "1.10.11",
+ "resolved": "https://registry.nlark.com/selfsigned/download/selfsigned-1.10.11.tgz",
+ "integrity": "sha1-JJKc2Qb+D0S20B+yOZmnOVN6y+k=",
+ "dev": true,
+ "requires": {
+ "node-forge": "^0.10.0"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz",
+ "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=",
+ "dev": true
+ },
+ "send": {
+ "version": "0.17.1",
+ "resolved": "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz",
+ "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "~1.1.2",
+ "destroy": "~1.0.4",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "~1.7.2",
+ "mime": "1.6.0",
+ "ms": "2.1.1",
+ "on-finished": "~2.3.0",
+ "range-parser": "~1.2.1",
+ "statuses": "~1.5.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566571506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+ "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433872491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ }
+ }
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz?cache=0&sync_timestamp=1613584838235&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-1.6.0.tgz",
+ "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz?cache=0&sync_timestamp=1607433872491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.1.tgz",
+ "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=",
+ "dev": true
+ }
+ }
+ },
+ "sequencify": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npm.taobao.org/sequencify/download/sequencify-0.0.7.tgz",
+ "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw="
+ },
+ "serialize-javascript": {
+ "version": "4.0.0",
+ "resolved": "https://registry.nlark.com/serialize-javascript/download/serialize-javascript-4.0.0.tgz?cache=0&sync_timestamp=1624284111898&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-4.0.0.tgz",
+ "integrity": "sha1-tSXhI4SJpez8Qq+sw/6Z5mb0sao=",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "serve-index": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npm.taobao.org/serve-index/download/serve-index-1.9.1.tgz",
+ "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.4",
+ "batch": "0.6.1",
+ "debug": "2.6.9",
+ "escape-html": "~1.0.3",
+ "http-errors": "~1.6.2",
+ "mime-types": "~2.1.17",
+ "parseurl": "~1.3.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566571506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+ "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "http-errors": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz",
+ "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+ "dev": true,
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": ">= 1.4.0 < 2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433872491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz",
+ "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=",
+ "dev": true
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz",
+ "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=",
+ "dev": true,
+ "requires": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.17.1"
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true
+ },
+ "set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.nlark.com/set-value/download/set-value-2.0.1.tgz",
+ "integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=",
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npm.taobao.org/setimmediate/download/setimmediate-1.0.5.tgz",
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
+ },
+ "setprototypeof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz",
+ "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=",
+ "dev": true
+ },
+ "sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npm.taobao.org/sha.js/download/sha.js-2.4.11.tgz",
+ "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "shallow-clone": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npm.taobao.org/shallow-clone/download/shallow-clone-3.0.1.tgz",
+ "integrity": "sha1-jymBrZJTH1UDWwH7IwdppA4C76M=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.2"
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
+ },
+ "shell-quote": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npm.taobao.org/shell-quote/download/shell-quote-1.7.2.tgz",
+ "integrity": "sha1-Z6fQLHbJ2iT5nSCAj8re0ODgS+I=",
+ "dev": true
+ },
+ "sigmund": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/sigmund/download/sigmund-1.0.1.tgz",
+ "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA="
+ },
+ "signal-exit": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.3.tgz?cache=0&sync_timestamp=1592843131591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsignal-exit%2Fdownload%2Fsignal-exit-3.0.3.tgz",
+ "integrity": "sha1-oUEMLt2PB3sItOJTyOrPyvBXRhw=",
+ "dev": true
+ },
+ "simple-fmt": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npm.taobao.org/simple-fmt/download/simple-fmt-0.1.0.tgz",
+ "integrity": "sha1-GRv1ZqWeZTBILLJatTtKjchcOms="
+ },
+ "simple-is": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npm.taobao.org/simple-is/download/simple-is-0.2.0.tgz",
+ "integrity": "sha1-Krt1qt453rXMgVzhDmGRFkhQuvA="
+ },
+ "simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npm.taobao.org/simple-swizzle/download/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.3.1"
+ },
+ "dependencies": {
+ "is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.3.2.tgz",
+ "integrity": "sha1-RXSirlb3qyBolvtDHq7tBm/fjwM=",
+ "dev": true
+ }
+ }
+ },
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/slash/download/slash-2.0.0.tgz?cache=0&sync_timestamp=1618384496016&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslash%2Fdownload%2Fslash-2.0.0.tgz",
+ "integrity": "sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q=",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-2.1.0.tgz?cache=0&sync_timestamp=1618555008681&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fslice-ansi%2Fdownload%2Fslice-ansi-2.1.0.tgz",
+ "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ },
+ "dependencies": {
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz?cache=0&sync_timestamp=1618552489864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ }
+ }
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz",
+ "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=",
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz?cache=0&sync_timestamp=1607566571506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-2.6.9.tgz",
+ "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433872491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=",
+ "requires": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+ "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npm.taobao.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=",
+ "requires": {
+ "kind-of": "^3.2.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "sntp": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npm.taobao.org/sntp/download/sntp-0.2.4.tgz",
+ "integrity": "sha1-+4hfGLDzqtGJ+CSGJTa87ux1CQA=",
+ "optional": true,
+ "requires": {
+ "hoek": "0.9.x"
+ }
+ },
+ "socket.io-client": {
+ "version": "4.1.2",
+ "resolved": "https://registry.nlark.com/socket.io-client/download/socket.io-client-4.1.2.tgz?cache=0&sync_timestamp=1621286099014&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsocket.io-client%2Fdownload%2Fsocket.io-client-4.1.2.tgz",
+ "integrity": "sha1-la1xEzGOoB+6CGAje5bXHhsf0us=",
+ "requires": {
+ "@types/component-emitter": "^1.2.10",
+ "backo2": "~1.0.2",
+ "component-emitter": "~1.3.0",
+ "debug": "~4.3.1",
+ "engine.io-client": "~5.1.1",
+ "parseuri": "0.0.6",
+ "socket.io-parser": "~4.0.4"
+ }
+ },
+ "socket.io-parser": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npm.taobao.org/socket.io-parser/download/socket.io-parser-4.0.4.tgz?cache=0&sync_timestamp=1610669705096&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsocket.io-parser%2Fdownload%2Fsocket.io-parser-4.0.4.tgz",
+ "integrity": "sha1-nqIbDWFQjRgZbvBKLGuatjD0wrA=",
+ "requires": {
+ "@types/component-emitter": "^1.2.10",
+ "component-emitter": "~1.3.0",
+ "debug": "~4.3.1"
+ }
+ },
+ "sockjs": {
+ "version": "0.3.21",
+ "resolved": "https://registry.npm.taobao.org/sockjs/download/sockjs-0.3.21.tgz",
+ "integrity": "sha1-s0/7mOeWkwtgoM+hGQTWozmn1Bc=",
+ "dev": true,
+ "requires": {
+ "faye-websocket": "^0.11.3",
+ "uuid": "^3.4.0",
+ "websocket-driver": "^0.7.4"
+ }
+ },
+ "sockjs-client": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npm.taobao.org/sockjs-client/download/sockjs-client-1.5.1.tgz?cache=0&sync_timestamp=1616686717128&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsockjs-client%2Fdownload%2Fsockjs-client-1.5.1.tgz",
+ "integrity": "sha1-JWkI9tWt+5Tau9vQLGY2LMoPnqY=",
+ "dev": true,
+ "requires": {
+ "debug": "^3.2.6",
+ "eventsource": "^1.0.7",
+ "faye-websocket": "^0.11.3",
+ "inherits": "^2.0.4",
+ "json3": "^3.3.3",
+ "url-parse": "^1.5.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.2.7.tgz?cache=0&sync_timestamp=1607566571506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.2.7.tgz",
+ "integrity": "sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ }
+ }
+ },
+ "sort-asc": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npm.taobao.org/sort-asc/download/sort-asc-0.1.0.tgz",
+ "integrity": "sha1-q3md9h/HPqCVbHnEtTHtHp53J+k="
+ },
+ "sort-desc": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npm.taobao.org/sort-desc/download/sort-desc-0.1.1.tgz",
+ "integrity": "sha1-GYuMDN6wlcRjNBhh45JdTuNZqe4="
+ },
+ "sort-keys": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz",
+ "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
+ "dev": true,
+ "requires": {
+ "is-plain-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz?cache=0&sync_timestamp=1618600489644&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-plain-obj%2Fdownload%2Fis-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+ "dev": true
+ }
+ }
+ },
+ "sort-object": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npm.taobao.org/sort-object/download/sort-object-0.3.2.tgz",
+ "integrity": "sha1-mODRme3kDgfGGoRAPGHWw7KQ+eI=",
+ "requires": {
+ "sort-asc": "^0.1.0",
+ "sort-desc": "^0.1.1"
+ }
+ },
+ "sortablejs": {
+ "version": "1.10.2",
+ "resolved": "https://registry.nlark.com/sortablejs/download/sortablejs-1.10.2.tgz",
+ "integrity": "sha1-bkA2TZE/mLhaFPZnj5K1wSIfUpA="
+ },
+ "source-list-map": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz",
+ "integrity": "sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+ },
+ "source-map-js": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npm.taobao.org/source-map-js/download/source-map-js-0.6.2.tgz",
+ "integrity": "sha1-C7XeYxtBz72mz7qL0FqA79/SOF4=",
+ "dev": true
+ },
+ "source-map-resolve": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.3.tgz",
+ "integrity": "sha1-GQhmvs51U+H48mei7oLGBrVQmho=",
+ "requires": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "source-map-support": {
+ "version": "0.5.19",
+ "resolved": "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.19.tgz",
+ "integrity": "sha1-qYti+G3K9PZzmWSMCFKRq56P7WE=",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.1.tgz?cache=0&sync_timestamp=1612211015749&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-url%2Fdownload%2Fsource-map-url-0.4.1.tgz",
+ "integrity": "sha1-CvZmBadFpaL5HPG7+KevvCg97FY="
+ },
+ "sparkles": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/sparkles/download/sparkles-1.0.1.tgz",
+ "integrity": "sha1-AI22XtzmxQ7sDF4ijhlFBh3QQ3w="
+ },
+ "spdx-correct": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.1.tgz",
+ "integrity": "sha1-3s6BrJweZxPl99G28X1Gj6U9iak=",
+ "dev": true,
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=",
+ "dev": true
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha1-z3D1BILu/cmOPOCmgz5KU87rpnk=",
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.9",
+ "resolved": "https://registry.nlark.com/spdx-license-ids/download/spdx-license-ids-3.0.9.tgz?cache=0&sync_timestamp=1621652583280&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fspdx-license-ids%2Fdownload%2Fspdx-license-ids-3.0.9.tgz",
+ "integrity": "sha1-illRNd75WSvaaXCUdPHL7qfCRn8=",
+ "dev": true
+ },
+ "spdy": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npm.taobao.org/spdy/download/spdy-4.0.2.tgz",
+ "integrity": "sha1-t09GYgOj7aRSwCSSuR+56EonZ3s=",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.0",
+ "handle-thing": "^2.0.0",
+ "http-deceiver": "^1.2.7",
+ "select-hose": "^2.0.0",
+ "spdy-transport": "^3.0.0"
+ }
+ },
+ "spdy-transport": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/spdy-transport/download/spdy-transport-3.0.0.tgz",
+ "integrity": "sha1-ANSGOmQArXXfkzYaFghgXl3NzzE=",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.0",
+ "detect-node": "^2.0.4",
+ "hpack.js": "^2.1.6",
+ "obuf": "^1.1.2",
+ "readable-stream": "^3.0.6",
+ "wbuf": "^1.7.3"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.6.0.tgz",
+ "integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ }
+ }
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz",
+ "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=",
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+ },
+ "sshpk": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz",
+ "integrity": "sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=",
+ "dev": true,
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ }
+ },
+ "ssri": {
+ "version": "6.0.2",
+ "resolved": "https://registry.nlark.com/ssri/download/ssri-6.0.2.tgz?cache=0&sync_timestamp=1621364668574&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fssri%2Fdownload%2Fssri-6.0.2.tgz",
+ "integrity": "sha1-FXk5E08gRk5zAd26PpD/qPdyisU=",
+ "dev": true,
+ "requires": {
+ "figgy-pudding": "^3.5.1"
+ }
+ },
+ "stable": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npm.taobao.org/stable/download/stable-0.1.8.tgz",
+ "integrity": "sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88="
+ },
+ "stackframe": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/stackframe/download/stackframe-1.2.0.tgz",
+ "integrity": "sha1-UkKUktY8YuuYmATBFVLj0i53kwM=",
+ "dev": true
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npm.taobao.org/static-extend/download/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz?cache=0&sync_timestamp=1609654090567&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstatuses%2Fdownload%2Fstatuses-1.5.0.tgz",
+ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+ "dev": true
+ },
+ "stdout-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npm.taobao.org/stdout-stream/download/stdout-stream-1.4.1.tgz",
+ "integrity": "sha1-WsF0zdXNcmEEqgwLK9g4FdjVNd4=",
+ "dev": true,
+ "requires": {
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "stream-browserify": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npm.taobao.org/stream-browserify/download/stream-browserify-2.0.2.tgz",
+ "integrity": "sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs=",
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "stream-consume": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npm.taobao.org/stream-consume/download/stream-consume-0.1.1.tgz",
+ "integrity": "sha1-0721mMK9CugrjKx6xQsRB6eZbEg="
+ },
+ "stream-each": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npm.taobao.org/stream-each/download/stream-each-1.2.3.tgz",
+ "integrity": "sha1-6+J6DDibBPvMIzZClS4Qcxr6m64=",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "stream-http": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npm.taobao.org/stream-http/download/stream-http-2.8.3.tgz?cache=0&sync_timestamp=1618430946341&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstream-http%2Fdownload%2Fstream-http-2.8.3.tgz",
+ "integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=",
+ "requires": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.3.6",
+ "to-arraybuffer": "^1.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "stream-shift": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.1.tgz",
+ "integrity": "sha1-1wiCgVWasneEJCebCHfaPDktWj0=",
+ "dev": true
+ },
+ "strict-uri-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz",
+ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-4.2.2.tgz?cache=0&sync_timestamp=1618558751438&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-4.2.2.tgz",
+ "integrity": "sha1-2v1PlVmnWFz7pSnGoKT3NIjr1MU=",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "string.prototype.trimend": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/string.prototype.trimend/download/string.prototype.trimend-1.0.4.tgz?cache=0&sync_timestamp=1614127438583&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimend%2Fdownload%2Fstring.prototype.trimend-1.0.4.tgz",
+ "integrity": "sha1-51rpDClCxjUEaGwYsoe0oLGkX4A=",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ }
+ },
+ "string.prototype.trimstart": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/string.prototype.trimstart/download/string.prototype.trimstart-1.0.4.tgz?cache=0&sync_timestamp=1614127299808&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring.prototype.trimstart%2Fdownload%2Fstring.prototype.trimstart-1.0.4.tgz",
+ "integrity": "sha1-s2OZr0qymZtMnGSL16P7K7Jv7u0=",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz",
+ "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "stringmap": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npm.taobao.org/stringmap/download/stringmap-0.2.2.tgz",
+ "integrity": "sha1-VWwTeyWPlCuHdvWy71gqoGnX0bE="
+ },
+ "stringset": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npm.taobao.org/stringset/download/stringset-0.2.1.tgz",
+ "integrity": "sha1-7yWcTjSTRDd/zRyRPdLoSMnAQrU="
+ },
+ "stringstream": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npm.taobao.org/stringstream/download/stringstream-0.0.6.tgz",
+ "integrity": "sha1-eIAiWw1K0Q4wkn0Weh1vL9OzOnI=",
+ "optional": true
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-6.0.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-6.0.0.tgz",
+ "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz",
+ "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=",
+ "dev": true
+ }
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz?cache=0&sync_timestamp=1618599587805&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-bom%2Fdownload%2Fstrip-bom-2.0.0.tgz",
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+ "dev": true,
+ "requires": {
+ "is-utf8": "^0.2.0"
+ }
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true
+ },
+ "strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.nlark.com/strip-final-newline/download/strip-final-newline-2.0.0.tgz?cache=0&sync_timestamp=1620046554687&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fstrip-final-newline%2Fdownload%2Fstrip-final-newline-2.0.0.tgz",
+ "integrity": "sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=",
+ "dev": true
+ },
+ "strip-indent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.nlark.com/strip-indent/download/strip-indent-2.0.0.tgz",
+ "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=",
+ "dev": true
+ },
+ "stylehacks": {
+ "version": "4.0.3",
+ "resolved": "https://registry.nlark.com/stylehacks/download/stylehacks-4.0.3.tgz?cache=0&sync_timestamp=1621449595596&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fstylehacks%2Fdownload%2Fstylehacks-4.0.3.tgz",
+ "integrity": "sha1-Zxj8r00eB9ihMYaQiB6NlnJqcdU=",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "postcss-selector-parser": {
+ "version": "3.1.2",
+ "resolved": "https://registry.nlark.com/postcss-selector-parser/download/postcss-selector-parser-3.1.2.tgz?cache=0&sync_timestamp=1620752924836&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-selector-parser%2Fdownload%2Fpostcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha1-sxD1xMD9r3b5SQK7qjDbaqhPUnA=",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ }
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.nlark.com/supports-color/download/supports-color-5.5.0.tgz?cache=0&sync_timestamp=1622293579301&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-5.5.0.tgz",
+ "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "svg-baker": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npm.taobao.org/svg-baker/download/svg-baker-1.7.0.tgz",
+ "integrity": "sha1-g2f3jYdVUMUv5HVvcwPVxdfC6ac=",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.0",
+ "clone": "^2.1.1",
+ "he": "^1.1.1",
+ "image-size": "^0.5.1",
+ "loader-utils": "^1.1.0",
+ "merge-options": "1.0.1",
+ "micromatch": "3.1.0",
+ "postcss": "^5.2.17",
+ "postcss-prefix-selector": "^1.6.0",
+ "posthtml-rename-id": "^1.0",
+ "posthtml-svg-mode": "^1.0.3",
+ "query-string": "^4.3.2",
+ "traverse": "^0.6.6"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.nlark.com/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1627646697260&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.nlark.com/supports-color/download/supports-color-2.0.0.tgz?cache=0&sync_timestamp=1626703342506&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
+ }
+ },
+ "clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.nlark.com/clone/download/clone-2.1.2.tgz",
+ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
+ "dev": true
+ },
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.nlark.com/extend-shallow/download/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.nlark.com/has-flag/download/has-flag-1.0.0.tgz",
+ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.nlark.com/kind-of/download/kind-of-6.0.3.tgz",
+ "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=",
+ "dev": true
+ }
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.nlark.com/kind-of/download/kind-of-6.0.3.tgz",
+ "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=",
+ "dev": true
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.nlark.com/is-descriptor/download/is-descriptor-1.0.2.tgz",
+ "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.nlark.com/kind-of/download/kind-of-6.0.3.tgz",
+ "integrity": "sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=",
+ "dev": true
+ }
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.nlark.com/kind-of/download/kind-of-5.1.0.tgz",
+ "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.0.tgz?cache=0&sync_timestamp=1618054787196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.0.tgz",
+ "integrity": "sha1-UQLU6vILaZfWAI46z+HESj+oFeI=",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.2.2",
+ "define-property": "^1.0.0",
+ "extend-shallow": "^2.0.1",
+ "extglob": "^2.0.2",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^5.0.2",
+ "nanomatch": "^1.2.1",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "postcss": {
+ "version": "5.2.18",
+ "resolved": "https://registry.nlark.com/postcss/download/postcss-5.2.18.tgz?cache=0&sync_timestamp=1626882933935&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss%2Fdownload%2Fpostcss-5.2.18.tgz",
+ "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "js-base64": "^2.1.9",
+ "source-map": "^0.5.6",
+ "supports-color": "^3.2.3"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.nlark.com/supports-color/download/supports-color-3.2.3.tgz?cache=0&sync_timestamp=1626703342506&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-3.2.3.tgz",
+ "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+ "dev": true,
+ "requires": {
+ "has-flag": "^1.0.0"
+ }
+ }
+ }
+ },
+ "svg-baker-runtime": {
+ "version": "1.4.7",
+ "resolved": "https://registry.npm.taobao.org/svg-baker-runtime/download/svg-baker-runtime-1.4.7.tgz",
+ "integrity": "sha1-9HIGN/W2IC7vY3jYHx/q0IFfik4=",
+ "dev": true,
+ "requires": {
+ "deepmerge": "1.3.2",
+ "mitt": "1.1.2",
+ "svg-baker": "^1.7.0"
+ },
+ "dependencies": {
+ "deepmerge": {
+ "version": "1.3.2",
+ "resolved": "https://registry.nlark.com/deepmerge/download/deepmerge-1.3.2.tgz",
+ "integrity": "sha1-FmNpFinU2/42T6EqKk8KqGqjoFA=",
+ "dev": true
+ }
+ }
+ },
+ "svg-sprite-loader": {
+ "version": "6.0.9",
+ "resolved": "https://registry.nlark.com/svg-sprite-loader/download/svg-sprite-loader-6.0.9.tgz",
+ "integrity": "sha1-8aEInDhgDr1fuNCd+jyDqkQ0orQ=",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.0",
+ "deepmerge": "1.3.2",
+ "domready": "1.0.8",
+ "escape-string-regexp": "1.0.5",
+ "loader-utils": "^1.1.0",
+ "svg-baker": "^1.5.0",
+ "svg-baker-runtime": "^1.4.7",
+ "url-slug": "2.0.0"
+ },
+ "dependencies": {
+ "deepmerge": {
+ "version": "1.3.2",
+ "resolved": "https://registry.nlark.com/deepmerge/download/deepmerge-1.3.2.tgz",
+ "integrity": "sha1-FmNpFinU2/42T6EqKk8KqGqjoFA=",
+ "dev": true
+ }
+ }
+ },
+ "svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/svg-tags/download/svg-tags-1.0.0.tgz",
+ "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=",
+ "dev": true
+ },
+ "svgo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.nlark.com/svgo/download/svgo-1.3.2.tgz",
+ "integrity": "sha1-ttxRHAYzRsnkFbgeQ0ARRbltQWc=",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.1",
+ "coa": "^2.0.2",
+ "css-select": "^2.0.0",
+ "css-select-base-adapter": "^0.1.1",
+ "css-tree": "1.0.0-alpha.37",
+ "csso": "^4.0.2",
+ "js-yaml": "^3.13.1",
+ "mkdirp": "~0.5.1",
+ "object.values": "^1.1.0",
+ "sax": "~1.2.4",
+ "stable": "^0.1.8",
+ "unquote": "~1.1.1",
+ "util.promisify": "~1.0.0"
+ }
+ },
+ "table": {
+ "version": "5.4.6",
+ "resolved": "https://registry.nlark.com/table/download/table-5.4.6.tgz?cache=0&sync_timestamp=1620957183690&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftable%2Fdownload%2Ftable-5.4.6.tgz",
+ "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
+ },
+ "dependencies": {
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz",
+ "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz?cache=0&sync_timestamp=1618552489864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz?cache=0&sync_timestamp=1618558751438&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-3.1.0.tgz",
+ "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz",
+ "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "tapable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz?cache=0&sync_timestamp=1607088902003&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftapable%2Fdownload%2Ftapable-1.1.3.tgz",
+ "integrity": "sha1-ofzMBrWNth/XpF2i2kT186Pme6I=",
+ "dev": true
+ },
+ "tar": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npm.taobao.org/tar/download/tar-2.2.2.tgz",
+ "integrity": "sha1-DKiEhWLHKZuLRG/2pNYM27I+3EA=",
+ "dev": true,
+ "requires": {
+ "block-stream": "*",
+ "fstream": "^1.0.12",
+ "inherits": "2"
+ }
+ },
+ "terser": {
+ "version": "4.8.0",
+ "resolved": "https://registry.nlark.com/terser/download/terser-4.8.0.tgz",
+ "integrity": "sha1-YwVjQ9fHC7KfOvZlhlpG/gOg3xc=",
+ "dev": true,
+ "requires": {
+ "commander": "^2.20.0",
+ "source-map": "~0.6.1",
+ "source-map-support": "~0.5.12"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
+ "terser-webpack-plugin": {
+ "version": "1.4.5",
+ "resolved": "https://registry.nlark.com/terser-webpack-plugin/download/terser-webpack-plugin-1.4.5.tgz?cache=0&sync_timestamp=1624624550780&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-1.4.5.tgz",
+ "integrity": "sha1-oheu+uozDnNP+sthIOwfoxLWBAs=",
+ "dev": true,
+ "requires": {
+ "cacache": "^12.0.2",
+ "find-cache-dir": "^2.1.0",
+ "is-wsl": "^1.1.0",
+ "schema-utils": "^1.0.0",
+ "serialize-javascript": "^4.0.0",
+ "source-map": "^0.6.1",
+ "terser": "^4.1.2",
+ "webpack-sources": "^1.4.0",
+ "worker-farm": "^1.7.0"
+ },
+ "dependencies": {
+ "find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz",
+ "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz",
+ "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz",
+ "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=",
+ "dev": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz",
+ "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz?cache=0&sync_timestamp=1602859056682&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpkg-dir%2Fdownload%2Fpkg-dir-3.0.0.tgz",
+ "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1601922425223&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz",
+ "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz",
+ "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
+ "text-segmentation": {
+ "version": "1.0.2",
+ "resolved": "https://registry.nlark.com/text-segmentation/download/text-segmentation-1.0.2.tgz",
+ "integrity": "sha1-H4KPoUqhAcEU3tG9o1un3MF8mFg=",
+ "requires": {
+ "utrie": "^1.0.1"
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz",
+ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "dev": true
+ },
+ "thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npm.taobao.org/thenify/download/thenify-3.3.1.tgz",
+ "integrity": "sha1-iTLmhqQGYDigFt2eLKRq3Zg4qV8=",
+ "dev": true,
+ "requires": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npm.taobao.org/thenify-all/download/thenify-all-1.6.0.tgz",
+ "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=",
+ "dev": true,
+ "requires": {
+ "thenify": ">= 3.1.0 < 4"
+ }
+ },
+ "thread-loader": {
+ "version": "2.1.3",
+ "resolved": "https://registry.nlark.com/thread-loader/download/thread-loader-2.1.3.tgz",
+ "integrity": "sha1-y9LBOfwrLebp0o9iKGq3cMGsvdo=",
+ "dev": true,
+ "requires": {
+ "loader-runner": "^2.3.1",
+ "loader-utils": "^1.1.0",
+ "neo-async": "^2.6.0"
+ }
+ },
+ "throttle-debounce": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/throttle-debounce/download/throttle-debounce-1.1.0.tgz?cache=0&sync_timestamp=1604313880785&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fthrottle-debounce%2Fdownload%2Fthrottle-debounce-1.1.0.tgz",
+ "integrity": "sha1-UYU9o3vmihVctugns1FKPEIuic0="
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npm.taobao.org/through/download/through-2.3.8.tgz",
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
+ },
+ "through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz",
+ "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=",
+ "requires": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "thunky": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/thunky/download/thunky-1.1.0.tgz",
+ "integrity": "sha1-Wrr3FKlAXbBQRzK7zNLO3Z75U30=",
+ "dev": true
+ },
+ "tildify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/tildify/download/tildify-1.2.0.tgz",
+ "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=",
+ "requires": {
+ "os-homedir": "^1.0.0"
+ }
+ },
+ "time-stamp": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/time-stamp/download/time-stamp-1.1.0.tgz",
+ "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM="
+ },
+ "timers-browserify": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npm.taobao.org/timers-browserify/download/timers-browserify-2.0.12.tgz?cache=0&sync_timestamp=1603793667345&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftimers-browserify%2Fdownload%2Ftimers-browserify-2.0.12.tgz",
+ "integrity": "sha1-RKRcEfv0B/NPl7zNFXfGUjYbAO4=",
+ "requires": {
+ "setimmediate": "^1.0.4"
+ }
+ },
+ "timsort": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npm.taobao.org/timsort/download/timsort-0.3.0.tgz",
+ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
+ "dev": true
+ },
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz?cache=0&sync_timestamp=1592843137359&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftmp%2Fdownload%2Ftmp-0.0.33.tgz",
+ "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ },
+ "to-array": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npm.taobao.org/to-array/download/to-array-0.1.4.tgz",
+ "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA="
+ },
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M="
+ },
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+ "dev": true
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz",
+ "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=",
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
+ "toidentifier": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz",
+ "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=",
+ "dev": true
+ },
+ "toposort": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npm.taobao.org/toposort/download/toposort-1.0.7.tgz",
+ "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=",
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz",
+ "integrity": "sha1-zZ+yoKodWhK0c72fuW+j3P9lreI=",
+ "requires": {
+ "psl": "^1.1.28",
+ "punycode": "^2.1.1"
+ }
+ },
+ "traverse": {
+ "version": "0.6.6",
+ "resolved": "https://registry.npm.taobao.org/traverse/download/traverse-0.6.6.tgz",
+ "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=",
+ "dev": true
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.nlark.com/trim-newlines/download/trim-newlines-1.0.0.tgz",
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+ "dev": true
+ },
+ "trim-right": {
+ "version": "1.0.1",
+ "resolved": "https://registry.nlark.com/trim-right/download/trim-right-1.0.1.tgz?cache=0&sync_timestamp=1619002500872&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftrim-right%2Fdownload%2Ftrim-right-1.0.1.tgz",
+ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM="
+ },
+ "true-case-path": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/true-case-path/download/true-case-path-1.0.3.tgz",
+ "integrity": "sha1-+BO1qMhrQNpZYGcisUTjIleZ9H0=",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.2"
+ }
+ },
+ "try-resolve": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/try-resolve/download/try-resolve-1.0.1.tgz",
+ "integrity": "sha1-z95vq9ctY+V5fPqrhzq76OcA6RI="
+ },
+ "tryer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/tryer/download/tryer-1.0.1.tgz",
+ "integrity": "sha1-8shUBoALmw90yfdGW4HqrSQSUvg=",
+ "dev": true
+ },
+ "tryor": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npm.taobao.org/tryor/download/tryor-0.1.2.tgz",
+ "integrity": "sha1-gUXkynyv9ArN48z5Rui4u3W0Fys="
+ },
+ "ts-pnp": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/ts-pnp/download/ts-pnp-1.2.0.tgz",
+ "integrity": "sha1-pQCtCEsHmPHDBxrzkeZZEshrypI=",
+ "dev": true
+ },
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.nlark.com/tslib/download/tslib-1.14.1.tgz",
+ "integrity": "sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=",
+ "dev": true
+ },
+ "tsml": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/tsml/download/tsml-1.0.1.tgz",
+ "integrity": "sha1-ifghi52eJX9H1/a1bQHFpNLGj8M="
+ },
+ "tty-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz",
+ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY="
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz",
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+ "dev": true
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz",
+ "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "type-fest": {
+ "version": "0.6.0",
+ "resolved": "https://registry.nlark.com/type-fest/download/type-fest-0.6.0.tgz?cache=0&sync_timestamp=1623872995368&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftype-fest%2Fdownload%2Ftype-fest-0.6.0.tgz",
+ "integrity": "sha1-jSojcNPfiG61yQraHFv2GIrPg4s=",
+ "dev": true
+ },
+ "type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz",
+ "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=",
+ "dev": true,
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "uc.micro": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npm.taobao.org/uc.micro/download/uc.micro-1.0.6.tgz",
+ "integrity": "sha1-nEEagCpAmpH8bPdAgbq6NLJEmaw="
+ },
+ "uglify-js": {
+ "version": "3.4.10",
+ "resolved": "https://registry.nlark.com/uglify-js/download/uglify-js-3.4.10.tgz?cache=0&sync_timestamp=1624812339222&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fuglify-js%2Fdownload%2Fuglify-js-3.4.10.tgz",
+ "integrity": "sha1-mtlWPY6zrN+404WX0q8dgV9qdV8=",
+ "dev": true,
+ "requires": {
+ "commander": "~2.19.0",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.19.0",
+ "resolved": "https://registry.nlark.com/commander/download/commander-2.19.0.tgz?cache=0&sync_timestamp=1624609510051&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.19.0.tgz",
+ "integrity": "sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So=",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
+ "uglify-to-browserify": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/uglify-to-browserify/download/uglify-to-browserify-1.0.2.tgz",
+ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc="
+ },
+ "unbox-primitive": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/unbox-primitive/download/unbox-primitive-1.0.1.tgz?cache=0&sync_timestamp=1616706302651&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funbox-primitive%2Fdownload%2Funbox-primitive-1.0.1.tgz",
+ "integrity": "sha1-CF4hViXsMWJXTciFmr7nilmxRHE=",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has-bigints": "^1.0.1",
+ "has-symbols": "^1.0.2",
+ "which-boxed-primitive": "^1.0.2"
+ }
+ },
+ "unicode-canonical-property-names-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+ "integrity": "sha1-JhmADEyCWADv3YNDr33Zkzy+KBg=",
+ "dev": true
+ },
+ "unicode-match-property-ecmascript": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/unicode-match-property-ecmascript/download/unicode-match-property-ecmascript-1.0.4.tgz",
+ "integrity": "sha1-jtKjJWmWG86SJ9Cc0/+7j+1fAgw=",
+ "dev": true,
+ "requires": {
+ "unicode-canonical-property-names-ecmascript": "^1.0.4",
+ "unicode-property-aliases-ecmascript": "^1.0.4"
+ }
+ },
+ "unicode-match-property-value-ecmascript": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/unicode-match-property-value-ecmascript/download/unicode-match-property-value-ecmascript-1.2.0.tgz",
+ "integrity": "sha1-DZH2AO7rMJaqlisdb8iIduZOpTE=",
+ "dev": true
+ },
+ "unicode-property-aliases-ecmascript": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npm.taobao.org/unicode-property-aliases-ecmascript/download/unicode-property-aliases-ecmascript-1.1.0.tgz",
+ "integrity": "sha1-3Vepn2IHvt/0Yoq++5TFDblByPQ=",
+ "dev": true
+ },
+ "unidecode": {
+ "version": "0.1.8",
+ "resolved": "https://registry.nlark.com/unidecode/download/unidecode-0.1.8.tgz",
+ "integrity": "sha1-77swFTi8RSRqmsjFWdcvAVMFBT4=",
+ "dev": true
+ },
+ "union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/union-value/download/union-value-1.0.1.tgz",
+ "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=",
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ }
+ },
+ "uniq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz",
+ "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+ "dev": true
+ },
+ "uniqs": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/uniqs/download/uniqs-2.0.0.tgz",
+ "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
+ "dev": true
+ },
+ "unique-filename": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/unique-filename/download/unique-filename-1.1.1.tgz",
+ "integrity": "sha1-HWl2k2mtoFgxA6HmrodoG1ZXMjA=",
+ "dev": true,
+ "requires": {
+ "unique-slug": "^2.0.0"
+ }
+ },
+ "unique-slug": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npm.taobao.org/unique-slug/download/unique-slug-2.0.2.tgz",
+ "integrity": "sha1-uqvOkQg/xk6UWw861hPiZPfNTmw=",
+ "dev": true,
+ "requires": {
+ "imurmurhash": "^0.1.4"
+ }
+ },
+ "unique-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/unique-stream/download/unique-stream-1.0.0.tgz",
+ "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs="
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz?cache=0&sync_timestamp=1603180042770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funiversalify%2Fdownload%2Funiversalify-0.1.2.tgz",
+ "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=",
+ "dev": true
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz",
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+ "dev": true
+ },
+ "unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/unquote/download/unquote-1.1.1.tgz",
+ "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=",
+ "dev": true
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/unset-value/download/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "requires": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E="
+ }
+ }
+ },
+ "upath": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npm.taobao.org/upath/download/upath-1.2.0.tgz?cache=0&sync_timestamp=1604768535464&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fupath%2Fdownload%2Fupath-1.2.0.tgz",
+ "integrity": "sha1-j2bbzVWog6za5ECK+LA1pQRMGJQ=",
+ "dev": true
+ },
+ "upper-case": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npm.taobao.org/upper-case/download/upper-case-1.1.3.tgz",
+ "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
+ "dev": true
+ },
+ "uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.4.1.tgz?cache=0&sync_timestamp=1610237517218&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furi-js%2Fdownload%2Furi-js-4.4.1.tgz",
+ "integrity": "sha1-mxpSWVIlhZ5V9mnZKPiMbFfyp34=",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI="
+ },
+ "url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npm.taobao.org/url/download/url-0.11.0.tgz",
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
+ }
+ }
+ },
+ "url-loader": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npm.taobao.org/url-loader/download/url-loader-2.3.0.tgz?cache=0&sync_timestamp=1602252665628&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-loader%2Fdownload%2Furl-loader-2.3.0.tgz",
+ "integrity": "sha1-4OLvZY8APvuMpBsPP/v3a6uIZYs=",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.2.3",
+ "mime": "^2.4.4",
+ "schema-utils": "^2.5.0"
+ }
+ },
+ "url-parse": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npm.taobao.org/url-parse/download/url-parse-1.5.1.tgz?cache=0&sync_timestamp=1613659753482&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-parse%2Fdownload%2Furl-parse-1.5.1.tgz",
+ "integrity": "sha1-1fqYkK+KXh8nSiyYN2UQ9kJfbjs=",
+ "dev": true,
+ "requires": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "url-slug": {
+ "version": "2.0.0",
+ "resolved": "https://registry.nlark.com/url-slug/download/url-slug-2.0.0.tgz",
+ "integrity": "sha1-p4nVrtSZXA2VrzM3etHVxo1NcCc=",
+ "dev": true,
+ "requires": {
+ "unidecode": "0.1.8"
+ }
+ },
+ "url-toolkit": {
+ "version": "2.2.2",
+ "resolved": "https://registry.nlark.com/url-toolkit/download/url-toolkit-2.2.2.tgz",
+ "integrity": "sha1-Ue8ntW0xhxhfns9Kisfo9VIDyJ0="
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz",
+ "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8="
+ },
+ "user-home": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npm.taobao.org/user-home/download/user-home-1.1.1.tgz?cache=0&sync_timestamp=1617975456070&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuser-home%2Fdownload%2Fuser-home-1.1.1.tgz",
+ "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA="
+ },
+ "util": {
+ "version": "0.11.1",
+ "resolved": "https://registry.nlark.com/util/download/util-0.11.1.tgz",
+ "integrity": "sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "util.promisify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.1.tgz?cache=0&sync_timestamp=1610159866228&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Futil.promisify%2Fdownload%2Futil.promisify-1.0.1.tgz",
+ "integrity": "sha1-a693dLgO6w91INi4HQeYKlmruu4=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.2",
+ "has-symbols": "^1.0.1",
+ "object.getownpropertydescriptors": "^2.1.0"
+ }
+ },
+ "utila": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npm.taobao.org/utila/download/utila-0.4.0.tgz",
+ "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
+ "dev": true
+ },
+ "utils-lite": {
+ "version": "0.1.10",
+ "resolved": "https://registry.npm.taobao.org/utils-lite/download/utils-lite-0.1.10.tgz",
+ "integrity": "sha1-0pCMBILiPDHmsIJVhUDnE0/619c="
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz",
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+ "dev": true
+ },
+ "utrie": {
+ "version": "1.0.1",
+ "resolved": "https://registry.nlark.com/utrie/download/utrie-1.0.1.tgz",
+ "integrity": "sha1-4VUjXry93ImuCSYatudzzmFAGy8=",
+ "requires": {
+ "base64-arraybuffer": "^1.0.1"
+ },
+ "dependencies": {
+ "base64-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.nlark.com/base64-arraybuffer/download/base64-arraybuffer-1.0.1.tgz?cache=0&sync_timestamp=1628588823959&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbase64-arraybuffer%2Fdownload%2Fbase64-arraybuffer-1.0.1.tgz",
+ "integrity": "sha1-h70TUlYm20qYOOAKUIwrc+/PNIw="
+ }
+ }
+ },
+ "uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.nlark.com/uuid/download/uuid-3.4.0.tgz",
+ "integrity": "sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4=",
+ "dev": true
+ },
+ "v-charts": {
+ "version": "1.19.0",
+ "resolved": "https://registry.npm.taobao.org/v-charts/download/v-charts-1.19.0.tgz",
+ "integrity": "sha1-B7cBgAsVm9UUJk/8i/ErBAUULaM=",
+ "requires": {
+ "echarts-amap": "1.0.0-rc.6",
+ "echarts-liquidfill": "^2.0.2",
+ "echarts-wordcloud": "^1.1.3",
+ "numerify": "1.2.9",
+ "utils-lite": "0.1.10"
+ }
+ },
+ "v8-compile-cache": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.3.0.tgz",
+ "integrity": "sha1-LeGWGMZtwkfc+2+ZM4A12CRaLO4=",
+ "dev": true
+ },
+ "v8flags": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npm.taobao.org/v8flags/download/v8flags-1.0.8.tgz",
+ "integrity": "sha1-fnqmEZyC5Psjk84f/Shos1zZEIQ="
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+ "dev": true
+ },
+ "vendors": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npm.taobao.org/vendors/download/vendors-1.0.4.tgz?cache=0&sync_timestamp=1615203465160&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvendors%2Fdownload%2Fvendors-1.0.4.tgz",
+ "integrity": "sha1-4rgApT56Kbk1BsPPQRANFsTErY4=",
+ "dev": true
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz",
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+ "dev": true,
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
+ "video.js": {
+ "version": "6.13.0",
+ "resolved": "https://registry.nlark.com/video.js/download/video.js-6.13.0.tgz",
+ "integrity": "sha1-+Uh9RjJzQPpI7NUTcqKYHbts3kw=",
+ "requires": {
+ "babel-runtime": "^6.9.2",
+ "global": "4.3.2",
+ "safe-json-parse": "4.0.0",
+ "tsml": "1.0.1",
+ "videojs-font": "2.1.0",
+ "videojs-ie8": "1.1.2",
+ "videojs-vtt.js": "0.12.6",
+ "xhr": "2.4.0"
+ }
+ },
+ "videojs-contrib-hls": {
+ "version": "5.15.0",
+ "resolved": "https://registry.npm.taobao.org/videojs-contrib-hls/download/videojs-contrib-hls-5.15.0.tgz",
+ "integrity": "sha1-/klXNn5daLfSP3jtMuN6ndiSoKg=",
+ "requires": {
+ "aes-decrypter": "1.0.3",
+ "global": "^4.3.0",
+ "m3u8-parser": "2.1.0",
+ "mux.js": "4.3.2",
+ "url-toolkit": "^2.1.3",
+ "video.js": "^5.19.1 || ^6.2.0",
+ "videojs-contrib-media-sources": "4.7.2",
+ "webwackify": "0.1.6"
+ }
+ },
+ "videojs-contrib-media-sources": {
+ "version": "4.7.2",
+ "resolved": "https://registry.npm.taobao.org/videojs-contrib-media-sources/download/videojs-contrib-media-sources-4.7.2.tgz",
+ "integrity": "sha1-Ct+SkQfVt0zyyKuygkyCF35DhY4=",
+ "requires": {
+ "global": "^4.3.0",
+ "mux.js": "4.3.2",
+ "video.js": "^5.17.0 || ^6.2.0",
+ "webwackify": "0.1.6"
+ }
+ },
+ "videojs-flash": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npm.taobao.org/videojs-flash/download/videojs-flash-2.2.1.tgz",
+ "integrity": "sha1-GiJduxztIArpu/FeAf5KYQhtkPE=",
+ "requires": {
+ "global": "^4.4.0",
+ "video.js": "^6 || ^7",
+ "videojs-swf": "5.4.2"
+ },
+ "dependencies": {
+ "global": {
+ "version": "4.4.0",
+ "resolved": "https://registry.nlark.com/global/download/global-4.4.0.tgz",
+ "integrity": "sha1-PnsQUXkAajI+1xqvyj6cV6XMZAY=",
+ "requires": {
+ "min-document": "^2.19.0",
+ "process": "^0.11.10"
+ }
+ }
+ }
+ },
+ "videojs-font": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/videojs-font/download/videojs-font-2.1.0.tgz",
+ "integrity": "sha1-olkwpn9snPvyu4jay4xrRR8JM3k="
+ },
+ "videojs-hotkeys": {
+ "version": "0.2.27",
+ "resolved": "https://registry.npm.taobao.org/videojs-hotkeys/download/videojs-hotkeys-0.2.27.tgz",
+ "integrity": "sha1-Dfl5Urnf8ObMHPikOf7X6snHPwE="
+ },
+ "videojs-ie8": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npm.taobao.org/videojs-ie8/download/videojs-ie8-1.1.2.tgz",
+ "integrity": "sha1-oj09hgitcZK2nGB3/E64SJmNNdk=",
+ "requires": {
+ "es5-shim": "^4.5.1"
+ }
+ },
+ "videojs-swf": {
+ "version": "5.4.2",
+ "resolved": "https://registry.npm.taobao.org/videojs-swf/download/videojs-swf-5.4.2.tgz",
+ "integrity": "sha1-aWSpv/kDtzLz5GUxSuR4oCoX6Ks="
+ },
+ "videojs-vtt.js": {
+ "version": "0.12.6",
+ "resolved": "https://registry.npm.taobao.org/videojs-vtt.js/download/videojs-vtt.js-0.12.6.tgz",
+ "integrity": "sha1-4HhgC9qJnqpvnDMHE0zQyBGUe44=",
+ "requires": {
+ "global": "^4.3.1"
+ }
+ },
+ "vinyl": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npm.taobao.org/vinyl/download/vinyl-0.5.3.tgz",
+ "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
+ "requires": {
+ "clone": "^1.0.0",
+ "clone-stats": "^0.0.1",
+ "replace-ext": "0.0.1"
+ }
+ },
+ "vinyl-fs": {
+ "version": "0.3.14",
+ "resolved": "https://registry.npm.taobao.org/vinyl-fs/download/vinyl-fs-0.3.14.tgz",
+ "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=",
+ "requires": {
+ "defaults": "^1.0.0",
+ "glob-stream": "^3.1.5",
+ "glob-watcher": "^0.0.6",
+ "graceful-fs": "^3.0.0",
+ "mkdirp": "^0.5.0",
+ "strip-bom": "^1.0.0",
+ "through2": "^0.6.1",
+ "vinyl": "^0.4.0"
+ },
+ "dependencies": {
+ "clone": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npm.taobao.org/clone/download/clone-0.2.0.tgz",
+ "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8="
+ },
+ "graceful-fs": {
+ "version": "3.0.12",
+ "resolved": "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-3.0.12.tgz",
+ "integrity": "sha1-ADSUfOntaV7IqwuFS8kZ6Csf+u8=",
+ "requires": {
+ "natives": "^1.1.3"
+ }
+ },
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npm.taobao.org/readable-stream/download/readable-stream-1.0.34.tgz",
+ "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz",
+ "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+ },
+ "strip-bom": {
+ "version": "1.0.0",
+ "resolved": "https://registry.nlark.com/strip-bom/download/strip-bom-1.0.0.tgz",
+ "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=",
+ "requires": {
+ "first-chunk-stream": "^1.0.0",
+ "is-utf8": "^0.2.0"
+ }
+ },
+ "through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npm.taobao.org/through2/download/through2-0.6.5.tgz",
+ "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
+ "requires": {
+ "readable-stream": ">=1.0.33-1 <1.1.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
+ }
+ },
+ "vinyl": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npm.taobao.org/vinyl/download/vinyl-0.4.6.tgz",
+ "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
+ "requires": {
+ "clone": "^0.2.0",
+ "clone-stats": "^0.0.1"
+ }
+ }
+ }
+ },
+ "vm-browserify": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.2.tgz",
+ "integrity": "sha1-eGQcSIuObKkadfUR56OzKobl3aA=",
+ "dev": true
+ },
+ "vue": {
+ "version": "2.6.14",
+ "resolved": "https://registry.nlark.com/vue/download/vue-2.6.14.tgz?cache=0&sync_timestamp=1624386359180&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue%2Fdownload%2Fvue-2.6.14.tgz",
+ "integrity": "sha1-5RqlJQJQ1Wmj+606ilpofWA24jU="
+ },
+ "vue-baidu-map": {
+ "version": "0.21.22",
+ "resolved": "https://registry.npm.taobao.org/vue-baidu-map/download/vue-baidu-map-0.21.22.tgz",
+ "integrity": "sha1-a3apHvNPGKeC1zKrD1QaGjqgaeA=",
+ "requires": {
+ "bmaplib.curveline": "^1.0.0",
+ "bmaplib.heatmap": "^1.0.4",
+ "bmaplib.lushu": "^1.0.7",
+ "bmaplib.markerclusterer": "^1.0.13",
+ "markdown-it": "^8.4.0"
+ }
+ },
+ "vue-beauty": {
+ "version": "2.0.0-beta.19",
+ "resolved": "https://registry.npm.taobao.org/vue-beauty/download/vue-beauty-2.0.0-beta.19.tgz",
+ "integrity": "sha1-9og/DXImGPBtgL7Mnv5S706i1CM=",
+ "requires": {
+ "async-validator": "^1.8.2",
+ "autosize": "^4.0.1",
+ "core-js": "^2.5.5",
+ "date-fns": "^1.29.0",
+ "deepmerge": "^2.1.0",
+ "lodash": "^4.17.5",
+ "popper.js": "^0.6.4"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.nlark.com/core-js/download/core-js-2.6.12.tgz?cache=0&sync_timestamp=1624966102256&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcore-js%2Fdownload%2Fcore-js-2.6.12.tgz",
+ "integrity": "sha1-2TM9+nsGXjR8xWgiGdb2kIWcwuw="
+ },
+ "deepmerge": {
+ "version": "2.2.1",
+ "resolved": "https://registry.nlark.com/deepmerge/download/deepmerge-2.2.1.tgz",
+ "integrity": "sha1-XT/yKgHAD2RUBaL7wX0HeKGAEXA="
+ }
+ }
+ },
+ "vue-eslint-parser": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-7.6.0.tgz",
+ "integrity": "sha1-AeoaKTL1gf8kQzZWXXEoAfj3JWE=",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "eslint-scope": "^5.0.0",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.2.1",
+ "esquery": "^1.4.0",
+ "lodash": "^4.17.15"
+ },
+ "dependencies": {
+ "eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-5.1.1.tgz",
+ "integrity": "sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw=",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ }
+ }
+ }
+ },
+ "vue-hot-reload-api": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.4.tgz",
+ "integrity": "sha1-UylVzB6yCKPZkLOp+acFdGV+CPI=",
+ "dev": true
+ },
+ "vue-loader": {
+ "version": "15.9.7",
+ "resolved": "https://registry.nlark.com/vue-loader/download/vue-loader-15.9.7.tgz",
+ "integrity": "sha1-FbBXdcPgw4QHZ5OTws5t9nOwEEQ=",
+ "dev": true,
+ "requires": {
+ "@vue/component-compiler-utils": "^3.1.0",
+ "hash-sum": "^1.0.2",
+ "loader-utils": "^1.1.0",
+ "vue-hot-reload-api": "^2.3.0",
+ "vue-style-loader": "^4.1.0"
+ },
+ "dependencies": {
+ "hash-sum": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz",
+ "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
+ "dev": true
+ }
+ }
+ },
+ "vue-router": {
+ "version": "3.5.2",
+ "resolved": "https://registry.nlark.com/vue-router/download/vue-router-3.5.2.tgz",
+ "integrity": "sha1-X1Xj8lGXDjbD6NiKfNLWejUK3lw="
+ },
+ "vue-socket.io": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npm.taobao.org/vue-socket.io/download/vue-socket.io-3.0.10.tgz",
+ "integrity": "sha1-dhNb9QQ7r0hMZIY2p6mCK0wRwIQ=",
+ "requires": {
+ "socket.io-client": "^2.1.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz?cache=0&sync_timestamp=1607566571506&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.1.0.tgz",
+ "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "engine.io-client": {
+ "version": "3.5.2",
+ "resolved": "https://registry.nlark.com/engine.io-client/download/engine.io-client-3.5.2.tgz",
+ "integrity": "sha1-DvRzYhKUAE6c7r5zzvCvnjby9fo=",
+ "requires": {
+ "component-emitter": "~1.3.0",
+ "component-inherit": "0.0.3",
+ "debug": "~3.1.0",
+ "engine.io-parser": "~2.2.0",
+ "has-cors": "1.1.0",
+ "indexof": "0.0.1",
+ "parseqs": "0.0.6",
+ "parseuri": "0.0.6",
+ "ws": "~7.4.2",
+ "xmlhttprequest-ssl": "~1.6.2",
+ "yeast": "0.1.2"
+ }
+ },
+ "engine.io-parser": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npm.taobao.org/engine.io-parser/download/engine.io-parser-2.2.1.tgz?cache=0&sync_timestamp=1607330710445&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fengine.io-parser%2Fdownload%2Fengine.io-parser-2.2.1.tgz",
+ "integrity": "sha1-V85WEdk3DulPmWQbWJ+UyX5PXac=",
+ "requires": {
+ "after": "0.8.2",
+ "arraybuffer.slice": "~0.0.7",
+ "base64-arraybuffer": "0.1.4",
+ "blob": "0.0.5",
+ "has-binary2": "~1.0.2"
+ }
+ },
+ "isarray": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-2.0.1.tgz",
+ "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433872491&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+ },
+ "socket.io-client": {
+ "version": "2.4.0",
+ "resolved": "https://registry.nlark.com/socket.io-client/download/socket.io-client-2.4.0.tgz?cache=0&sync_timestamp=1621286099014&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsocket.io-client%2Fdownload%2Fsocket.io-client-2.4.0.tgz",
+ "integrity": "sha1-qvtdWUo8VaNDVVYvyK6iLtkRmjU=",
+ "requires": {
+ "backo2": "1.0.2",
+ "component-bind": "1.0.0",
+ "component-emitter": "~1.3.0",
+ "debug": "~3.1.0",
+ "engine.io-client": "~3.5.0",
+ "has-binary2": "~1.0.2",
+ "indexof": "0.0.1",
+ "parseqs": "0.0.6",
+ "parseuri": "0.0.6",
+ "socket.io-parser": "~3.3.0",
+ "to-array": "0.1.4"
+ }
+ },
+ "socket.io-parser": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npm.taobao.org/socket.io-parser/download/socket.io-parser-3.3.2.tgz?cache=0&sync_timestamp=1610669705096&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsocket.io-parser%2Fdownload%2Fsocket.io-parser-3.3.2.tgz",
+ "integrity": "sha1-74cgCdCtz3BPL76DAZGhR1KtULY=",
+ "requires": {
+ "component-emitter": "~1.3.0",
+ "debug": "~3.1.0",
+ "isarray": "2.0.1"
+ }
+ },
+ "ws": {
+ "version": "7.4.6",
+ "resolved": "https://registry.nlark.com/ws/download/ws-7.4.6.tgz?cache=0&sync_timestamp=1624943967280&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fws%2Fdownload%2Fws-7.4.6.tgz",
+ "integrity": "sha1-VlTKjs3u5HwzqaS/bSjivimAN3w="
+ }
+ }
+ },
+ "vue-style-loader": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.3.tgz?cache=0&sync_timestamp=1614758618345&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-style-loader%2Fdownload%2Fvue-style-loader-4.1.3.tgz",
+ "integrity": "sha1-bVWGOlH6dXqyTonZNxRlByqnvDU=",
+ "dev": true,
+ "requires": {
+ "hash-sum": "^1.0.2",
+ "loader-utils": "^1.0.2"
+ },
+ "dependencies": {
+ "hash-sum": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz",
+ "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
+ "dev": true
+ }
+ }
+ },
+ "vue-template-compiler": {
+ "version": "2.6.14",
+ "resolved": "https://registry.nlark.com/vue-template-compiler/download/vue-template-compiler-2.6.14.tgz",
+ "integrity": "sha1-ovDn2YVnDULJye4NBE/tdpD092M=",
+ "dev": true,
+ "requires": {
+ "de-indent": "^1.0.2",
+ "he": "^1.1.0"
+ }
+ },
+ "vue-template-es2015-compiler": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz",
+ "integrity": "sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU=",
+ "dev": true
+ },
+ "vue-video-player": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npm.taobao.org/vue-video-player/download/vue-video-player-5.0.2.tgz",
+ "integrity": "sha1-NKQiOf8wTvx2mNogpBZQUddmweY=",
+ "requires": {
+ "object-assign": "^4.1.1",
+ "video.js": "^6.6.0",
+ "videojs-contrib-hls": "^5.12.2",
+ "videojs-flash": "^2.1.0",
+ "videojs-hotkeys": "^0.2.20"
+ }
+ },
+ "vue-week-time": {
+ "version": "1.1.1",
+ "resolved": "https://registry.nlark.com/vue-week-time/download/vue-week-time-1.1.1.tgz",
+ "integrity": "sha1-xjH9qVbxucn9QyyUhnaRhk13R0Q=",
+ "requires": {
+ "vue": "^2.5.11"
+ }
+ },
+ "vuedraggable": {
+ "version": "2.24.3",
+ "resolved": "https://registry.nlark.com/vuedraggable/download/vuedraggable-2.24.3.tgz?cache=0&sync_timestamp=1629672469604&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvuedraggable%2Fdownload%2Fvuedraggable-2.24.3.tgz",
+ "integrity": "sha1-Q8k4SbdGokzlA+Ej1bJZxwG6DRk=",
+ "requires": {
+ "sortablejs": "1.10.2"
+ }
+ },
+ "vuex": {
+ "version": "3.6.2",
+ "resolved": "https://registry.nlark.com/vuex/download/vuex-3.6.2.tgz?cache=0&sync_timestamp=1623945192157&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvuex%2Fdownload%2Fvuex-3.6.2.tgz",
+ "integrity": "sha1-I2vAhqhww655lG8QfxbeWdWJXnE="
+ },
+ "watchpack": {
+ "version": "1.7.5",
+ "resolved": "https://registry.nlark.com/watchpack/download/watchpack-1.7.5.tgz",
+ "integrity": "sha1-EmfmxV4Lm1vkTCAjrtVDeiwmxFM=",
+ "dev": true,
+ "requires": {
+ "chokidar": "^3.4.1",
+ "graceful-fs": "^4.1.2",
+ "neo-async": "^2.5.0",
+ "watchpack-chokidar2": "^2.0.1"
+ }
+ },
+ "watchpack-chokidar2": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/watchpack-chokidar2/download/watchpack-chokidar2-2.0.1.tgz?cache=0&sync_timestamp=1604989128919&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwatchpack-chokidar2%2Fdownload%2Fwatchpack-chokidar2-2.0.1.tgz",
+ "integrity": "sha1-OFAAcu5uzmbzdpk2lQ6hdxvhyVc=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chokidar": "^2.1.8"
+ },
+ "dependencies": {
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz",
+ "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz?cache=0&sync_timestamp=1610299268308&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-1.13.1.tgz",
+ "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=",
+ "dev": true,
+ "optional": true
+ },
+ "chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.nlark.com/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1623763551233&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz",
+ "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ }
+ },
+ "fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.13.tgz",
+ "integrity": "sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-2.2.1.tgz",
+ "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ }
+ }
+ }
+ },
+ "wbuf": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npm.taobao.org/wbuf/download/wbuf-1.7.3.tgz",
+ "integrity": "sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=",
+ "dev": true,
+ "requires": {
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/wcwidth/download/wcwidth-1.0.1.tgz",
+ "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
+ "dev": true,
+ "requires": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "webfont-matcher": {
+ "version": "1.1.0",
+ "resolved": "https://registry.nlark.com/webfont-matcher/download/webfont-matcher-1.1.0.tgz",
+ "integrity": "sha1-mM6VCXsp4x++czBT4Q5XFkLRxsc="
+ },
+ "webpack": {
+ "version": "4.46.0",
+ "resolved": "https://registry.nlark.com/webpack/download/webpack-4.46.0.tgz",
+ "integrity": "sha1-v5tEBOogoHNgXgoBHRiNd8tq1UI=",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-module-context": "1.9.0",
+ "@webassemblyjs/wasm-edit": "1.9.0",
+ "@webassemblyjs/wasm-parser": "1.9.0",
+ "acorn": "^6.4.1",
+ "ajv": "^6.10.2",
+ "ajv-keywords": "^3.4.1",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^4.5.0",
+ "eslint-scope": "^4.0.3",
+ "json-parse-better-errors": "^1.0.2",
+ "loader-runner": "^2.4.0",
+ "loader-utils": "^1.2.3",
+ "memory-fs": "^0.4.1",
+ "micromatch": "^3.1.10",
+ "mkdirp": "^0.5.3",
+ "neo-async": "^2.6.1",
+ "node-libs-browser": "^2.2.1",
+ "schema-utils": "^1.0.0",
+ "tapable": "^1.1.3",
+ "terser-webpack-plugin": "^1.4.3",
+ "watchpack": "^1.7.4",
+ "webpack-sources": "^1.4.1"
+ },
+ "dependencies": {
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1601922425223&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz",
+ "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ }
+ }
+ },
+ "webpack-bundle-analyzer": {
+ "version": "3.9.0",
+ "resolved": "https://registry.nlark.com/webpack-bundle-analyzer/download/webpack-bundle-analyzer-3.9.0.tgz?cache=0&sync_timestamp=1621259099265&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fwebpack-bundle-analyzer%2Fdownload%2Fwebpack-bundle-analyzer-3.9.0.tgz",
+ "integrity": "sha1-9vlNsQj7V05BWtMT3kGicH0z7zw=",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.1.1",
+ "acorn-walk": "^7.1.1",
+ "bfj": "^6.1.1",
+ "chalk": "^2.4.1",
+ "commander": "^2.18.0",
+ "ejs": "^2.6.1",
+ "express": "^4.16.3",
+ "filesize": "^3.6.1",
+ "gzip-size": "^5.0.0",
+ "lodash": "^4.17.19",
+ "mkdirp": "^0.5.1",
+ "opener": "^1.5.1",
+ "ws": "^6.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.nlark.com/acorn/download/acorn-7.4.1.tgz",
+ "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
+ "dev": true
+ }
+ }
+ },
+ "webpack-chain": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npm.taobao.org/webpack-chain/download/webpack-chain-6.5.1.tgz?cache=0&sync_timestamp=1595813261846&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-chain%2Fdownload%2Fwebpack-chain-6.5.1.tgz",
+ "integrity": "sha1-TycoTLu2N+PI+970Pu9YjU2GEgY=",
+ "dev": true,
+ "requires": {
+ "deepmerge": "^1.5.2",
+ "javascript-stringify": "^2.0.1"
+ }
+ },
+ "webpack-core": {
+ "version": "0.6.9",
+ "resolved": "https://registry.npm.taobao.org/webpack-core/download/webpack-core-0.6.9.tgz",
+ "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=",
+ "requires": {
+ "source-list-map": "~0.1.7",
+ "source-map": "~0.4.1"
+ },
+ "dependencies": {
+ "source-list-map": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npm.taobao.org/source-list-map/download/source-list-map-0.1.8.tgz",
+ "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY="
+ },
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.4.4.tgz",
+ "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
+ }
+ }
+ },
+ "webpack-dev-middleware": {
+ "version": "3.7.3",
+ "resolved": "https://registry.nlark.com/webpack-dev-middleware/download/webpack-dev-middleware-3.7.3.tgz",
+ "integrity": "sha1-Bjk3KxQyYuK4SrldO5GnWXBhwsU=",
+ "dev": true,
+ "requires": {
+ "memory-fs": "^0.4.1",
+ "mime": "^2.4.4",
+ "mkdirp": "^0.5.1",
+ "range-parser": "^1.2.1",
+ "webpack-log": "^2.0.0"
+ }
+ },
+ "webpack-dev-server": {
+ "version": "3.11.2",
+ "resolved": "https://registry.nlark.com/webpack-dev-server/download/webpack-dev-server-3.11.2.tgz",
+ "integrity": "sha1-aV687Xakkp8NXef9c/r+GF/jNwg=",
+ "dev": true,
+ "requires": {
+ "ansi-html": "0.0.7",
+ "bonjour": "^3.5.0",
+ "chokidar": "^2.1.8",
+ "compression": "^1.7.4",
+ "connect-history-api-fallback": "^1.6.0",
+ "debug": "^4.1.1",
+ "del": "^4.1.1",
+ "express": "^4.17.1",
+ "html-entities": "^1.3.1",
+ "http-proxy-middleware": "0.19.1",
+ "import-local": "^2.0.0",
+ "internal-ip": "^4.3.0",
+ "ip": "^1.1.5",
+ "is-absolute-url": "^3.0.3",
+ "killable": "^1.0.1",
+ "loglevel": "^1.6.8",
+ "opn": "^5.5.0",
+ "p-retry": "^3.0.1",
+ "portfinder": "^1.0.26",
+ "schema-utils": "^1.0.0",
+ "selfsigned": "^1.10.8",
+ "semver": "^6.3.0",
+ "serve-index": "^1.9.1",
+ "sockjs": "^0.3.21",
+ "sockjs-client": "^1.5.0",
+ "spdy": "^4.0.2",
+ "strip-ansi": "^3.0.1",
+ "supports-color": "^6.1.0",
+ "url": "^0.11.0",
+ "webpack-dev-middleware": "^3.7.2",
+ "webpack-log": "^2.0.0",
+ "ws": "^6.2.1",
+ "yargs": "^13.3.2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+ "dev": true
+ },
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz",
+ "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=",
+ "dev": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz?cache=0&sync_timestamp=1610299268308&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbinary-extensions%2Fdownload%2Fbinary-extensions-1.13.1.tgz",
+ "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz?cache=0&sync_timestamp=1603921884289&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-5.3.1.tgz",
+ "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
+ "dev": true
+ },
+ "chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.nlark.com/chokidar/download/chokidar-2.1.8.tgz?cache=0&sync_timestamp=1623763551233&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchokidar%2Fdownload%2Fchokidar-2.1.8.tgz",
+ "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=",
+ "dev": true,
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ }
+ },
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-5.0.0.tgz",
+ "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz",
+ "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz",
+ "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz",
+ "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=",
+ "dev": true
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz",
+ "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.13.tgz",
+ "integrity": "sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "bindings": "^1.5.0",
+ "nan": "^2.12.1"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.nlark.com/glob-parent/download/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "http-proxy-middleware": {
+ "version": "0.19.1",
+ "resolved": "https://registry.nlark.com/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz",
+ "integrity": "sha1-GDx9xKoUeRUDBkmMIQza+WCApDo=",
+ "dev": true,
+ "requires": {
+ "http-proxy": "^1.17.0",
+ "is-glob": "^4.0.0",
+ "lodash": "^4.17.11",
+ "micromatch": "^3.1.10"
+ }
+ },
+ "is-absolute-url": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-3.0.3.tgz",
+ "integrity": "sha1-lsaiK2ojkpsR6gr7GDbDatSl1pg=",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz?cache=0&sync_timestamp=1618552489864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz",
+ "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz",
+ "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-2.2.1.tgz",
+ "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz?cache=0&sync_timestamp=1601922425223&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fschema-utils%2Fdownload%2Fschema-utils-1.0.0.tgz",
+ "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz?cache=0&sync_timestamp=1618558751438&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-3.1.0.tgz",
+ "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz",
+ "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz",
+ "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.nlark.com/supports-color/download/supports-color-6.1.0.tgz?cache=0&sync_timestamp=1622293579301&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-6.1.0.tgz",
+ "integrity": "sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz",
+ "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz",
+ "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "yargs": {
+ "version": "13.3.2",
+ "resolved": "https://registry.nlark.com/yargs/download/yargs-13.3.2.tgz?cache=0&sync_timestamp=1620086644940&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs%2Fdownload%2Fyargs-13.3.2.tgz",
+ "integrity": "sha1-rX/+/sGqWVZayRX4Lcyzipwxot0=",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.2",
+ "resolved": "https://registry.nlark.com/yargs-parser/download/yargs-parser-13.1.2.tgz?cache=0&sync_timestamp=1624233514145&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs-parser%2Fdownload%2Fyargs-parser-13.1.2.tgz",
+ "integrity": "sha1-Ew8JcC667vJlDVTObj5XBvek+zg=",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "webpack-log": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/webpack-log/download/webpack-log-2.0.0.tgz?cache=0&sync_timestamp=1615477211227&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-log%2Fdownload%2Fwebpack-log-2.0.0.tgz",
+ "integrity": "sha1-W3ko4GN1k/EZ0y9iJ8HgrDHhtH8=",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "^3.0.0",
+ "uuid": "^3.3.2"
+ }
+ },
+ "webpack-merge": {
+ "version": "4.2.2",
+ "resolved": "https://registry.nlark.com/webpack-merge/download/webpack-merge-4.2.2.tgz?cache=0&sync_timestamp=1623054906070&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fwebpack-merge%2Fdownload%2Fwebpack-merge-4.2.2.tgz",
+ "integrity": "sha1-onxS6ng9E5iv0gh/VH17nS9DY00=",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.15"
+ }
+ },
+ "webpack-sources": {
+ "version": "1.4.3",
+ "resolved": "https://registry.nlark.com/webpack-sources/download/webpack-sources-1.4.3.tgz",
+ "integrity": "sha1-7t2OwLko+/HL/plOItLYkPMwqTM=",
+ "dev": true,
+ "requires": {
+ "source-list-map": "^2.0.0",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
+ }
+ }
+ },
+ "websocket-driver": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npm.taobao.org/websocket-driver/download/websocket-driver-0.7.4.tgz",
+ "integrity": "sha1-ia1Slbv2S0gKvLox5JU6ynBvV2A=",
+ "dev": true,
+ "requires": {
+ "http-parser-js": ">=0.5.1",
+ "safe-buffer": ">=5.1.0",
+ "websocket-extensions": ">=0.1.1"
+ }
+ },
+ "websocket-extensions": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.4.tgz",
+ "integrity": "sha1-f4RzvIOd/YdgituV1+sHUhFXikI=",
+ "dev": true
+ },
+ "webwackify": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npm.taobao.org/webwackify/download/webwackify-0.1.6.tgz",
+ "integrity": "sha1-HUKhKsYYI9fjRaveCE6qpipKles="
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz",
+ "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npm.taobao.org/which-boxed-primitive/download/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha1-E3V7yJsgmwSf5dhkMOIc9AqJqOY=",
+ "dev": true,
+ "requires": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npm.taobao.org/wide-align/download/wide-align-1.1.3.tgz",
+ "integrity": "sha1-rgdOa9wMFKQx6ATmJFScYzsABFc=",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz?cache=0&sync_timestamp=1618552489864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz?cache=0&sync_timestamp=1618558751438&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-2.1.1.tgz",
+ "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "window-size": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npm.taobao.org/window-size/download/window-size-0.1.4.tgz",
+ "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY="
+ },
+ "word-wrap": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz",
+ "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=",
+ "dev": true
+ },
+ "wordwrap": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.2.tgz",
+ "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8="
+ },
+ "worker-farm": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npm.taobao.org/worker-farm/download/worker-farm-1.7.0.tgz",
+ "integrity": "sha1-JqlMU5G7ypJhUgAvabhKS/dy5ag=",
+ "dev": true,
+ "requires": {
+ "errno": "~0.1.7"
+ }
+ },
+ "wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz",
+ "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
+ "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
+ "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
+ "dev": true
+ }
+ }
+ },
+ "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="
+ },
+ "write": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npm.taobao.org/write/download/write-1.0.3.tgz",
+ "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=",
+ "dev": true,
+ "requires": {
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "ws": {
+ "version": "6.2.2",
+ "resolved": "https://registry.nlark.com/ws/download/ws-6.2.2.tgz",
+ "integrity": "sha1-3Vzb1XqZeZFgl2UtePHMX66gwy4=",
+ "dev": true,
+ "requires": {
+ "async-limiter": "~1.0.0"
+ }
+ },
+ "xhr": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npm.taobao.org/xhr/download/xhr-2.4.0.tgz",
+ "integrity": "sha1-4W5mpF+GmGHu76tBbV7/ci3ECZM=",
+ "requires": {
+ "global": "~4.3.0",
+ "is-function": "^1.0.1",
+ "parse-headers": "^2.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "xmlhttprequest-ssl": {
+ "version": "1.6.3",
+ "resolved": "https://registry.nlark.com/xmlhttprequest-ssl/download/xmlhttprequest-ssl-1.6.3.tgz",
+ "integrity": "sha1-A7cThzsBZZ36LBxdBWBlsn3cLeY="
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz",
+ "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q="
+ },
+ "y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-4.0.3.tgz?cache=0&sync_timestamp=1617822684820&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fy18n%2Fdownload%2Fy18n-4.0.3.tgz",
+ "integrity": "sha1-tfJZyCzW4zaSHv17/Yv1YN6e7t8=",
+ "dev": true
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-3.1.1.tgz",
+ "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=",
+ "dev": true
+ },
+ "yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.nlark.com/yargs/download/yargs-16.2.0.tgz?cache=0&sync_timestamp=1620086644940&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs%2Fdownload%2Fyargs-16.2.0.tgz",
+ "integrity": "sha1-HIK/D2tqZur85+8w43b0mhJHf2Y=",
+ "dev": true,
+ "requires": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "dependencies": {
+ "cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-7.0.4.tgz",
+ "integrity": "sha1-oCZe5lVHb8gHrqnfPfjfd4OAi08=",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-5.0.8.tgz?cache=0&sync_timestamp=1617822684820&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fy18n%2Fdownload%2Fy18n-5.0.8.tgz",
+ "integrity": "sha1-f0k00PfKjFb5UxSTndzS3ZHOHVU=",
+ "dev": true
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.nlark.com/yargs-parser/download/yargs-parser-20.2.9.tgz?cache=0&sync_timestamp=1624233514145&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs-parser%2Fdownload%2Fyargs-parser-20.2.9.tgz",
+ "integrity": "sha1-LrfcOwKJcY/ClfNidThFxBoMlO4=",
+ "dev": true
+ },
+ "yeast": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npm.taobao.org/yeast/download/yeast-0.1.2.tgz",
+ "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
+ },
+ "yorkie": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/yorkie/download/yorkie-2.0.0.tgz",
+ "integrity": "sha1-kkEZEtQ1IU4SxRwq4Qk+VLa7g9k=",
+ "dev": true,
+ "requires": {
+ "execa": "^0.8.0",
+ "is-ci": "^1.0.10",
+ "normalize-path": "^1.0.0",
+ "strip-indent": "^2.0.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "execa": {
+ "version": "0.8.0",
+ "resolved": "https://registry.nlark.com/execa/download/execa-0.8.0.tgz",
+ "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz",
+ "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "normalize-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-1.0.0.tgz",
+ "integrity": "sha1-MtDkcvkf80VwHBWoMRAY07CpA3k=",
+ "dev": true
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ }
+ }
+ },
+ "zrender": {
+ "version": "4.3.2",
+ "resolved": "https://registry.nlark.com/zrender/download/zrender-4.3.2.tgz",
+ "integrity": "sha1-7HQy+UFcgsc1hLa3uMR+GwFiCcY="
+ }
+ }
+}
diff --git a/bigScreen/package.json b/bigScreen/package.json
new file mode 100644
index 0000000..d09b8a7
--- /dev/null
+++ b/bigScreen/package.json
@@ -0,0 +1,49 @@
+{
+ "name": "bigscreen",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "serve": "vue-cli-service serve",
+ "build": "vue-cli-service build",
+ "lint": "vue-cli-service lint"
+ },
+ "dependencies": {
+ "axios": "^0.21.1",
+ "baidumap": "0.0.4",
+ "bmap": "^1.0.1",
+ "bmaplib": "^1.0.1",
+ "core-js": "^3.6.5",
+ "echarts": "^4.9.0",
+ "element-ui": "^2.15.2",
+ "html2canvas": "^1.3.2",
+ "ol": "^6.6.1",
+ "socket.io-client": "^4.1.2",
+ "v-charts": "^1.19.0",
+ "vue": "^2.6.11",
+ "vue-baidu-map": "^0.21.22",
+ "vue-beauty": "^2.0.0-beta.19",
+ "vue-router": "^3.2.0",
+ "vue-socket.io": "^3.0.10",
+ "vue-video-player": "^5.0.2",
+ "vue-week-time": "^1.1.1",
+ "vuedraggable": "^2.24.3",
+ "vuex": "^3.4.0"
+ },
+ "devDependencies": {
+ "@vue/cli-plugin-babel": "~4.5.0",
+ "@vue/cli-plugin-eslint": "~4.5.0",
+ "@vue/cli-plugin-router": "~4.5.0",
+ "@vue/cli-plugin-vuex": "~4.5.0",
+ "@vue/cli-service": "~4.5.0",
+ "@vue/eslint-config-prettier": "^6.0.0",
+ "babel-eslint": "^10.1.0",
+ "eslint": "^6.7.2",
+ "eslint-plugin-prettier": "^3.3.1",
+ "eslint-plugin-vue": "^6.2.2",
+ "node-sass": "^4.12.0",
+ "prettier": "^2.2.1",
+ "sass-loader": "^8.0.2",
+ "svg-sprite-loader": "^6.0.9",
+ "vue-template-compiler": "^2.6.11"
+ }
+}
diff --git a/bigScreen/public/configIP.js b/bigScreen/public/configIP.js
new file mode 100644
index 0000000..556e555
--- /dev/null
+++ b/bigScreen/public/configIP.js
@@ -0,0 +1,2 @@
+window.backstageURL = "http://192.168.119.100:4500/"
+window.equipmentURL = "http://wiibox.xicp.io:19869/FRP/"
\ No newline at end of file
diff --git a/bigScreen/public/data.js b/bigScreen/public/data.js
new file mode 100644
index 0000000..97a47a6
--- /dev/null
+++ b/bigScreen/public/data.js
@@ -0,0 +1,468 @@
+锘縱ar data={
+ "features": [
+ {
+ "attributes": {
+ "FID": 0,
+ "id": 1,
+ "name": "Beijing US Embassy",
+ "x": 116.468,
+ "y": 39.954999999999998,
+ "z": 4,
+ "xu": 454558.72859999997,
+ "yu": 4422898.159
+ },
+ "geometry": {
+ "x": 116.468,
+ "y": 39.954999999999998
+ }
+ },
+ {
+ "attributes": {
+ "FID": 1,
+ "id": 2,
+ "name": "Temple of Heaven",
+ "x": 116.407,
+ "y": 39.886000000000003,
+ "z": 36,
+ "xu": 449297.45990000002,
+ "yu": 4415272.716
+ },
+ "geometry": {
+ "x": 116.407,
+ "y": 39.886000000000003
+ }
+ },
+ {
+ "attributes": {
+ "FID": 2,
+ "id": 3,
+ "name": "Haidian Beijing Botanical Garden",
+ "x": 116.20699999999999,
+ "y": 40.002000000000002,
+ "z": 4,
+ "xu": 432311.35320000001,
+ "yu": 4428280.3169999998
+ },
+ "geometry": {
+ "x": 116.20699999999999,
+ "y": 40.002000000000002
+ }
+ },
+ {
+ "attributes": {
+ "FID": 3,
+ "id": 4,
+ "name": "Chaoyang Olympic Sports Center116.397",
+ "x": 116.39700000000001,
+ "y": 39.981999999999999,
+ "z": 3,
+ "xu": 448514.42090000003,
+ "yu": 4425933.4840000002
+ },
+ "geometry": {
+ "x": 116.39700000000001,
+ "y": 39.981999999999999
+ }
+ },
+ {
+ "attributes": {
+ "FID": 4,
+ "id": 5,
+ "name": "Chaoyang Agricultural Exhibition Hall",
+ "x": 116.461,
+ "y": 39.936999999999998,
+ "z": 3,
+ "xu": 453948.74660000001,
+ "yu": 4420903.926
+ },
+ "geometry": {
+ "x": 116.461,
+ "y": 39.936999999999998
+ }
+ },
+ {
+ "attributes": {
+ "FID": 5,
+ "id": 6,
+ "name": "Liangxiang",
+ "x": 116.136,
+ "y": 39.741999999999997,
+ "z": 2,
+ "xu": 425971.88909999997,
+ "yu": 4399479.2439999999
+ },
+ "geometry": {
+ "x": 116.136,
+ "y": 39.741999999999997
+ }
+ },
+ {
+ "attributes": {
+ "FID": 6,
+ "id": 7,
+ "name": "Fengtai Yungang",
+ "x": 116.146,
+ "y": 39.823999999999998,
+ "z": 2,
+ "xu": 426915.51539999997,
+ "yu": 4408572.0729999999
+ },
+ "geometry": {
+ "x": 116.146,
+ "y": 39.823999999999998
+ }
+ },
+ {
+ "attributes": {
+ "FID": 7,
+ "id": 8,
+ "name": "Shunyi New Town",
+ "x": 116.655,
+ "y": 40.127000000000002,
+ "z": 2,
+ "xu": 470605.50309999997,
+ "yu": 4441910.1670000004
+ },
+ "geometry": {
+ "x": 116.655,
+ "y": 40.127000000000002
+ }
+ },
+ {
+ "attributes": {
+ "FID": 8,
+ "id": 12,
+ "name": "Donggaocun Zhen",
+ "x": 117.12,
+ "y": 40.100000000000001,
+ "z": 5,
+ "xu": 510228.20750000002,
+ "yu": 4438863.2359999996
+ },
+ "geometry": {
+ "x": 117.12,
+ "y": 40.100000000000001
+ }
+ },
+ {
+ "attributes": {
+ "FID": 9,
+ "id": 13,
+ "name": "Tongzhou New Town",
+ "x": 116.663,
+ "y": 39.886000000000003,
+ "z": 5,
+ "xu": 471185.97159999999,
+ "yu": 4415158.7980000004
+ },
+ "geometry": {
+ "x": 116.663,
+ "y": 39.886000000000003
+ }
+ },
+ {
+ "attributes": {
+ "FID": 10,
+ "id": 14,
+ "name": "Huangcunzhen",
+ "x": 116.404,
+ "y": 39.718000000000004,
+ "z": 2,
+ "xu": 448916.78909999999,
+ "yu": 4396628.5209999997
+ },
+ "geometry": {
+ "x": 116.404,
+ "y": 39.718000000000004
+ }
+ },
+ {
+ "attributes": {
+ "FID": 11,
+ "id": 15,
+ "name": "BDA",
+ "x": 116.506,
+ "y": 39.795000000000002,
+ "z": 3,
+ "xu": 457706.38530000002,
+ "yu": 4405121.3250000002
+ },
+ "geometry": {
+ "x": 116.506,
+ "y": 39.795000000000002
+ }
+ },
+ {
+ "attributes": {
+ "FID": 12,
+ "id": 16,
+ "name": "Yufazhen",
+ "x": 116.3,
+ "y": 39.520000000000003,
+ "z": 1,
+ "xu": 439831.65490000002,
+ "yu": 4374718.0180000002
+ },
+ "geometry": {
+ "x": 116.3,
+ "y": 39.520000000000003
+ }
+ },
+ {
+ "attributes": {
+ "FID": 13,
+ "id": 17,
+ "name": "Yongledianzhen",
+ "x": 116.783,
+ "y": 39.712000000000003,
+ "z": 4,
+ "xu": 481399.35399999999,
+ "yu": 4395815.3370000003
+ },
+ "geometry": {
+ "x": 116.783,
+ "y": 39.712000000000003
+ }
+ },
+ {
+ "attributes": {
+ "FID": 14,
+ "id": 18,
+ "name": "Xianghe EPA",
+ "x": 117.009,
+ "y": 39.765999999999998,
+ "z": 5,
+ "xu": 500770.85320000001,
+ "yu": 4401786.0719999997
+ },
+ "geometry": {
+ "x": 117.009,
+ "y": 39.765999999999998
+ }
+ },
+ {
+ "attributes": {
+ "FID": 15,
+ "id": 19,
+ "name": "Badaling Northwest",
+ "x": 115.988,
+ "y": 40.365000000000002,
+ "z": 3,
+ "xu": 414076.95390000002,
+ "yu": 4468761.409
+ },
+ "geometry": {
+ "x": 115.988,
+ "y": 40.365000000000002
+ }
+ },
+ {
+ "attributes": {
+ "FID": 16,
+ "id": 20,
+ "name": "East Fourth Ring Road",
+ "x": 116.483,
+ "y": 39.939,
+ "z": 3,
+ "xu": 455829.68479999999,
+ "yu": 4421114.7860000003
+ },
+ "geometry": {
+ "x": 116.483,
+ "y": 39.939
+ }
+ },
+ {
+ "attributes": {
+ "FID": 17,
+ "id": 21,
+ "name": "Yanqing town",
+ "x": 115.97199999999999,
+ "y": 40.453000000000003,
+ "z": 4,
+ "xu": 412832.08510000003,
+ "yu": 4478545.159
+ },
+ "geometry": {
+ "x": 115.97199999999999,
+ "y": 40.453000000000003
+ }
+ },
+ {
+ "attributes": {
+ "FID": 18,
+ "id": 22,
+ "name": "Miyun Reservoir",
+ "x": 116.911,
+ "y": 40.499000000000002,
+ "z": 3,
+ "xu": 492458.57429999998,
+ "yu": 4483147.5360000003
+ },
+ "geometry": {
+ "x": 116.911,
+ "y": 40.499000000000002
+ }
+ },
+ {
+ "attributes": {
+ "FID": 19,
+ "id": 23,
+ "name": "Haidian Wanliu",
+ "x": 116.28700000000001,
+ "y": 39.987000000000002,
+ "z": 3,
+ "xu": 439126.71720000001,
+ "yu": 4426557.75
+ },
+ "geometry": {
+ "x": 116.28700000000001,
+ "y": 39.987000000000002
+ }
+ },
+ {
+ "attributes": {
+ "FID": 20,
+ "id": 24,
+ "name": "Yongdingmen Inner St",
+ "x": 116.39400000000001,
+ "y": 39.875999999999998,
+ "z": 2,
+ "xu": 448178.40250000003,
+ "yu": 4414170.284
+ },
+ "geometry": {
+ "x": 116.39400000000001,
+ "y": 39.875999999999998
+ }
+ },
+ {
+ "attributes": {
+ "FID": 21,
+ "id": 25,
+ "name": "Jianshe Road",
+ "x": 117.304,
+ "y": 39.719000000000001,
+ "z": 4,
+ "xu": 526055.42509999999,
+ "yu": 4396613.8959999997
+ },
+ "geometry": {
+ "x": 117.304,
+ "y": 39.719000000000001
+ }
+ },
+ {
+ "attributes": {
+ "FID": 22,
+ "id": 26,
+ "name": "Ligong, Chengde",
+ "x": 117.938,
+ "y": 41.011000000000003,
+ "z": 3,
+ "xu": 578874.61600000004,
+ "yu": 4540401.8559999997
+ },
+ "geometry": {
+ "x": 117.938,
+ "y": 41.011000000000003
+ }
+ },
+ {
+ "attributes": {
+ "FID": 23,
+ "id": 27,
+ "name": "Fengning County City Hall",
+ "x": 116.652,
+ "y": 41.215000000000003,
+ "z": 4,
+ "xu": 470827.95390000002,
+ "yu": 4562682.9199999999
+ },
+ "geometry": {
+ "x": 116.652,
+ "y": 41.215000000000003
+ }
+ },
+ {
+ "attributes": {
+ "FID": 24,
+ "id": 28,
+ "name": "Xiahuayuan EPA",
+ "x": 115.29600000000001,
+ "y": 40.508000000000003,
+ "z": 3,
+ "xu": 355627.29269999999,
+ "yu": 4485537.4510000004
+ },
+ "geometry": {
+ "x": 115.29600000000001,
+ "y": 40.508000000000003
+ }
+ },
+ {
+ "attributes": {
+ "FID": 25,
+ "id": 29,
+ "name": "Yuxian Secondary School",
+ "x": 114.596,
+ "y": 39.845999999999997,
+ "z": 4,
+ "xu": 294324.1188,
+ "yu": 4413430.4780000001
+ },
+ "geometry": {
+ "x": 114.596,
+ "y": 39.845999999999997
+ }
+ },
+ {
+ "attributes": {
+ "FID": 26,
+ "id": 30,
+ "name": "Zhouzhou Monitoring Stations",
+ "x": 116.03400000000001,
+ "y": 39.491999999999997,
+ "z": 3,
+ "xu": 416933.99089999998,
+ "yu": 4371822.0190000003
+ },
+ "geometry": {
+ "x": 116.03400000000001,
+ "y": 39.491999999999997
+ }
+ },
+ {
+ "attributes": {
+ "FID": 27,
+ "id": 31,
+ "name": "Guan Party School, Langfang",
+ "x": 116.30500000000001,
+ "y": 39.445,
+ "z": 3,
+ "xu": 440197.23119999998,
+ "yu": 4366391.0480000004
+ },
+ "geometry": {
+ "x": 116.30500000000001,
+ "y": 39.445
+ }
+ },
+ {
+ "attributes": {
+ "FID": 28,
+ "id": 32,
+ "name": "Guyuan County welfare",
+ "x": 115.681,
+ "y": 41.667999999999999,
+ "z": 4,
+ "xu": 390196.44390000001,
+ "yu": 4613756.0429999996
+ },
+ "geometry": {
+ "x": 115.681,
+ "y": 41.667999999999999
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/bigScreen/public/favicon.ico b/bigScreen/public/favicon.ico
new file mode 100644
index 0000000..df36fcf
--- /dev/null
+++ b/bigScreen/public/favicon.ico
Binary files differ
diff --git a/bigScreen/public/flv.js b/bigScreen/public/flv.js
new file mode 100644
index 0000000..ec43b09
--- /dev/null
+++ b/bigScreen/public/flv.js
@@ -0,0 +1,13355 @@
+(function (f) {
+ if (typeof exports === "object" && typeof module !== "undefined") {
+ module.exports = f()
+ } else if (typeof define === "function" && define.amd) {
+ define([], f)
+ } else {
+ var g;
+ if (typeof window !== "undefined") {
+ g = window
+ } else if (typeof global !== "undefined") {
+ g = global
+ } else if (typeof self !== "undefined") {
+ g = self
+ } else {
+ g = this
+ }
+ g.flvjs = f()
+ }
+})(function () {
+ var define, module, exports;
+ return (function e(t, n, r) {
+ function s(o, u) {
+ if (!n[o]) {
+ if (!t[o]) {
+ var a = typeof require == "function" && require;
+ if (!u && a) return a(o, !0);
+ if (i) return i(o, !0);
+ var f = new Error("Cannot find module '" + o + "'");
+ throw f.code = "MODULE_NOT_FOUND", f
+ }
+ var l = n[o] = {
+ exports: {}
+ };
+ t[o][0].call(l.exports, function (e) {
+ var n = t[o][1][e];
+ return s(n ? n : e)
+ }, l, l.exports, e, t, n, r)
+ }
+ return n[o].exports
+ }
+ var i = typeof require == "function" && require;
+ for (var o = 0; o < r.length; o++) s(r[o]);
+ return s
+ })({
+ 1: [function (_dereq_, module, exports) {
+ (function (process, global) {
+ /*!
+ * @overview es6-promise - a tiny implementation of Promises/A+.
+ * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
+ * @license Licensed under MIT license
+ * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
+ * @version v4.2.5+7f2b526d
+ */
+
+ (function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global.ES6Promise = factory());
+ }(this, (function () {
+ 'use strict';
+
+ function objectOrFunction(x) {
+ var type = typeof x;
+ return x !== null && (type === 'object' || type === 'function');
+ }
+
+ function isFunction(x) {
+ return typeof x === 'function';
+ }
+
+
+
+ var _isArray = void 0;
+ if (Array.isArray) {
+ _isArray = Array.isArray;
+ } else {
+ _isArray = function (x) {
+ return Object.prototype.toString.call(x) === '[object Array]';
+ };
+ }
+
+ var isArray = _isArray;
+
+ var len = 0;
+ var vertxNext = void 0;
+ var customSchedulerFn = void 0;
+
+ var asap = function asap(callback, arg) {
+ queue[len] = callback;
+ queue[len + 1] = arg;
+ len += 2;
+ if (len === 2) {
+ // If len is 2, that means that we need to schedule an async flush.
+ // If additional callbacks are queued before the queue is flushed, they
+ // will be processed by this flush that we are scheduling.
+ if (customSchedulerFn) {
+ customSchedulerFn(flush);
+ } else {
+ scheduleFlush();
+ }
+ }
+ };
+
+ function setScheduler(scheduleFn) {
+ customSchedulerFn = scheduleFn;
+ }
+
+ function setAsap(asapFn) {
+ asap = asapFn;
+ }
+
+ var browserWindow = typeof window !== 'undefined' ? window : undefined;
+ var browserGlobal = browserWindow || {};
+ var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
+ var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
+
+ // test for web worker but not in IE10
+ var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';
+
+ // node
+ function useNextTick() {
+ // node version 0.10.x displays a deprecation warning when nextTick is used recursively
+ // see https://github.com/cujojs/when/issues/410 for details
+ return function () {
+ return process.nextTick(flush);
+ };
+ }
+
+ // vertx
+ function useVertxTimer() {
+ if (typeof vertxNext !== 'undefined') {
+ return function () {
+ vertxNext(flush);
+ };
+ }
+
+ return useSetTimeout();
+ }
+
+ function useMutationObserver() {
+ var iterations = 0;
+ var observer = new BrowserMutationObserver(flush);
+ var node = document.createTextNode('');
+ observer.observe(node, {
+ characterData: true
+ });
+
+ return function () {
+ node.data = iterations = ++iterations % 2;
+ };
+ }
+
+ // web worker
+ function useMessageChannel() {
+ var channel = new MessageChannel();
+ channel.port1.onmessage = flush;
+ return function () {
+ return channel.port2.postMessage(0);
+ };
+ }
+
+ function useSetTimeout() {
+ // Store setTimeout reference so es6-promise will be unaffected by
+ // other code modifying setTimeout (like sinon.useFakeTimers())
+ var globalSetTimeout = setTimeout;
+ return function () {
+ return globalSetTimeout(flush, 1);
+ };
+ }
+
+ var queue = new Array(1000);
+
+ function flush() {
+ for (var i = 0; i < len; i += 2) {
+ var callback = queue[i];
+ var arg = queue[i + 1];
+
+ callback(arg);
+
+ queue[i] = undefined;
+ queue[i + 1] = undefined;
+ }
+
+ len = 0;
+ }
+
+ function attemptVertx() {
+ try {
+ var vertx = Function('return this')().require('vertx');
+ vertxNext = vertx.runOnLoop || vertx.runOnContext;
+ return useVertxTimer();
+ } catch (e) {
+ return useSetTimeout();
+ }
+ }
+
+ var scheduleFlush = void 0;
+ // Decide what async method to use to triggering processing of queued callbacks:
+ if (isNode) {
+ scheduleFlush = useNextTick();
+ } else if (BrowserMutationObserver) {
+ scheduleFlush = useMutationObserver();
+ } else if (isWorker) {
+ scheduleFlush = useMessageChannel();
+ } else if (browserWindow === undefined && typeof _dereq_ === 'function') {
+ scheduleFlush = attemptVertx();
+ } else {
+ scheduleFlush = useSetTimeout();
+ }
+
+ function then(onFulfillment, onRejection) {
+ var parent = this;
+
+ var child = new this.constructor(noop);
+
+ if (child[PROMISE_ID] === undefined) {
+ makePromise(child);
+ }
+
+ var _state = parent._state;
+
+
+ if (_state) {
+ var callback = arguments[_state - 1];
+ asap(function () {
+ return invokeCallback(_state, child, callback, parent._result);
+ });
+ } else {
+ subscribe(parent, child, onFulfillment, onRejection);
+ }
+
+ return child;
+ }
+
+ /**
+ `Promise.resolve` returns a promise that will become resolved with the
+ passed `value`. It is shorthand for the following:
+
+ ```javascript
+ let promise = new Promise(function(resolve, reject){
+ resolve(1);
+ });
+
+ promise.then(function(value){
+ // value === 1
+ });
+ ```
+
+ Instead of writing the above, your code now simply becomes the following:
+
+ ```javascript
+ let promise = Promise.resolve(1);
+
+ promise.then(function(value){
+ // value === 1
+ });
+ ```
+
+ @method resolve
+ @static
+ @param {Any} value value that the returned promise will be resolved with
+ Useful for tooling.
+ @return {Promise} a promise that will become fulfilled with the given
+ `value`
+ */
+ function resolve$1(object) {
+ /*jshint validthis:true */
+ var Constructor = this;
+
+ if (object && typeof object === 'object' && object.constructor === Constructor) {
+ return object;
+ }
+
+ var promise = new Constructor(noop);
+ resolve(promise, object);
+ return promise;
+ }
+
+ var PROMISE_ID = Math.random().toString(36).substring(2);
+
+ function noop() {}
+
+ var PENDING = void 0;
+ var FULFILLED = 1;
+ var REJECTED = 2;
+
+ var TRY_CATCH_ERROR = {
+ error: null
+ };
+
+ function selfFulfillment() {
+ return new TypeError("You cannot resolve a promise with itself");
+ }
+
+ function cannotReturnOwn() {
+ return new TypeError('A promises callback cannot return that same promise.');
+ }
+
+ function getThen(promise) {
+ try {
+ return promise.then;
+ } catch (error) {
+ TRY_CATCH_ERROR.error = error;
+ return TRY_CATCH_ERROR;
+ }
+ }
+
+ function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {
+ try {
+ then$$1.call(value, fulfillmentHandler, rejectionHandler);
+ } catch (e) {
+ return e;
+ }
+ }
+
+ function handleForeignThenable(promise, thenable, then$$1) {
+ asap(function (promise) {
+ var sealed = false;
+ var error = tryThen(then$$1, thenable, function (value) {
+ if (sealed) {
+ return;
+ }
+ sealed = true;
+ if (thenable !== value) {
+ resolve(promise, value);
+ } else {
+ fulfill(promise, value);
+ }
+ }, function (reason) {
+ if (sealed) {
+ return;
+ }
+ sealed = true;
+
+ reject(promise, reason);
+ }, 'Settle: ' + (promise._label || ' unknown promise'));
+
+ if (!sealed && error) {
+ sealed = true;
+ reject(promise, error);
+ }
+ }, promise);
+ }
+
+ function handleOwnThenable(promise, thenable) {
+ if (thenable._state === FULFILLED) {
+ fulfill(promise, thenable._result);
+ } else if (thenable._state === REJECTED) {
+ reject(promise, thenable._result);
+ } else {
+ subscribe(thenable, undefined, function (value) {
+ return resolve(promise, value);
+ }, function (reason) {
+ return reject(promise, reason);
+ });
+ }
+ }
+
+ function handleMaybeThenable(promise, maybeThenable, then$$1) {
+ if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {
+ handleOwnThenable(promise, maybeThenable);
+ } else {
+ if (then$$1 === TRY_CATCH_ERROR) {
+ reject(promise, TRY_CATCH_ERROR.error);
+ TRY_CATCH_ERROR.error = null;
+ } else if (then$$1 === undefined) {
+ fulfill(promise, maybeThenable);
+ } else if (isFunction(then$$1)) {
+ handleForeignThenable(promise, maybeThenable, then$$1);
+ } else {
+ fulfill(promise, maybeThenable);
+ }
+ }
+ }
+
+ function resolve(promise, value) {
+ if (promise === value) {
+ reject(promise, selfFulfillment());
+ } else if (objectOrFunction(value)) {
+ handleMaybeThenable(promise, value, getThen(value));
+ } else {
+ fulfill(promise, value);
+ }
+ }
+
+ function publishRejection(promise) {
+ if (promise._onerror) {
+ promise._onerror(promise._result);
+ }
+
+ publish(promise);
+ }
+
+ function fulfill(promise, value) {
+ if (promise._state !== PENDING) {
+ return;
+ }
+
+ promise._result = value;
+ promise._state = FULFILLED;
+
+ if (promise._subscribers.length !== 0) {
+ asap(publish, promise);
+ }
+ }
+
+ function reject(promise, reason) {
+ if (promise._state !== PENDING) {
+ return;
+ }
+ promise._state = REJECTED;
+ promise._result = reason;
+
+ asap(publishRejection, promise);
+ }
+
+ function subscribe(parent, child, onFulfillment, onRejection) {
+ var _subscribers = parent._subscribers;
+ var length = _subscribers.length;
+
+
+ parent._onerror = null;
+
+ _subscribers[length] = child;
+ _subscribers[length + FULFILLED] = onFulfillment;
+ _subscribers[length + REJECTED] = onRejection;
+
+ if (length === 0 && parent._state) {
+ asap(publish, parent);
+ }
+ }
+
+ function publish(promise) {
+ var subscribers = promise._subscribers;
+ var settled = promise._state;
+
+ if (subscribers.length === 0) {
+ return;
+ }
+
+ var child = void 0,
+ callback = void 0,
+ detail = promise._result;
+
+ for (var i = 0; i < subscribers.length; i += 3) {
+ child = subscribers[i];
+ callback = subscribers[i + settled];
+
+ if (child) {
+ invokeCallback(settled, child, callback, detail);
+ } else {
+ callback(detail);
+ }
+ }
+
+ promise._subscribers.length = 0;
+ }
+
+ function tryCatch(callback, detail) {
+ try {
+ return callback(detail);
+ } catch (e) {
+ TRY_CATCH_ERROR.error = e;
+ return TRY_CATCH_ERROR;
+ }
+ }
+
+ function invokeCallback(settled, promise, callback, detail) {
+ var hasCallback = isFunction(callback),
+ value = void 0,
+ error = void 0,
+ succeeded = void 0,
+ failed = void 0;
+
+ if (hasCallback) {
+ value = tryCatch(callback, detail);
+
+ if (value === TRY_CATCH_ERROR) {
+ failed = true;
+ error = value.error;
+ value.error = null;
+ } else {
+ succeeded = true;
+ }
+
+ if (promise === value) {
+ reject(promise, cannotReturnOwn());
+ return;
+ }
+ } else {
+ value = detail;
+ succeeded = true;
+ }
+
+ if (promise._state !== PENDING) {
+ // noop
+ } else if (hasCallback && succeeded) {
+ resolve(promise, value);
+ } else if (failed) {
+ reject(promise, error);
+ } else if (settled === FULFILLED) {
+ fulfill(promise, value);
+ } else if (settled === REJECTED) {
+ reject(promise, value);
+ }
+ }
+
+ function initializePromise(promise, resolver) {
+ try {
+ resolver(function resolvePromise(value) {
+ resolve(promise, value);
+ }, function rejectPromise(reason) {
+ reject(promise, reason);
+ });
+ } catch (e) {
+ reject(promise, e);
+ }
+ }
+
+ var id = 0;
+
+ function nextId() {
+ return id++;
+ }
+
+ function makePromise(promise) {
+ promise[PROMISE_ID] = id++;
+ promise._state = undefined;
+ promise._result = undefined;
+ promise._subscribers = [];
+ }
+
+ function validationError() {
+ return new Error('Array Methods must be provided an Array');
+ }
+
+ var Enumerator = function () {
+ function Enumerator(Constructor, input) {
+ this._instanceConstructor = Constructor;
+ this.promise = new Constructor(noop);
+
+ if (!this.promise[PROMISE_ID]) {
+ makePromise(this.promise);
+ }
+
+ if (isArray(input)) {
+ this.length = input.length;
+ this._remaining = input.length;
+
+ this._result = new Array(this.length);
+
+ if (this.length === 0) {
+ fulfill(this.promise, this._result);
+ } else {
+ this.length = this.length || 0;
+ this._enumerate(input);
+ if (this._remaining === 0) {
+ fulfill(this.promise, this._result);
+ }
+ }
+ } else {
+ reject(this.promise, validationError());
+ }
+ }
+
+ Enumerator.prototype._enumerate = function _enumerate(input) {
+ for (var i = 0; this._state === PENDING && i < input.length; i++) {
+ this._eachEntry(input[i], i);
+ }
+ };
+
+ Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {
+ var c = this._instanceConstructor;
+ var resolve$$1 = c.resolve;
+
+
+ if (resolve$$1 === resolve$1) {
+ var _then = getThen(entry);
+
+ if (_then === then && entry._state !== PENDING) {
+ this._settledAt(entry._state, i, entry._result);
+ } else if (typeof _then !== 'function') {
+ this._remaining--;
+ this._result[i] = entry;
+ } else if (c === Promise$1) {
+ var promise = new c(noop);
+ handleMaybeThenable(promise, entry, _then);
+ this._willSettleAt(promise, i);
+ } else {
+ this._willSettleAt(new c(function (resolve$$1) {
+ return resolve$$1(entry);
+ }), i);
+ }
+ } else {
+ this._willSettleAt(resolve$$1(entry), i);
+ }
+ };
+
+ Enumerator.prototype._settledAt = function _settledAt(state, i, value) {
+ var promise = this.promise;
+
+
+ if (promise._state === PENDING) {
+ this._remaining--;
+
+ if (state === REJECTED) {
+ reject(promise, value);
+ } else {
+ this._result[i] = value;
+ }
+ }
+
+ if (this._remaining === 0) {
+ fulfill(promise, this._result);
+ }
+ };
+
+ Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {
+ var enumerator = this;
+
+ subscribe(promise, undefined, function (value) {
+ return enumerator._settledAt(FULFILLED, i, value);
+ }, function (reason) {
+ return enumerator._settledAt(REJECTED, i, reason);
+ });
+ };
+
+ return Enumerator;
+ }();
+
+ /**
+ `Promise.all` accepts an array of promises, and returns a new promise which
+ is fulfilled with an array of fulfillment values for the passed promises, or
+ rejected with the reason of the first passed promise to be rejected. It casts all
+ elements of the passed iterable to promises as it runs this algorithm.
+
+ Example:
+
+ ```javascript
+ let promise1 = resolve(1);
+ let promise2 = resolve(2);
+ let promise3 = resolve(3);
+ let promises = [ promise1, promise2, promise3 ];
+
+ Promise.all(promises).then(function(array){
+ // The array here would be [ 1, 2, 3 ];
+ });
+ ```
+
+ If any of the `promises` given to `all` are rejected, the first promise
+ that is rejected will be given as an argument to the returned promises's
+ rejection handler. For example:
+
+ Example:
+
+ ```javascript
+ let promise1 = resolve(1);
+ let promise2 = reject(new Error("2"));
+ let promise3 = reject(new Error("3"));
+ let promises = [ promise1, promise2, promise3 ];
+
+ Promise.all(promises).then(function(array){
+ // Code here never runs because there are rejected promises!
+ }, function(error) {
+ // error.message === "2"
+ });
+ ```
+
+ @method all
+ @static
+ @param {Array} entries array of promises
+ @param {String} label optional string for labeling the promise.
+ Useful for tooling.
+ @return {Promise} promise that is fulfilled when all `promises` have been
+ fulfilled, or rejected if any of them become rejected.
+ @static
+ */
+ function all(entries) {
+ return new Enumerator(this, entries).promise;
+ }
+
+ /**
+ `Promise.race` returns a new promise which is settled in the same way as the
+ first passed promise to settle.
+
+ Example:
+
+ ```javascript
+ let promise1 = new Promise(function(resolve, reject){
+ setTimeout(function(){
+ resolve('promise 1');
+ }, 200);
+ });
+
+ let promise2 = new Promise(function(resolve, reject){
+ setTimeout(function(){
+ resolve('promise 2');
+ }, 100);
+ });
+
+ Promise.race([promise1, promise2]).then(function(result){
+ // result === 'promise 2' because it was resolved before promise1
+ // was resolved.
+ });
+ ```
+
+ `Promise.race` is deterministic in that only the state of the first
+ settled promise matters. For example, even if other promises given to the
+ `promises` array argument are resolved, but the first settled promise has
+ become rejected before the other promises became fulfilled, the returned
+ promise will become rejected:
+
+ ```javascript
+ let promise1 = new Promise(function(resolve, reject){
+ setTimeout(function(){
+ resolve('promise 1');
+ }, 200);
+ });
+
+ let promise2 = new Promise(function(resolve, reject){
+ setTimeout(function(){
+ reject(new Error('promise 2'));
+ }, 100);
+ });
+
+ Promise.race([promise1, promise2]).then(function(result){
+ // Code here never runs
+ }, function(reason){
+ // reason.message === 'promise 2' because promise 2 became rejected before
+ // promise 1 became fulfilled
+ });
+ ```
+
+ An example real-world use case is implementing timeouts:
+
+ ```javascript
+ Promise.race([ajax('foo.json'), timeout(5000)])
+ ```
+
+ @method race
+ @static
+ @param {Array} promises array of promises to observe
+ Useful for tooling.
+ @return {Promise} a promise which settles in the same way as the first passed
+ promise to settle.
+ */
+ function race(entries) {
+ /*jshint validthis:true */
+ var Constructor = this;
+
+ if (!isArray(entries)) {
+ return new Constructor(function (_, reject) {
+ return reject(new TypeError('You must pass an array to race.'));
+ });
+ } else {
+ return new Constructor(function (resolve, reject) {
+ var length = entries.length;
+ for (var i = 0; i < length; i++) {
+ Constructor.resolve(entries[i]).then(resolve, reject);
+ }
+ });
+ }
+ }
+
+ /**
+ `Promise.reject` returns a promise rejected with the passed `reason`.
+ It is shorthand for the following:
+
+ ```javascript
+ let promise = new Promise(function(resolve, reject){
+ reject(new Error('WHOOPS'));
+ });
+
+ promise.then(function(value){
+ // Code here doesn't run because the promise is rejected!
+ }, function(reason){
+ // reason.message === 'WHOOPS'
+ });
+ ```
+
+ Instead of writing the above, your code now simply becomes the following:
+
+ ```javascript
+ let promise = Promise.reject(new Error('WHOOPS'));
+
+ promise.then(function(value){
+ // Code here doesn't run because the promise is rejected!
+ }, function(reason){
+ // reason.message === 'WHOOPS'
+ });
+ ```
+
+ @method reject
+ @static
+ @param {Any} reason value that the returned promise will be rejected with.
+ Useful for tooling.
+ @return {Promise} a promise rejected with the given `reason`.
+ */
+ function reject$1(reason) {
+ /*jshint validthis:true */
+ var Constructor = this;
+ var promise = new Constructor(noop);
+ reject(promise, reason);
+ return promise;
+ }
+
+ function needsResolver() {
+ throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');
+ }
+
+ function needsNew() {
+ throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");
+ }
+
+ /**
+ Promise objects represent the eventual result of an asynchronous operation. The
+ primary way of interacting with a promise is through its `then` method, which
+ registers callbacks to receive either a promise's eventual value or the reason
+ why the promise cannot be fulfilled.
+
+ Terminology
+ -----------
+
+ - `promise` is an object or function with a `then` method whose behavior conforms to this specification.
+ - `thenable` is an object or function that defines a `then` method.
+ - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).
+ - `exception` is a value that is thrown using the throw statement.
+ - `reason` is a value that indicates why a promise was rejected.
+ - `settled` the final resting state of a promise, fulfilled or rejected.
+
+ A promise can be in one of three states: pending, fulfilled, or rejected.
+
+ Promises that are fulfilled have a fulfillment value and are in the fulfilled
+ state. Promises that are rejected have a rejection reason and are in the
+ rejected state. A fulfillment value is never a thenable.
+
+ Promises can also be said to *resolve* a value. If this value is also a
+ promise, then the original promise's settled state will match the value's
+ settled state. So a promise that *resolves* a promise that rejects will
+ itself reject, and a promise that *resolves* a promise that fulfills will
+ itself fulfill.
+
+
+ Basic Usage:
+ ------------
+
+ ```js
+ let promise = new Promise(function(resolve, reject) {
+ // on success
+ resolve(value);
+
+ // on failure
+ reject(reason);
+ });
+
+ promise.then(function(value) {
+ // on fulfillment
+ }, function(reason) {
+ // on rejection
+ });
+ ```
+
+ Advanced Usage:
+ ---------------
+
+ Promises shine when abstracting away asynchronous interactions such as
+ `XMLHttpRequest`s.
+
+ ```js
+ function getJSON(url) {
+ return new Promise(function(resolve, reject){
+ let xhr = new XMLHttpRequest();
+
+ xhr.open('GET', url);
+ xhr.onreadystatechange = handler;
+ xhr.responseType = 'json';
+ xhr.setRequestHeader('Accept', 'application/json');
+ xhr.send();
+
+ function handler() {
+ if (this.readyState === this.DONE) {
+ if (this.status === 200) {
+ resolve(this.response);
+ } else {
+ reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));
+ }
+ }
+ };
+ });
+ }
+
+ getJSON('/posts.json').then(function(json) {
+ // on fulfillment
+ }, function(reason) {
+ // on rejection
+ });
+ ```
+
+ Unlike callbacks, promises are great composable primitives.
+
+ ```js
+ Promise.all([
+ getJSON('/posts'),
+ getJSON('/comments')
+ ]).then(function(values){
+ values[0] // => postsJSON
+ values[1] // => commentsJSON
+
+ return values;
+ });
+ ```
+
+ @class Promise
+ @param {Function} resolver
+ Useful for tooling.
+ @constructor
+ */
+
+ var Promise$1 = function () {
+ function Promise(resolver) {
+ this[PROMISE_ID] = nextId();
+ this._result = this._state = undefined;
+ this._subscribers = [];
+
+ if (noop !== resolver) {
+ typeof resolver !== 'function' && needsResolver();
+ this instanceof Promise ? initializePromise(this, resolver) : needsNew();
+ }
+ }
+
+ /**
+ The primary way of interacting with a promise is through its `then` method,
+ which registers callbacks to receive either a promise's eventual value or the
+ reason why the promise cannot be fulfilled.
+ ```js
+ findUser().then(function(user){
+ // user is available
+ }, function(reason){
+ // user is unavailable, and you are given the reason why
+ });
+ ```
+ Chaining
+ --------
+ The return value of `then` is itself a promise. This second, 'downstream'
+ promise is resolved with the return value of the first promise's fulfillment
+ or rejection handler, or rejected if the handler throws an exception.
+ ```js
+ findUser().then(function (user) {
+ return user.name;
+ }, function (reason) {
+ return 'default name';
+ }).then(function (userName) {
+ // If `findUser` fulfilled, `userName` will be the user's name, otherwise it
+ // will be `'default name'`
+ });
+ findUser().then(function (user) {
+ throw new Error('Found user, but still unhappy');
+ }, function (reason) {
+ throw new Error('`findUser` rejected and we're unhappy');
+ }).then(function (value) {
+ // never reached
+ }, function (reason) {
+ // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.
+ // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.
+ });
+ ```
+ If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.
+ ```js
+ findUser().then(function (user) {
+ throw new PedagogicalException('Upstream error');
+ }).then(function (value) {
+ // never reached
+ }).then(function (value) {
+ // never reached
+ }, function (reason) {
+ // The `PedgagocialException` is propagated all the way down to here
+ });
+ ```
+ Assimilation
+ ------------
+ Sometimes the value you want to propagate to a downstream promise can only be
+ retrieved asynchronously. This can be achieved by returning a promise in the
+ fulfillment or rejection handler. The downstream promise will then be pending
+ until the returned promise is settled. This is called *assimilation*.
+ ```js
+ findUser().then(function (user) {
+ return findCommentsByAuthor(user);
+ }).then(function (comments) {
+ // The user's comments are now available
+ });
+ ```
+ If the assimliated promise rejects, then the downstream promise will also reject.
+ ```js
+ findUser().then(function (user) {
+ return findCommentsByAuthor(user);
+ }).then(function (comments) {
+ // If `findCommentsByAuthor` fulfills, we'll have the value here
+ }, function (reason) {
+ // If `findCommentsByAuthor` rejects, we'll have the reason here
+ });
+ ```
+ Simple Example
+ --------------
+ Synchronous Example
+ ```javascript
+ let result;
+ try {
+ result = findResult();
+ // success
+ } catch(reason) {
+ // failure
+ }
+ ```
+ Errback Example
+ ```js
+ findResult(function(result, err){
+ if (err) {
+ // failure
+ } else {
+ // success
+ }
+ });
+ ```
+ Promise Example;
+ ```javascript
+ findResult().then(function(result){
+ // success
+ }, function(reason){
+ // failure
+ });
+ ```
+ Advanced Example
+ --------------
+ Synchronous Example
+ ```javascript
+ let author, books;
+ try {
+ author = findAuthor();
+ books = findBooksByAuthor(author);
+ // success
+ } catch(reason) {
+ // failure
+ }
+ ```
+ Errback Example
+ ```js
+ function foundBooks(books) {
+ }
+ function failure(reason) {
+ }
+ findAuthor(function(author, err){
+ if (err) {
+ failure(err);
+ // failure
+ } else {
+ try {
+ findBoooksByAuthor(author, function(books, err) {
+ if (err) {
+ failure(err);
+ } else {
+ try {
+ foundBooks(books);
+ } catch(reason) {
+ failure(reason);
+ }
+ }
+ });
+ } catch(error) {
+ failure(err);
+ }
+ // success
+ }
+ });
+ ```
+ Promise Example;
+ ```javascript
+ findAuthor().
+ then(findBooksByAuthor).
+ then(function(books){
+ // found books
+ }).catch(function(reason){
+ // something went wrong
+ });
+ ```
+ @method then
+ @param {Function} onFulfilled
+ @param {Function} onRejected
+ Useful for tooling.
+ @return {Promise}
+ */
+
+ /**
+ `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same
+ as the catch block of a try/catch statement.
+ ```js
+ function findAuthor(){
+ throw new Error('couldn't find that author');
+ }
+ // synchronous
+ try {
+ findAuthor();
+ } catch(reason) {
+ // something went wrong
+ }
+ // async with promises
+ findAuthor().catch(function(reason){
+ // something went wrong
+ });
+ ```
+ @method catch
+ @param {Function} onRejection
+ Useful for tooling.
+ @return {Promise}
+ */
+
+
+ Promise.prototype.catch = function _catch(onRejection) {
+ return this.then(null, onRejection);
+ };
+
+ /**
+ `finally` will be invoked regardless of the promise's fate just as native
+ try/catch/finally behaves
+
+ Synchronous example:
+
+ ```js
+ findAuthor() {
+ if (Math.random() > 0.5) {
+ throw new Error();
+ }
+ return new Author();
+ }
+
+ try {
+ return findAuthor(); // succeed or fail
+ } catch(error) {
+ return findOtherAuther();
+ } finally {
+ // always runs
+ // doesn't affect the return value
+ }
+ ```
+
+ Asynchronous example:
+
+ ```js
+ findAuthor().catch(function(reason){
+ return findOtherAuther();
+ }).finally(function(){
+ // author was either found, or not
+ });
+ ```
+
+ @method finally
+ @param {Function} callback
+ @return {Promise}
+ */
+
+
+ Promise.prototype.finally = function _finally(callback) {
+ var promise = this;
+ var constructor = promise.constructor;
+
+ if (isFunction(callback)) {
+ return promise.then(function (value) {
+ return constructor.resolve(callback()).then(function () {
+ return value;
+ });
+ }, function (reason) {
+ return constructor.resolve(callback()).then(function () {
+ throw reason;
+ });
+ });
+ }
+
+ return promise.then(callback, callback);
+ };
+
+ return Promise;
+ }();
+
+ Promise$1.prototype.then = then;
+ Promise$1.all = all;
+ Promise$1.race = race;
+ Promise$1.resolve = resolve$1;
+ Promise$1.reject = reject$1;
+ Promise$1._setScheduler = setScheduler;
+ Promise$1._setAsap = setAsap;
+ Promise$1._asap = asap;
+
+ /*global self*/
+ function polyfill() {
+ var local = void 0;
+
+ if (typeof global !== 'undefined') {
+ local = global;
+ } else if (typeof self !== 'undefined') {
+ local = self;
+ } else {
+ try {
+ local = Function('return this')();
+ } catch (e) {
+ throw new Error('polyfill failed because global object is unavailable in this environment');
+ }
+ }
+
+ var P = local.Promise;
+
+ if (P) {
+ var promiseToString = null;
+ try {
+ promiseToString = Object.prototype.toString.call(P.resolve());
+ } catch (e) {
+ // silently ignored
+ }
+
+ if (promiseToString === '[object Promise]' && !P.cast) {
+ return;
+ }
+ }
+
+ local.Promise = Promise$1;
+ }
+
+ // Strange compat..
+ Promise$1.polyfill = polyfill;
+ Promise$1.Promise = Promise$1;
+
+ return Promise$1;
+
+ })));
+
+
+
+
+
+ }).call(this, _dereq_('_process'), typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+
+ }, {
+ "_process": 3
+ }],
+ 2: [function (_dereq_, module, exports) {
+ // Copyright Joyent, Inc. and other Node contributors.
+ //
+ // Permission is hereby granted, free of charge, to any person obtaining a
+ // copy of this software and associated documentation files (the
+ // "Software"), to deal in the Software without restriction, including
+ // without limitation the rights to use, copy, modify, merge, publish,
+ // distribute, sublicense, and/or sell copies of the Software, and to permit
+ // persons to whom the Software is furnished to do so, subject to the
+ // following conditions:
+ //
+ // The above copyright notice and this permission notice shall be included
+ // in all copies or substantial portions of the Software.
+ //
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+ // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ // USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ function EventEmitter() {
+ this._events = this._events || {};
+ this._maxListeners = this._maxListeners || undefined;
+ }
+ module.exports = EventEmitter;
+
+ // Backwards-compat with node 0.10.x
+ EventEmitter.EventEmitter = EventEmitter;
+
+ EventEmitter.prototype._events = undefined;
+ EventEmitter.prototype._maxListeners = undefined;
+
+ // By default EventEmitters will print a warning if more than 10 listeners are
+ // added to it. This is a useful default which helps finding memory leaks.
+ EventEmitter.defaultMaxListeners = 10;
+
+ // Obviously not all Emitters should be limited to 10. This function allows
+ // that to be increased. Set to zero for unlimited.
+ EventEmitter.prototype.setMaxListeners = function (n) {
+ if (!isNumber(n) || n < 0 || isNaN(n))
+ throw TypeError('n must be a positive number');
+ this._maxListeners = n;
+ return this;
+ };
+
+ EventEmitter.prototype.emit = function (type) {
+ var er, handler, len, args, i, listeners;
+
+ if (!this._events)
+ this._events = {};
+
+ // If there is no 'error' event listener then throw.
+ if (type === 'error') {
+ if (!this._events.error ||
+ (isObject(this._events.error) && !this._events.error.length)) {
+ er = arguments[1];
+ if (er instanceof Error) {
+ throw er; // Unhandled 'error' event
+ } else {
+ // At least give some kind of context to the user
+ var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
+ err.context = er;
+ throw err;
+ }
+ }
+ }
+
+ handler = this._events[type];
+
+ if (isUndefined(handler))
+ return false;
+
+ if (isFunction(handler)) {
+ switch (arguments.length) {
+ // fast cases
+ case 1:
+ handler.call(this);
+ break;
+ case 2:
+ handler.call(this, arguments[1]);
+ break;
+ case 3:
+ handler.call(this, arguments[1], arguments[2]);
+ break;
+ // slower
+ default:
+ args = Array.prototype.slice.call(arguments, 1);
+ handler.apply(this, args);
+ }
+ } else if (isObject(handler)) {
+ args = Array.prototype.slice.call(arguments, 1);
+ listeners = handler.slice();
+ len = listeners.length;
+ for (i = 0; i < len; i++)
+ listeners[i].apply(this, args);
+ }
+
+ return true;
+ };
+
+ EventEmitter.prototype.addListener = function (type, listener) {
+ var m;
+
+ if (!isFunction(listener))
+ throw TypeError('listener must be a function');
+
+ if (!this._events)
+ this._events = {};
+
+ // To avoid recursion in the case that type === "newListener"! Before
+ // adding it to the listeners, first emit "newListener".
+ if (this._events.newListener)
+ this.emit('newListener', type,
+ isFunction(listener.listener) ?
+ listener.listener : listener);
+
+ if (!this._events[type])
+ // Optimize the case of one listener. Don't need the extra array object.
+ this._events[type] = listener;
+ else if (isObject(this._events[type]))
+ // If we've already got an array, just append.
+ this._events[type].push(listener);
+ else
+ // Adding the second element, need to change to array.
+ this._events[type] = [this._events[type], listener];
+
+ // Check for listener leak
+ if (isObject(this._events[type]) && !this._events[type].warned) {
+ if (!isUndefined(this._maxListeners)) {
+ m = this._maxListeners;
+ } else {
+ m = EventEmitter.defaultMaxListeners;
+ }
+
+ if (m && m > 0 && this._events[type].length > m) {
+ this._events[type].warned = true;
+ console.error('(node) warning: possible EventEmitter memory ' +
+ 'leak detected. %d listeners added. ' +
+ 'Use emitter.setMaxListeners() to increase limit.',
+ this._events[type].length);
+ if (typeof console.trace === 'function') {
+ // not supported in IE 10
+ console.trace();
+ }
+ }
+ }
+
+ return this;
+ };
+
+ EventEmitter.prototype.on = EventEmitter.prototype.addListener;
+
+ EventEmitter.prototype.once = function (type, listener) {
+ if (!isFunction(listener))
+ throw TypeError('listener must be a function');
+
+ var fired = false;
+
+ function g() {
+ this.removeListener(type, g);
+
+ if (!fired) {
+ fired = true;
+ listener.apply(this, arguments);
+ }
+ }
+
+ g.listener = listener;
+ this.on(type, g);
+
+ return this;
+ };
+
+ // emits a 'removeListener' event iff the listener was removed
+ EventEmitter.prototype.removeListener = function (type, listener) {
+ var list, position, length, i;
+
+ if (!isFunction(listener))
+ throw TypeError('listener must be a function');
+
+ if (!this._events || !this._events[type])
+ return this;
+
+ list = this._events[type];
+ length = list.length;
+ position = -1;
+
+ if (list === listener ||
+ (isFunction(list.listener) && list.listener === listener)) {
+ delete this._events[type];
+ if (this._events.removeListener)
+ this.emit('removeListener', type, listener);
+
+ } else if (isObject(list)) {
+ for (i = length; i-- > 0;) {
+ if (list[i] === listener ||
+ (list[i].listener && list[i].listener === listener)) {
+ position = i;
+ break;
+ }
+ }
+
+ if (position < 0)
+ return this;
+
+ if (list.length === 1) {
+ list.length = 0;
+ delete this._events[type];
+ } else {
+ list.splice(position, 1);
+ }
+
+ if (this._events.removeListener)
+ this.emit('removeListener', type, listener);
+ }
+
+ return this;
+ };
+
+ EventEmitter.prototype.removeAllListeners = function (type) {
+ var key, listeners;
+
+ if (!this._events)
+ return this;
+
+ // not listening for removeListener, no need to emit
+ if (!this._events.removeListener) {
+ if (arguments.length === 0)
+ this._events = {};
+ else if (this._events[type])
+ delete this._events[type];
+ return this;
+ }
+
+ // emit removeListener for all listeners on all events
+ if (arguments.length === 0) {
+ for (key in this._events) {
+ if (key === 'removeListener') continue;
+ this.removeAllListeners(key);
+ }
+ this.removeAllListeners('removeListener');
+ this._events = {};
+ return this;
+ }
+
+ listeners = this._events[type];
+
+ if (isFunction(listeners)) {
+ this.removeListener(type, listeners);
+ } else if (listeners) {
+ // LIFO order
+ while (listeners.length)
+ this.removeListener(type, listeners[listeners.length - 1]);
+ }
+ delete this._events[type];
+
+ return this;
+ };
+
+ EventEmitter.prototype.listeners = function (type) {
+ var ret;
+ if (!this._events || !this._events[type])
+ ret = [];
+ else if (isFunction(this._events[type]))
+ ret = [this._events[type]];
+ else
+ ret = this._events[type].slice();
+ return ret;
+ };
+
+ EventEmitter.prototype.listenerCount = function (type) {
+ if (this._events) {
+ var evlistener = this._events[type];
+
+ if (isFunction(evlistener))
+ return 1;
+ else if (evlistener)
+ return evlistener.length;
+ }
+ return 0;
+ };
+
+ EventEmitter.listenerCount = function (emitter, type) {
+ return emitter.listenerCount(type);
+ };
+
+ function isFunction(arg) {
+ return typeof arg === 'function';
+ }
+
+ function isNumber(arg) {
+ return typeof arg === 'number';
+ }
+
+ function isObject(arg) {
+ return typeof arg === 'object' && arg !== null;
+ }
+
+ function isUndefined(arg) {
+ return arg === void 0;
+ }
+
+ }, {}],
+ 3: [function (_dereq_, module, exports) {
+ // shim for using process in browser
+ var process = module.exports = {};
+
+ // cached from whatever global is present so that test runners that stub it
+ // don't break things. But we need to wrap it in a try catch in case it is
+ // wrapped in strict mode code which doesn't define any globals. It's inside a
+ // function because try/catches deoptimize in certain engines.
+
+ var cachedSetTimeout;
+ var cachedClearTimeout;
+
+ function defaultSetTimout() {
+ throw new Error('setTimeout has not been defined');
+ }
+
+ function defaultClearTimeout() {
+ throw new Error('clearTimeout has not been defined');
+ }
+ (function () {
+ try {
+ if (typeof setTimeout === 'function') {
+ cachedSetTimeout = setTimeout;
+ } else {
+ cachedSetTimeout = defaultSetTimout;
+ }
+ } catch (e) {
+ cachedSetTimeout = defaultSetTimout;
+ }
+ try {
+ if (typeof clearTimeout === 'function') {
+ cachedClearTimeout = clearTimeout;
+ } else {
+ cachedClearTimeout = defaultClearTimeout;
+ }
+ } catch (e) {
+ cachedClearTimeout = defaultClearTimeout;
+ }
+ }())
+
+ function runTimeout(fun) {
+ if (cachedSetTimeout === setTimeout) {
+ //normal enviroments in sane situations
+ return setTimeout(fun, 0);
+ }
+ // if setTimeout wasn't available but was latter defined
+ if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
+ cachedSetTimeout = setTimeout;
+ return setTimeout(fun, 0);
+ }
+ try {
+ // when when somebody has screwed with setTimeout but no I.E. maddness
+ return cachedSetTimeout(fun, 0);
+ } catch (e) {
+ try {
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+ return cachedSetTimeout.call(null, fun, 0);
+ } catch (e) {
+ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
+ return cachedSetTimeout.call(this, fun, 0);
+ }
+ }
+
+
+ }
+
+ function runClearTimeout(marker) {
+ if (cachedClearTimeout === clearTimeout) {
+ //normal enviroments in sane situations
+ return clearTimeout(marker);
+ }
+ // if clearTimeout wasn't available but was latter defined
+ if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
+ cachedClearTimeout = clearTimeout;
+ return clearTimeout(marker);
+ }
+ try {
+ // when when somebody has screwed with setTimeout but no I.E. maddness
+ return cachedClearTimeout(marker);
+ } catch (e) {
+ try {
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+ return cachedClearTimeout.call(null, marker);
+ } catch (e) {
+ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
+ // Some versions of I.E. have different rules for clearTimeout vs setTimeout
+ return cachedClearTimeout.call(this, marker);
+ }
+ }
+
+
+
+ }
+ var queue = [];
+ var draining = false;
+ var currentQueue;
+ var queueIndex = -1;
+
+ function cleanUpNextTick() {
+ if (!draining || !currentQueue) {
+ return;
+ }
+ draining = false;
+ if (currentQueue.length) {
+ queue = currentQueue.concat(queue);
+ } else {
+ queueIndex = -1;
+ }
+ if (queue.length) {
+ drainQueue();
+ }
+ }
+
+ function drainQueue() {
+ if (draining) {
+ return;
+ }
+ var timeout = runTimeout(cleanUpNextTick);
+ draining = true;
+
+ var len = queue.length;
+ while (len) {
+ currentQueue = queue;
+ queue = [];
+ while (++queueIndex < len) {
+ if (currentQueue) {
+ currentQueue[queueIndex].run();
+ }
+ }
+ queueIndex = -1;
+ len = queue.length;
+ }
+ currentQueue = null;
+ draining = false;
+ runClearTimeout(timeout);
+ }
+
+ process.nextTick = function (fun) {
+ var args = new Array(arguments.length - 1);
+ if (arguments.length > 1) {
+ for (var i = 1; i < arguments.length; i++) {
+ args[i - 1] = arguments[i];
+ }
+ }
+ queue.push(new Item(fun, args));
+ if (queue.length === 1 && !draining) {
+ runTimeout(drainQueue);
+ }
+ };
+
+ // v8 likes predictible objects
+ function Item(fun, array) {
+ this.fun = fun;
+ this.array = array;
+ }
+ Item.prototype.run = function () {
+ this.fun.apply(null, this.array);
+ };
+ process.title = 'browser';
+ process.browser = true;
+ process.env = {};
+ process.argv = [];
+ process.version = ''; // empty string to avoid regexp issues
+ process.versions = {};
+
+ function noop() {}
+
+ process.on = noop;
+ process.addListener = noop;
+ process.once = noop;
+ process.off = noop;
+ process.removeListener = noop;
+ process.removeAllListeners = noop;
+ process.emit = noop;
+ process.prependListener = noop;
+ process.prependOnceListener = noop;
+
+ process.listeners = function (name) {
+ return []
+ }
+
+ process.binding = function (name) {
+ throw new Error('process.binding is not supported');
+ };
+
+ process.cwd = function () {
+ return '/'
+ };
+ process.chdir = function (dir) {
+ throw new Error('process.chdir is not supported');
+ };
+ process.umask = function () {
+ return 0;
+ };
+
+ }, {}],
+ 4: [function (_dereq_, module, exports) {
+ var bundleFn = arguments[3];
+ var sources = arguments[4];
+ var cache = arguments[5];
+
+ var stringify = JSON.stringify;
+
+ module.exports = function (fn, options) {
+ var wkey;
+ var cacheKeys = Object.keys(cache);
+
+ for (var i = 0, l = cacheKeys.length; i < l; i++) {
+ var key = cacheKeys[i];
+ var exp = cache[key].exports;
+ // Using babel as a transpiler to use esmodule, the export will always
+ // be an object with the default export as a property of it. To ensure
+ // the existing api and babel esmodule exports are both supported we
+ // check for both
+ if (exp === fn || exp && exp.default === fn) {
+ wkey = key;
+ break;
+ }
+ }
+
+ if (!wkey) {
+ wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);
+ var wcache = {};
+ for (var i = 0, l = cacheKeys.length; i < l; i++) {
+ var key = cacheKeys[i];
+ wcache[key] = key;
+ }
+ sources[wkey] = [
+ 'function(require,module,exports){' + fn + '(self); }',
+ wcache
+ ];
+ }
+ var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);
+
+ var scache = {};
+ scache[wkey] = wkey;
+ sources[skey] = [
+ 'function(require,module,exports){' +
+ // try to call default if defined to also support babel esmodule exports
+ 'var f = require(' + stringify(wkey) + ');' +
+ '(f.default ? f.default : f)(self);' +
+ '}',
+ scache
+ ];
+
+ var workerSources = {};
+ resolveSources(skey);
+
+ function resolveSources(key) {
+ workerSources[key] = true;
+
+ for (var depPath in sources[key][1]) {
+ var depKey = sources[key][1][depPath];
+ if (!workerSources[depKey]) {
+ resolveSources(depKey);
+ }
+ }
+ }
+
+ var src = '(' + bundleFn + ')({' +
+ Object.keys(workerSources).map(function (key) {
+ return stringify(key) + ':[' +
+ sources[key][0] +
+ ',' + stringify(sources[key][1]) + ']';
+ }).join(',') +
+ '},{},[' + stringify(skey) + '])';
+
+ var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;
+
+ var blob = new Blob([src], {
+ type: 'text/javascript'
+ });
+ if (options && options.bare) {
+ return blob;
+ }
+ var workerUrl = URL.createObjectURL(blob);
+ var worker = new Worker(workerUrl);
+ worker.objectURL = workerUrl;
+ return worker;
+ };
+
+ }, {}],
+ 5: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.createDefaultConfig = createDefaultConfig;
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var defaultConfig = exports.defaultConfig = {
+ enableWorker: false,
+ enableStashBuffer: false,
+ stashInitialSize: undefined,
+
+ isLive: false,
+
+ lazyLoad: false,
+ lazyLoadMaxDuration: 1 * 60,
+ lazyLoadRecoverDuration: 30,
+ deferLoadAfterSourceOpen: true,
+
+ // autoCleanupSourceBuffer: default as false, leave unspecified
+ autoCleanupMaxBackwardDuration: 1 * 60,
+ autoCleanupMinBackwardDuration: 1 * 60,
+
+ statisticsInfoReportInterval: 1000000000,
+
+ fixAudioTimestampGap: false,
+
+ accurateSeek: false,
+ seekType: 'range', // [range, param, custom]
+ seekParamStart: 'bstart',
+ seekParamEnd: 'bend',
+ rangeLoadZeroStart: false,
+ customSeekHandler: undefined,
+ reuseRedirectedURL: false,
+ // referrerPolicy: leave as unspecified
+
+ headers: undefined,
+ customLoader: undefined
+ };
+
+ function createDefaultConfig() {
+ return Object.assign({}, defaultConfig);
+ }
+
+ }, {}],
+ 6: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var _ioController = _dereq_('../io/io-controller.js');
+
+ var _ioController2 = _interopRequireDefault(_ioController);
+
+ var _config = _dereq_('../config.js');
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ var Features = function () {
+ function Features() {
+ _classCallCheck(this, Features);
+ }
+
+ _createClass(Features, null, [{
+ key: 'supportMSEH264Playback',
+ value: function supportMSEH264Playback() {
+ return window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"');
+ }
+ }, {
+ key: 'supportNetworkStreamIO',
+ value: function supportNetworkStreamIO() {
+ var ioctl = new _ioController2.default({}, (0, _config.createDefaultConfig)());
+ var loaderType = ioctl.loaderType;
+ ioctl.destroy();
+ return loaderType == 'fetch-stream-loader' || loaderType == 'xhr-moz-chunked-loader';
+ }
+ }, {
+ key: 'getNetworkLoaderTypeName',
+ value: function getNetworkLoaderTypeName() {
+ var ioctl = new _ioController2.default({}, (0, _config.createDefaultConfig)());
+ var loaderType = ioctl.loaderType;
+ ioctl.destroy();
+ return loaderType;
+ }
+ }, {
+ key: 'supportNativeMediaPlayback',
+ value: function supportNativeMediaPlayback(mimeType) {
+ if (Features.videoElement == undefined) {
+ Features.videoElement = window.document.createElement('video');
+ }
+ var canPlay = Features.videoElement.canPlayType(mimeType);
+ return canPlay === 'probably' || canPlay == 'maybe';
+ }
+ }, {
+ key: 'getFeatureList',
+ value: function getFeatureList() {
+ var features = {
+ mseFlvPlayback: false,
+ mseLiveFlvPlayback: false,
+ networkStreamIO: false,
+ networkLoaderName: '',
+ nativeMP4H264Playback: false,
+ nativeWebmVP8Playback: false,
+ nativeWebmVP9Playback: false
+ };
+
+ features.mseFlvPlayback = Features.supportMSEH264Playback();
+ features.networkStreamIO = Features.supportNetworkStreamIO();
+ features.networkLoaderName = Features.getNetworkLoaderTypeName();
+ features.mseLiveFlvPlayback = features.mseFlvPlayback && features.networkStreamIO;
+ features.nativeMP4H264Playback = Features.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"');
+ features.nativeWebmVP8Playback = Features.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"');
+ features.nativeWebmVP9Playback = Features.supportNativeMediaPlayback('video/webm; codecs="vp9"');
+
+ return features;
+ }
+ }]);
+
+ return Features;
+ }();
+
+ exports.default = Features;
+
+ }, {
+ "../config.js": 5,
+ "../io/io-controller.js": 23
+ }],
+ 7: [function (_dereq_, module, exports) {
+ "use strict";
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var MediaInfo = function () {
+ function MediaInfo() {
+ _classCallCheck(this, MediaInfo);
+
+ this.mimeType = null;
+ this.duration = null;
+
+ this.hasAudio = null;
+ this.hasVideo = null;
+ this.audioCodec = null;
+ this.videoCodec = null;
+ this.audioDataRate = null;
+ this.videoDataRate = null;
+
+ this.audioSampleRate = null;
+ this.audioChannelCount = null;
+
+ this.width = null;
+ this.height = null;
+ this.fps = null;
+ this.profile = null;
+ this.level = null;
+ this.refFrames = null;
+ this.chromaFormat = null;
+ this.sarNum = null;
+ this.sarDen = null;
+
+ this.metadata = null;
+ this.segments = null; // MediaInfo[]
+ this.segmentCount = null;
+ this.hasKeyframesIndex = null;
+ this.keyframesIndex = null;
+ }
+
+ _createClass(MediaInfo, [{
+ key: "isComplete",
+ value: function isComplete() {
+ var audioInfoComplete = this.hasAudio === false || this.hasAudio === true && this.audioCodec != null && this.audioSampleRate != null && this.audioChannelCount != null;
+
+ var videoInfoComplete = this.hasVideo === false || this.hasVideo === true && this.videoCodec != null && this.width != null && this.height != null && this.fps != null && this.profile != null && this.level != null && this.refFrames != null && this.chromaFormat != null && this.sarNum != null && this.sarDen != null;
+
+ // keyframesIndex may not be present
+ return this.mimeType != null && this.duration != null && this.metadata != null && this.hasKeyframesIndex != null && audioInfoComplete && videoInfoComplete;
+ }
+ }, {
+ key: "isSeekable",
+ value: function isSeekable() {
+ return this.hasKeyframesIndex === true;
+ }
+ }, {
+ key: "getNearestKeyframe",
+ value: function getNearestKeyframe(milliseconds) {
+ if (this.keyframesIndex == null) {
+ return null;
+ }
+
+ var table = this.keyframesIndex;
+ var keyframeIdx = this._search(table.times, milliseconds);
+
+ return {
+ index: keyframeIdx,
+ milliseconds: table.times[keyframeIdx],
+ fileposition: table.filepositions[keyframeIdx]
+ };
+ }
+ }, {
+ key: "_search",
+ value: function _search(list, value) {
+ var idx = 0;
+
+ var last = list.length - 1;
+ var mid = 0;
+ var lbound = 0;
+ var ubound = last;
+
+ if (value < list[0]) {
+ idx = 0;
+ lbound = ubound + 1; // skip search
+ }
+
+ while (lbound <= ubound) {
+ mid = lbound + Math.floor((ubound - lbound) / 2);
+ if (mid === last || value >= list[mid] && value < list[mid + 1]) {
+ idx = mid;
+ break;
+ } else if (list[mid] < value) {
+ lbound = mid + 1;
+ } else {
+ ubound = mid - 1;
+ }
+ }
+
+ return idx;
+ }
+ }]);
+
+ return MediaInfo;
+ }();
+
+ exports.default = MediaInfo;
+
+ }, {}],
+ 8: [function (_dereq_, module, exports) {
+ "use strict";
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ // Represents an media sample (audio / video)
+ var SampleInfo = exports.SampleInfo = function SampleInfo(dts, pts, duration, originalDts, isSync) {
+ _classCallCheck(this, SampleInfo);
+
+ this.dts = dts;
+ this.pts = pts;
+ this.duration = duration;
+ this.originalDts = originalDts;
+ this.isSyncPoint = isSync;
+ this.fileposition = null;
+ };
+
+ // Media Segment concept is defined in Media Source Extensions spec.
+ // Particularly in ISO BMFF format, an Media Segment contains a moof box followed by a mdat box.
+
+
+ var MediaSegmentInfo = exports.MediaSegmentInfo = function () {
+ function MediaSegmentInfo() {
+ _classCallCheck(this, MediaSegmentInfo);
+
+ this.beginDts = 0;
+ this.endDts = 0;
+ this.beginPts = 0;
+ this.endPts = 0;
+ this.originalBeginDts = 0;
+ this.originalEndDts = 0;
+ this.syncPoints = []; // SampleInfo[n], for video IDR frames only
+ this.firstSample = null; // SampleInfo
+ this.lastSample = null; // SampleInfo
+ }
+
+ _createClass(MediaSegmentInfo, [{
+ key: "appendSyncPoint",
+ value: function appendSyncPoint(sampleInfo) {
+ // also called Random Access Point
+ sampleInfo.isSyncPoint = true;
+ this.syncPoints.push(sampleInfo);
+ }
+ }]);
+
+ return MediaSegmentInfo;
+ }();
+
+ // Ordered list for recording video IDR frames, sorted by originalDts
+
+
+ var IDRSampleList = exports.IDRSampleList = function () {
+ function IDRSampleList() {
+ _classCallCheck(this, IDRSampleList);
+
+ this._list = [];
+ }
+
+ _createClass(IDRSampleList, [{
+ key: "clear",
+ value: function clear() {
+ this._list = [];
+ }
+ }, {
+ key: "appendArray",
+ value: function appendArray(syncPoints) {
+ var list = this._list;
+
+ if (syncPoints.length === 0) {
+ return;
+ }
+
+ if (list.length > 0 && syncPoints[0].originalDts < list[list.length - 1].originalDts) {
+ this.clear();
+ }
+
+ Array.prototype.push.apply(list, syncPoints);
+ }
+ }, {
+ key: "getLastSyncPointBeforeDts",
+ value: function getLastSyncPointBeforeDts(dts) {
+ if (this._list.length == 0) {
+ return null;
+ }
+
+ var list = this._list;
+ var idx = 0;
+ var last = list.length - 1;
+ var mid = 0;
+ var lbound = 0;
+ var ubound = last;
+
+ if (dts < list[0].dts) {
+ idx = 0;
+ lbound = ubound + 1;
+ }
+
+ while (lbound <= ubound) {
+ mid = lbound + Math.floor((ubound - lbound) / 2);
+ if (mid === last || dts >= list[mid].dts && dts < list[mid + 1].dts) {
+ idx = mid;
+ break;
+ } else if (list[mid].dts < dts) {
+ lbound = mid + 1;
+ } else {
+ ubound = mid - 1;
+ }
+ }
+ return this._list[idx];
+ }
+ }]);
+
+ return IDRSampleList;
+ }();
+
+ // Data structure for recording information of media segments in single track.
+
+
+ var MediaSegmentInfoList = exports.MediaSegmentInfoList = function () {
+ function MediaSegmentInfoList(type) {
+ _classCallCheck(this, MediaSegmentInfoList);
+
+ this._type = type;
+ this._list = [];
+ this._lastAppendLocation = -1; // cached last insert location
+ }
+
+ _createClass(MediaSegmentInfoList, [{
+ key: "isEmpty",
+ value: function isEmpty() {
+ return this._list.length === 0;
+ }
+ }, {
+ key: "clear",
+ value: function clear() {
+ this._list = [];
+ this._lastAppendLocation = -1;
+ }
+ }, {
+ key: "_searchNearestSegmentBefore",
+ value: function _searchNearestSegmentBefore(originalBeginDts) {
+ var list = this._list;
+ if (list.length === 0) {
+ return -2;
+ }
+ var last = list.length - 1;
+ var mid = 0;
+ var lbound = 0;
+ var ubound = last;
+
+ var idx = 0;
+
+ if (originalBeginDts < list[0].originalBeginDts) {
+ idx = -1;
+ return idx;
+ }
+
+ while (lbound <= ubound) {
+ mid = lbound + Math.floor((ubound - lbound) / 2);
+ if (mid === last || originalBeginDts > list[mid].lastSample.originalDts && originalBeginDts < list[mid + 1].originalBeginDts) {
+ idx = mid;
+ break;
+ } else if (list[mid].originalBeginDts < originalBeginDts) {
+ lbound = mid + 1;
+ } else {
+ ubound = mid - 1;
+ }
+ }
+ return idx;
+ }
+ }, {
+ key: "_searchNearestSegmentAfter",
+ value: function _searchNearestSegmentAfter(originalBeginDts) {
+ return this._searchNearestSegmentBefore(originalBeginDts) + 1;
+ }
+ }, {
+ key: "append",
+ value: function append(mediaSegmentInfo) {
+ var list = this._list;
+ var msi = mediaSegmentInfo;
+ var lastAppendIdx = this._lastAppendLocation;
+ var insertIdx = 0;
+
+ if (lastAppendIdx !== -1 && lastAppendIdx < list.length && msi.originalBeginDts >= list[lastAppendIdx].lastSample.originalDts && (lastAppendIdx === list.length - 1 || lastAppendIdx < list.length - 1 && msi.originalBeginDts < list[lastAppendIdx + 1].originalBeginDts)) {
+ insertIdx = lastAppendIdx + 1; // use cached location idx
+ } else {
+ if (list.length > 0) {
+ insertIdx = this._searchNearestSegmentBefore(msi.originalBeginDts) + 1;
+ }
+ }
+
+ this._lastAppendLocation = insertIdx;
+ this._list.splice(insertIdx, 0, msi);
+ }
+ }, {
+ key: "getLastSegmentBefore",
+ value: function getLastSegmentBefore(originalBeginDts) {
+ var idx = this._searchNearestSegmentBefore(originalBeginDts);
+ if (idx >= 0) {
+ return this._list[idx];
+ } else {
+ // -1
+ return null;
+ }
+ }
+ }, {
+ key: "getLastSampleBefore",
+ value: function getLastSampleBefore(originalBeginDts) {
+ var segment = this.getLastSegmentBefore(originalBeginDts);
+ if (segment != null) {
+ return segment.lastSample;
+ } else {
+ return null;
+ }
+ }
+ }, {
+ key: "getLastSyncPointBefore",
+ value: function getLastSyncPointBefore(originalBeginDts) {
+ var segmentIdx = this._searchNearestSegmentBefore(originalBeginDts);
+ var syncPoints = this._list[segmentIdx].syncPoints;
+ while (syncPoints.length === 0 && segmentIdx > 0) {
+ segmentIdx--;
+ syncPoints = this._list[segmentIdx].syncPoints;
+ }
+ if (syncPoints.length > 0) {
+ return syncPoints[syncPoints.length - 1];
+ } else {
+ return null;
+ }
+ }
+ }, {
+ key: "type",
+ get: function get() {
+ return this._type;
+ }
+ }, {
+ key: "length",
+ get: function get() {
+ return this._list.length;
+ }
+ }]);
+
+ return MediaSegmentInfoList;
+ }();
+
+ }, {}],
+ 9: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var _events = _dereq_('events');
+
+ var _events2 = _interopRequireDefault(_events);
+
+ var _logger = _dereq_('../utils/logger.js');
+
+ var _logger2 = _interopRequireDefault(_logger);
+
+ var _browser = _dereq_('../utils/browser.js');
+
+ var _browser2 = _interopRequireDefault(_browser);
+
+ var _mseEvents = _dereq_('./mse-events.js');
+
+ var _mseEvents2 = _interopRequireDefault(_mseEvents);
+
+ var _mediaSegmentInfo = _dereq_('./media-segment-info.js');
+
+ var _exception = _dereq_('../utils/exception.js');
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ // Media Source Extensions controller
+ var MSEController = function () {
+ function MSEController(config) {
+ _classCallCheck(this, MSEController);
+
+ this.TAG = 'MSEController';
+
+ this._config = config;
+ this._emitter = new _events2.default();
+
+ if (this._config.isLive && this._config.autoCleanupSourceBuffer == undefined) {
+ // For live stream, do auto cleanup by default
+ this._config.autoCleanupSourceBuffer = true;
+ }
+
+ this.e = {
+ onSourceOpen: this._onSourceOpen.bind(this),
+ onSourceEnded: this._onSourceEnded.bind(this),
+ onSourceClose: this._onSourceClose.bind(this),
+ onSourceBufferError: this._onSourceBufferError.bind(this),
+ onSourceBufferUpdateEnd: this._onSourceBufferUpdateEnd.bind(this)
+ };
+
+ this._mediaSource = null;
+ this._mediaSourceObjectURL = null;
+ this._mediaElement = null;
+
+ this._isBufferFull = false;
+ this._hasPendingEos = false;
+
+ this._requireSetMediaDuration = false;
+ this._pendingMediaDuration = 0;
+
+ this._pendingSourceBufferInit = [];
+ this._mimeTypes = {
+ video: null,
+ audio: null
+ };
+ this._sourceBuffers = {
+ video: null,
+ audio: null
+ };
+ this._lastInitSegments = {
+ video: null,
+ audio: null
+ };
+ this._pendingSegments = {
+ video: [],
+ audio: []
+ };
+ this._pendingRemoveRanges = {
+ video: [],
+ audio: []
+ };
+ this._idrList = new _mediaSegmentInfo.IDRSampleList();
+ }
+
+ _createClass(MSEController, [{
+ key: 'destroy',
+ value: function destroy() {
+ if (this._mediaElement || this._mediaSource) {
+ this.detachMediaElement();
+ }
+ this.e = null;
+ this._emitter.removeAllListeners();
+ this._emitter = null;
+ }
+ }, {
+ key: 'on',
+ value: function on(event, listener) {
+ this._emitter.addListener(event, listener);
+ }
+ }, {
+ key: 'off',
+ value: function off(event, listener) {
+ this._emitter.removeListener(event, listener);
+ }
+ }, {
+ key: 'attachMediaElement',
+ value: function attachMediaElement(mediaElement) {
+ if (this._mediaSource) {
+ throw new _exception.IllegalStateException('MediaSource has been attached to an HTMLMediaElement!');
+ }
+ var ms = this._mediaSource = new window.MediaSource();
+ ms.addEventListener('sourceopen', this.e.onSourceOpen);
+ ms.addEventListener('sourceended', this.e.onSourceEnded);
+ ms.addEventListener('sourceclose', this.e.onSourceClose);
+
+ this._mediaElement = mediaElement;
+ this._mediaSourceObjectURL = window.URL.createObjectURL(this._mediaSource);
+ mediaElement.src = this._mediaSourceObjectURL;
+ }
+ }, {
+ key: 'detachMediaElement',
+ value: function detachMediaElement() {
+ if (this._mediaSource) {
+ var ms = this._mediaSource;
+ for (var type in this._sourceBuffers) {
+ // pending segments should be discard
+ var ps = this._pendingSegments[type];
+ ps.splice(0, ps.length);
+ this._pendingSegments[type] = null;
+ this._pendingRemoveRanges[type] = null;
+ this._lastInitSegments[type] = null;
+
+ // remove all sourcebuffers
+ var sb = this._sourceBuffers[type];
+ if (sb) {
+ if (ms.readyState !== 'closed') {
+ // ms edge can throw an error: Unexpected call to method or property access
+ try {
+ ms.removeSourceBuffer(sb);
+ } catch (error) {
+ _logger2.default.e(this.TAG, error.message);
+ }
+ sb.removeEventListener('error', this.e.onSourceBufferError);
+ sb.removeEventListener('updateend', this.e.onSourceBufferUpdateEnd);
+ }
+ this._mimeTypes[type] = null;
+ this._sourceBuffers[type] = null;
+ }
+ }
+ if (ms.readyState === 'open') {
+ try {
+ ms.endOfStream();
+ } catch (error) {
+ _logger2.default.e(this.TAG, error.message);
+ }
+ }
+ ms.removeEventListener('sourceopen', this.e.onSourceOpen);
+ ms.removeEventListener('sourceended', this.e.onSourceEnded);
+ ms.removeEventListener('sourceclose', this.e.onSourceClose);
+ this._pendingSourceBufferInit = [];
+ this._isBufferFull = false;
+ this._idrList.clear();
+ this._mediaSource = null;
+ }
+
+ if (this._mediaElement) {
+ this._mediaElement.src = '';
+ this._mediaElement.removeAttribute('src');
+ this._mediaElement = null;
+ }
+ if (this._mediaSourceObjectURL) {
+ window.URL.revokeObjectURL(this._mediaSourceObjectURL);
+ this._mediaSourceObjectURL = null;
+ }
+ }
+ }, {
+ key: 'appendInitSegment',
+ value: function appendInitSegment(initSegment, deferred) {
+ if (!this._mediaSource || this._mediaSource.readyState !== 'open') {
+ // sourcebuffer creation requires mediaSource.readyState === 'open'
+ // so we defer the sourcebuffer creation, until sourceopen event triggered
+ this._pendingSourceBufferInit.push(initSegment);
+ // make sure that this InitSegment is in the front of pending segments queue
+ this._pendingSegments[initSegment.type].push(initSegment);
+ return;
+ }
+
+ var is = initSegment;
+ var mimeType = '' + is.container;
+ if (is.codec && is.codec.length > 0) {
+ mimeType += ';codecs=' + is.codec;
+ }
+
+ var firstInitSegment = false;
+
+ _logger2.default.v(this.TAG, 'Received Initialization Segment, mimeType: ' + mimeType);
+ this._lastInitSegments[is.type] = is;
+
+ if (mimeType !== this._mimeTypes[is.type]) {
+ if (!this._mimeTypes[is.type]) {
+ // empty, first chance create sourcebuffer
+ firstInitSegment = true;
+ try {
+ var sb = this._sourceBuffers[is.type] = this._mediaSource.addSourceBuffer(mimeType);
+ sb.addEventListener('error', this.e.onSourceBufferError);
+ sb.addEventListener('updateend', this.e.onSourceBufferUpdateEnd);
+ } catch (error) {
+ _logger2.default.e(this.TAG, error.message);
+ this._emitter.emit(_mseEvents2.default.ERROR, {
+ code: error.code,
+ msg: error.message
+ });
+ return;
+ }
+ } else {
+ _logger2.default.v(this.TAG, 'Notice: ' + is.type + ' mimeType changed, origin: ' + this._mimeTypes[is.type] + ', target: ' + mimeType);
+ }
+ this._mimeTypes[is.type] = mimeType;
+ }
+
+ if (!deferred) {
+ // deferred means this InitSegment has been pushed to pendingSegments queue
+ this._pendingSegments[is.type].push(is);
+ }
+ if (!firstInitSegment) {
+ // append immediately only if init segment in subsequence
+ if (this._sourceBuffers[is.type] && !this._sourceBuffers[is.type].updating) {
+ this._doAppendSegments();
+ }
+ }
+ if (_browser2.default.safari && is.container === 'audio/mpeg' && is.mediaDuration > 0) {
+ // 'audio/mpeg' track under Safari may cause MediaElement's duration to be NaN
+ // Manually correct MediaSource.duration to make progress bar seekable, and report right duration
+ this._requireSetMediaDuration = true;
+ this._pendingMediaDuration = is.mediaDuration / 1000; // in seconds
+ this._updateMediaSourceDuration();
+ }
+ }
+ }, {
+ key: 'appendMediaSegment',
+ value: function appendMediaSegment(mediaSegment) {
+ var ms = mediaSegment;
+ this._pendingSegments[ms.type].push(ms);
+
+ if (this._config.autoCleanupSourceBuffer && this._needCleanupSourceBuffer()) {
+ this._doCleanupSourceBuffer();
+ }
+
+ var sb = this._sourceBuffers[ms.type];
+ if (sb && !sb.updating && !this._hasPendingRemoveRanges()) {
+ this._doAppendSegments();
+ }
+ }
+ }, {
+ key: 'seek',
+ value: function seek(seconds) {
+ // remove all appended buffers
+ for (var type in this._sourceBuffers) {
+ if (!this._sourceBuffers[type]) {
+ continue;
+ }
+
+ // abort current buffer append algorithm
+ var sb = this._sourceBuffers[type];
+ if (this._mediaSource.readyState === 'open') {
+ try {
+ // If range removal algorithm is running, InvalidStateError will be throwed
+ // Ignore it.
+ sb.abort();
+ } catch (error) {
+ _logger2.default.e(this.TAG, error.message);
+ }
+ }
+
+ // IDRList should be clear
+ this._idrList.clear();
+
+ // pending segments should be discard
+ var ps = this._pendingSegments[type];
+ ps.splice(0, ps.length);
+
+ if (this._mediaSource.readyState === 'closed') {
+ // Parent MediaSource object has been detached from HTMLMediaElement
+ continue;
+ }
+
+ // record ranges to be remove from SourceBuffer
+ for (var i = 0; i < sb.buffered.length; i++) {
+ var start = sb.buffered.start(i);
+ var end = sb.buffered.end(i);
+ this._pendingRemoveRanges[type].push({
+ start: start,
+ end: end
+ });
+ }
+
+ // if sb is not updating, let's remove ranges now!
+ if (!sb.updating) {
+ this._doRemoveRanges();
+ }
+
+ // Safari 10 may get InvalidStateError in the later appendBuffer() after SourceBuffer.remove() call
+ // Internal parser's state may be invalid at this time. Re-append last InitSegment to workaround.
+ // Related issue: https://bugs.webkit.org/show_bug.cgi?id=159230
+ if (_browser2.default.safari) {
+ var lastInitSegment = this._lastInitSegments[type];
+ if (lastInitSegment) {
+ this._pendingSegments[type].push(lastInitSegment);
+ if (!sb.updating) {
+ this._doAppendSegments();
+ }
+ }
+ }
+ }
+ }
+ }, {
+ key: 'endOfStream',
+ value: function endOfStream() {
+ var ms = this._mediaSource;
+ var sb = this._sourceBuffers;
+ if (!ms || ms.readyState !== 'open') {
+ if (ms && ms.readyState === 'closed' && this._hasPendingSegments()) {
+ // If MediaSource hasn't turned into open state, and there're pending segments
+ // Mark pending endOfStream, defer call until all pending segments appended complete
+ this._hasPendingEos = true;
+ }
+ return;
+ }
+ if (sb.video && sb.video.updating || sb.audio && sb.audio.updating) {
+ // If any sourcebuffer is updating, defer endOfStream operation
+ // See _onSourceBufferUpdateEnd()
+ this._hasPendingEos = true;
+ } else {
+ this._hasPendingEos = false;
+ // Notify media data loading complete
+ // This is helpful for correcting total duration to match last media segment
+ // Otherwise MediaElement's ended event may not be triggered
+ ms.endOfStream();
+ }
+ }
+ }, {
+ key: 'getNearestKeyframe',
+ value: function getNearestKeyframe(dts) {
+ return this._idrList.getLastSyncPointBeforeDts(dts);
+ }
+ }, {
+ key: '_needCleanupSourceBuffer',
+ value: function _needCleanupSourceBuffer() {
+ if (!this._config.autoCleanupSourceBuffer) {
+ return false;
+ }
+
+ var currentTime = this._mediaElement.currentTime;
+
+ for (var type in this._sourceBuffers) {
+ var sb = this._sourceBuffers[type];
+ if (sb) {
+ var buffered = sb.buffered;
+ if (buffered.length >= 1) {
+ if (currentTime - buffered.start(0) >= this._config.autoCleanupMaxBackwardDuration) {
+ return true;
+ }
+ }
+ }
+ }
+
+ return false;
+ }
+ }, {
+ key: '_doCleanupSourceBuffer',
+ value: function _doCleanupSourceBuffer() {
+ var currentTime = this._mediaElement.currentTime;
+
+ for (var type in this._sourceBuffers) {
+ var sb = this._sourceBuffers[type];
+ if (sb) {
+ var buffered = sb.buffered;
+ var doRemove = false;
+
+ for (var i = 0; i < buffered.length; i++) {
+ var start = buffered.start(i);
+ var end = buffered.end(i);
+
+ if (start <= currentTime && currentTime < end + 3) {
+ // padding 3 seconds
+ if (currentTime - start >= this._config.autoCleanupMaxBackwardDuration) {
+ doRemove = true;
+ var removeEnd = currentTime - this._config.autoCleanupMinBackwardDuration;
+ this._pendingRemoveRanges[type].push({
+ start: start,
+ end: removeEnd
+ });
+ }
+ } else if (end < currentTime) {
+ doRemove = true;
+ this._pendingRemoveRanges[type].push({
+ start: start,
+ end: end
+ });
+ }
+ }
+
+ if (doRemove && !sb.updating) {
+ this._doRemoveRanges();
+ }
+ }
+ }
+ }
+ }, {
+ key: '_updateMediaSourceDuration',
+ value: function _updateMediaSourceDuration() {
+ var sb = this._sourceBuffers;
+ if (this._mediaElement.readyState === 0 || this._mediaSource.readyState !== 'open') {
+ return;
+ }
+ if (sb.video && sb.video.updating || sb.audio && sb.audio.updating) {
+ return;
+ }
+
+ var current = this._mediaSource.duration;
+ var target = this._pendingMediaDuration;
+
+ if (target > 0 && (isNaN(current) || target > current)) {
+ _logger2.default.v(this.TAG, 'Update MediaSource duration from ' + current + ' to ' + target);
+ this._mediaSource.duration = target;
+ }
+
+ this._requireSetMediaDuration = false;
+ this._pendingMediaDuration = 0;
+ }
+ }, {
+ key: '_doRemoveRanges',
+ value: function _doRemoveRanges() {
+ for (var type in this._pendingRemoveRanges) {
+ if (!this._sourceBuffers[type] || this._sourceBuffers[type].updating) {
+ continue;
+ }
+ var sb = this._sourceBuffers[type];
+ var ranges = this._pendingRemoveRanges[type];
+ while (ranges.length && !sb.updating) {
+ var range = ranges.shift();
+ sb.remove(range.start, range.end);
+ }
+ }
+ }
+ }, {
+ key: '_doAppendSegments',
+ value: function _doAppendSegments() {
+ var pendingSegments = this._pendingSegments;
+
+ for (var type in pendingSegments) {
+ if (!this._sourceBuffers[type] || this._sourceBuffers[type].updating) {
+ continue;
+ }
+
+ if (pendingSegments[type].length > 0) {
+ var segment = pendingSegments[type].shift();
+
+ if (segment.timestampOffset) {
+ // For MPEG audio stream in MSE, if unbuffered-seeking occurred
+ // We need explicitly set timestampOffset to the desired point in timeline for mpeg SourceBuffer.
+ var currentOffset = this._sourceBuffers[type].timestampOffset;
+ var targetOffset = segment.timestampOffset / 1000; // in seconds
+
+ var delta = Math.abs(currentOffset - targetOffset);
+ if (delta > 0.1) {
+ // If time delta > 100ms
+ _logger2.default.v(this.TAG, 'Update MPEG audio timestampOffset from ' + currentOffset + ' to ' + targetOffset);
+ this._sourceBuffers[type].timestampOffset = targetOffset;
+ }
+ delete segment.timestampOffset;
+ }
+
+ if (!segment.data || segment.data.byteLength === 0) {
+ // Ignore empty buffer
+ continue;
+ }
+
+ try {
+ this._sourceBuffers[type].appendBuffer(segment.data);
+ this._isBufferFull = false;
+ if (type === 'video' && segment.hasOwnProperty('info')) {
+ this._idrList.appendArray(segment.info.syncPoints);
+ }
+ } catch (error) {
+ this._pendingSegments[type].unshift(segment);
+ if (error.code === 22) {
+ // QuotaExceededError
+ /* Notice that FireFox may not throw QuotaExceededError if SourceBuffer is full
+ * Currently we can only do lazy-load to avoid SourceBuffer become scattered.
+ * SourceBuffer eviction policy may be changed in future version of FireFox.
+ *
+ * Related issues:
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=1279885
+ * https://bugzilla.mozilla.org/show_bug.cgi?id=1280023
+ */
+ // report buffer full, abort network IO
+ if (!this._isBufferFull) {
+ this._emitter.emit(_mseEvents2.default.BUFFER_FULL);
+ }
+ this._isBufferFull = true;
+ } else {
+ _logger2.default.e(this.TAG, error.message);
+ this._emitter.emit(_mseEvents2.default.ERROR, {
+ code: error.code,
+ msg: error.message
+ });
+ }
+ }
+ }
+ }
+ }
+ }, {
+ key: '_onSourceOpen',
+ value: function _onSourceOpen() {
+ _logger2.default.v(this.TAG, 'MediaSource onSourceOpen');
+ this._mediaSource.removeEventListener('sourceopen', this.e.onSourceOpen);
+ // deferred sourcebuffer creation / initialization
+ if (this._pendingSourceBufferInit.length > 0) {
+ var pendings = this._pendingSourceBufferInit;
+ while (pendings.length) {
+ var segment = pendings.shift();
+ this.appendInitSegment(segment, true);
+ }
+ }
+ // there may be some pending media segments, append them
+ if (this._hasPendingSegments()) {
+ this._doAppendSegments();
+ }
+ this._emitter.emit(_mseEvents2.default.SOURCE_OPEN);
+ }
+ }, {
+ key: '_onSourceEnded',
+ value: function _onSourceEnded() {
+ // fired on endOfStream
+ _logger2.default.v(this.TAG, 'MediaSource onSourceEnded');
+ }
+ }, {
+ key: '_onSourceClose',
+ value: function _onSourceClose() {
+ // fired on detaching from media element
+ _logger2.default.v(this.TAG, 'MediaSource onSourceClose');
+ if (this._mediaSource && this.e != null) {
+ this._mediaSource.removeEventListener('sourceopen', this.e.onSourceOpen);
+ this._mediaSource.removeEventListener('sourceended', this.e.onSourceEnded);
+ this._mediaSource.removeEventListener('sourceclose', this.e.onSourceClose);
+ }
+ }
+ }, {
+ key: '_hasPendingSegments',
+ value: function _hasPendingSegments() {
+ var ps = this._pendingSegments;
+ return ps.video.length > 0 || ps.audio.length > 0;
+ }
+ }, {
+ key: '_hasPendingRemoveRanges',
+ value: function _hasPendingRemoveRanges() {
+ var prr = this._pendingRemoveRanges;
+ return prr.video.length > 0 || prr.audio.length > 0;
+ }
+ }, {
+ key: '_onSourceBufferUpdateEnd',
+ value: function _onSourceBufferUpdateEnd() {
+ if (this._requireSetMediaDuration) {
+ this._updateMediaSourceDuration();
+ } else if (this._hasPendingRemoveRanges()) {
+ this._doRemoveRanges();
+ } else if (this._hasPendingSegments()) {
+ this._doAppendSegments();
+ } else if (this._hasPendingEos) {
+ this.endOfStream();
+ }
+ this._emitter.emit(_mseEvents2.default.UPDATE_END);
+ }
+ }, {
+ key: '_onSourceBufferError',
+ value: function _onSourceBufferError(e) {
+ _logger2.default.e(this.TAG, 'SourceBuffer Error: ' + e);
+ // this error might not always be fatal, just ignore it
+ }
+ }]);
+
+ return MSEController;
+ }();
+
+ exports.default = MSEController;
+
+ }, {
+ "../utils/browser.js": 39,
+ "../utils/exception.js": 40,
+ "../utils/logger.js": 41,
+ "./media-segment-info.js": 8,
+ "./mse-events.js": 10,
+ "events": 2
+ }],
+ 10: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var MSEEvents = {
+ ERROR: 'error',
+ SOURCE_OPEN: 'source_open',
+ UPDATE_END: 'update_end',
+ BUFFER_FULL: 'buffer_full'
+ };
+
+ exports.default = MSEEvents;
+
+ }, {}],
+ 11: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var _events = _dereq_('events');
+
+ var _events2 = _interopRequireDefault(_events);
+
+ var _logger = _dereq_('../utils/logger.js');
+
+ var _logger2 = _interopRequireDefault(_logger);
+
+ var _loggingControl = _dereq_('../utils/logging-control.js');
+
+ var _loggingControl2 = _interopRequireDefault(_loggingControl);
+
+ var _transmuxingController = _dereq_('./transmuxing-controller.js');
+
+ var _transmuxingController2 = _interopRequireDefault(_transmuxingController);
+
+ var _transmuxingEvents = _dereq_('./transmuxing-events.js');
+
+ var _transmuxingEvents2 = _interopRequireDefault(_transmuxingEvents);
+
+ var _transmuxingWorker = _dereq_('./transmuxing-worker.js');
+
+ var _transmuxingWorker2 = _interopRequireDefault(_transmuxingWorker);
+
+ var _mediaInfo = _dereq_('./media-info.js');
+
+ var _mediaInfo2 = _interopRequireDefault(_mediaInfo);
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ var Transmuxer = function () {
+ function Transmuxer(mediaDataSource, config) {
+ _classCallCheck(this, Transmuxer);
+
+ this.TAG = 'Transmuxer';
+ this._emitter = new _events2.default();
+
+ if (config.enableWorker && typeof Worker !== 'undefined') {
+ try {
+ var work = _dereq_('webworkify');
+ this._worker = work(_transmuxingWorker2.default);
+ this._workerDestroying = false;
+ this._worker.addEventListener('message', this._onWorkerMessage.bind(this));
+ this._worker.postMessage({
+ cmd: 'init',
+ param: [mediaDataSource, config]
+ });
+ this.e = {
+ onLoggingConfigChanged: this._onLoggingConfigChanged.bind(this)
+ };
+ _loggingControl2.default.registerListener(this.e.onLoggingConfigChanged);
+ this._worker.postMessage({
+ cmd: 'logging_config',
+ param: _loggingControl2.default.getConfig()
+ });
+ } catch (error) {
+ _logger2.default.e(this.TAG, 'Error while initialize transmuxing worker, fallback to inline transmuxing');
+ this._worker = null;
+ this._controller = new _transmuxingController2.default(mediaDataSource, config);
+ }
+ } else {
+ this._controller = new _transmuxingController2.default(mediaDataSource, config);
+ }
+
+ if (this._controller) {
+ var ctl = this._controller;
+ ctl.on(_transmuxingEvents2.default.IO_ERROR, this._onIOError.bind(this));
+ ctl.on(_transmuxingEvents2.default.DEMUX_ERROR, this._onDemuxError.bind(this));
+ ctl.on(_transmuxingEvents2.default.INIT_SEGMENT, this._onInitSegment.bind(this));
+ ctl.on(_transmuxingEvents2.default.MEDIA_SEGMENT, this._onMediaSegment.bind(this));
+ ctl.on(_transmuxingEvents2.default.LOADING_COMPLETE, this._onLoadingComplete.bind(this));
+ ctl.on(_transmuxingEvents2.default.RECOVERED_EARLY_EOF, this._onRecoveredEarlyEof.bind(this));
+ ctl.on(_transmuxingEvents2.default.MEDIA_INFO, this._onMediaInfo.bind(this));
+ ctl.on(_transmuxingEvents2.default.METADATA_ARRIVED, this._onMetaDataArrived.bind(this));
+ ctl.on(_transmuxingEvents2.default.SCRIPTDATA_ARRIVED, this._onScriptDataArrived.bind(this));
+ ctl.on(_transmuxingEvents2.default.STATISTICS_INFO, this._onStatisticsInfo.bind(this));
+ ctl.on(_transmuxingEvents2.default.RECOMMEND_SEEKPOINT, this._onRecommendSeekpoint.bind(this));
+ }
+ }
+
+ _createClass(Transmuxer, [{
+ key: 'destroy',
+ value: function destroy() {
+ if (this._worker) {
+ if (!this._workerDestroying) {
+ this._workerDestroying = true;
+ this._worker.postMessage({
+ cmd: 'destroy'
+ });
+ _loggingControl2.default.removeListener(this.e.onLoggingConfigChanged);
+ this.e = null;
+ }
+ } else {
+ this._controller.destroy();
+ this._controller = null;
+ }
+ this._emitter.removeAllListeners();
+ this._emitter = null;
+ }
+ }, {
+ key: 'on',
+ value: function on(event, listener) {
+ this._emitter.addListener(event, listener);
+ }
+ }, {
+ key: 'off',
+ value: function off(event, listener) {
+ this._emitter.removeListener(event, listener);
+ }
+ }, {
+ key: 'hasWorker',
+ value: function hasWorker() {
+ return this._worker != null;
+ }
+ }, {
+ key: 'open',
+ value: function open() {
+ if (this._worker) {
+ this._worker.postMessage({
+ cmd: 'start'
+ });
+ } else {
+ this._controller.start();
+ }
+ }
+ }, {
+ key: 'close',
+ value: function close() {
+ if (this._worker) {
+ this._worker.postMessage({
+ cmd: 'stop'
+ });
+ } else {
+ this._controller.stop();
+ }
+ }
+ }, {
+ key: 'seek',
+ value: function seek(milliseconds) {
+ if (this._worker) {
+ this._worker.postMessage({
+ cmd: 'seek',
+ param: milliseconds
+ });
+ } else {
+ this._controller.seek(milliseconds);
+ }
+ }
+ }, {
+ key: 'pause',
+ value: function pause() {
+ if (this._worker) {
+ this._worker.postMessage({
+ cmd: 'pause'
+ });
+ } else {
+ this._controller.pause();
+ }
+ }
+ }, {
+ key: 'resume',
+ value: function resume() {
+ if (this._worker) {
+ this._worker.postMessage({
+ cmd: 'resume'
+ });
+ } else {
+ this._controller.resume();
+ }
+ }
+ }, {
+ key: '_onInitSegment',
+ value: function _onInitSegment(type, initSegment) {
+ var _this = this;
+
+ // do async invoke
+ Promise.resolve().then(function () {
+ _this._emitter.emit(_transmuxingEvents2.default.INIT_SEGMENT, type, initSegment);
+ });
+ }
+ }, {
+ key: '_onMediaSegment',
+ value: function _onMediaSegment(type, mediaSegment) {
+ var _this2 = this;
+
+ Promise.resolve().then(function () {
+ _this2._emitter.emit(_transmuxingEvents2.default.MEDIA_SEGMENT, type, mediaSegment);
+ });
+ }
+ }, {
+ key: '_onLoadingComplete',
+ value: function _onLoadingComplete() {
+ var _this3 = this;
+
+ Promise.resolve().then(function () {
+ _this3._emitter.emit(_transmuxingEvents2.default.LOADING_COMPLETE);
+ });
+ }
+ }, {
+ key: '_onRecoveredEarlyEof',
+ value: function _onRecoveredEarlyEof() {
+ var _this4 = this;
+
+ Promise.resolve().then(function () {
+ _this4._emitter.emit(_transmuxingEvents2.default.RECOVERED_EARLY_EOF);
+ });
+ }
+ }, {
+ key: '_onMediaInfo',
+ value: function _onMediaInfo(mediaInfo) {
+ var _this5 = this;
+
+ Promise.resolve().then(function () {
+ _this5._emitter.emit(_transmuxingEvents2.default.MEDIA_INFO, mediaInfo);
+ });
+ }
+ }, {
+ key: '_onMetaDataArrived',
+ value: function _onMetaDataArrived(metadata) {
+ var _this6 = this;
+
+ Promise.resolve().then(function () {
+ _this6._emitter.emit(_transmuxingEvents2.default.METADATA_ARRIVED, metadata);
+ });
+ }
+ }, {
+ key: '_onScriptDataArrived',
+ value: function _onScriptDataArrived(data) {
+ var _this7 = this;
+
+ Promise.resolve().then(function () {
+ _this7._emitter.emit(_transmuxingEvents2.default.SCRIPTDATA_ARRIVED, data);
+ });
+ }
+ }, {
+ key: '_onStatisticsInfo',
+ value: function _onStatisticsInfo(statisticsInfo) {
+ var _this8 = this;
+
+ Promise.resolve().then(function () {
+ _this8._emitter.emit(_transmuxingEvents2.default.STATISTICS_INFO, statisticsInfo);
+ });
+ }
+ }, {
+ key: '_onIOError',
+ value: function _onIOError(type, info) {
+ var _this9 = this;
+
+ Promise.resolve().then(function () {
+ _this9._emitter.emit(_transmuxingEvents2.default.IO_ERROR, type, info);
+ });
+ }
+ }, {
+ key: '_onDemuxError',
+ value: function _onDemuxError(type, info) {
+ var _this10 = this;
+
+ Promise.resolve().then(function () {
+ _this10._emitter.emit(_transmuxingEvents2.default.DEMUX_ERROR, type, info);
+ });
+ }
+ }, {
+ key: '_onRecommendSeekpoint',
+ value: function _onRecommendSeekpoint(milliseconds) {
+ var _this11 = this;
+
+ Promise.resolve().then(function () {
+ _this11._emitter.emit(_transmuxingEvents2.default.RECOMMEND_SEEKPOINT, milliseconds);
+ });
+ }
+ }, {
+ key: '_onLoggingConfigChanged',
+ value: function _onLoggingConfigChanged(config) {
+ if (this._worker) {
+ this._worker.postMessage({
+ cmd: 'logging_config',
+ param: config
+ });
+ }
+ }
+ }, {
+ key: '_onWorkerMessage',
+ value: function _onWorkerMessage(e) {
+ var message = e.data;
+ var data = message.data;
+
+ if (message.msg === 'destroyed' || this._workerDestroying) {
+ this._workerDestroying = false;
+ this._worker.terminate();
+ this._worker = null;
+ return;
+ }
+
+ switch (message.msg) {
+ case _transmuxingEvents2.default.INIT_SEGMENT:
+ case _transmuxingEvents2.default.MEDIA_SEGMENT:
+ this._emitter.emit(message.msg, data.type, data.data);
+ break;
+ case _transmuxingEvents2.default.LOADING_COMPLETE:
+ case _transmuxingEvents2.default.RECOVERED_EARLY_EOF:
+ this._emitter.emit(message.msg);
+ break;
+ case _transmuxingEvents2.default.MEDIA_INFO:
+ Object.setPrototypeOf(data, _mediaInfo2.default.prototype);
+ this._emitter.emit(message.msg, data);
+ break;
+ case _transmuxingEvents2.default.METADATA_ARRIVED:
+ case _transmuxingEvents2.default.SCRIPTDATA_ARRIVED:
+ case _transmuxingEvents2.default.STATISTICS_INFO:
+ this._emitter.emit(message.msg, data);
+ break;
+ case _transmuxingEvents2.default.IO_ERROR:
+ case _transmuxingEvents2.default.DEMUX_ERROR:
+ this._emitter.emit(message.msg, data.type, data.info);
+ break;
+ case _transmuxingEvents2.default.RECOMMEND_SEEKPOINT:
+ this._emitter.emit(message.msg, data);
+ break;
+ case 'logcat_callback':
+ _logger2.default.emitter.emit('log', data.type, data.logcat);
+ break;
+ default:
+ break;
+ }
+ }
+ }]);
+
+ return Transmuxer;
+ }();
+
+ exports.default = Transmuxer;
+
+ }, {
+ "../utils/logger.js": 41,
+ "../utils/logging-control.js": 42,
+ "./media-info.js": 7,
+ "./transmuxing-controller.js": 12,
+ "./transmuxing-events.js": 13,
+ "./transmuxing-worker.js": 14,
+ "events": 2,
+ "webworkify": 4
+ }],
+ 12: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var _events = _dereq_('events');
+
+ var _events2 = _interopRequireDefault(_events);
+
+ var _logger = _dereq_('../utils/logger.js');
+
+ var _logger2 = _interopRequireDefault(_logger);
+
+ var _browser = _dereq_('../utils/browser.js');
+
+ var _browser2 = _interopRequireDefault(_browser);
+
+ var _mediaInfo = _dereq_('./media-info.js');
+
+ var _mediaInfo2 = _interopRequireDefault(_mediaInfo);
+
+ var _flvDemuxer = _dereq_('../demux/flv-demuxer.js');
+
+ var _flvDemuxer2 = _interopRequireDefault(_flvDemuxer);
+
+ var _mp4Remuxer = _dereq_('../remux/mp4-remuxer.js');
+
+ var _mp4Remuxer2 = _interopRequireDefault(_mp4Remuxer);
+
+ var _demuxErrors = _dereq_('../demux/demux-errors.js');
+
+ var _demuxErrors2 = _interopRequireDefault(_demuxErrors);
+
+ var _ioController = _dereq_('../io/io-controller.js');
+
+ var _ioController2 = _interopRequireDefault(_ioController);
+
+ var _transmuxingEvents = _dereq_('./transmuxing-events.js');
+
+ var _transmuxingEvents2 = _interopRequireDefault(_transmuxingEvents);
+
+ var _loader = _dereq_('../io/loader.js');
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ // Transmuxing (IO, Demuxing, Remuxing) controller, with multipart support
+ var TransmuxingController = function () {
+ function TransmuxingController(mediaDataSource, config) {
+ _classCallCheck(this, TransmuxingController);
+
+ this.TAG = 'TransmuxingController';
+ this._emitter = new _events2.default();
+
+ this._config = config;
+
+ // treat single part media as multipart media, which has only one segment
+ if (!mediaDataSource.segments) {
+ mediaDataSource.segments = [{
+ duration: mediaDataSource.duration,
+ filesize: mediaDataSource.filesize,
+ url: mediaDataSource.url
+ }];
+ }
+
+ // fill in default IO params if not exists
+ if (typeof mediaDataSource.cors !== 'boolean') {
+ mediaDataSource.cors = true;
+ }
+ if (typeof mediaDataSource.withCredentials !== 'boolean') {
+ mediaDataSource.withCredentials = false;
+ }
+
+ this._mediaDataSource = mediaDataSource;
+ this._currentSegmentIndex = 0;
+ var totalDuration = 0;
+
+ this._mediaDataSource.segments.forEach(function (segment) {
+ // timestampBase for each segment, and calculate total duration
+ segment.timestampBase = totalDuration;
+ totalDuration += segment.duration;
+ // params needed by IOController
+ segment.cors = mediaDataSource.cors;
+ segment.withCredentials = mediaDataSource.withCredentials;
+ // referrer policy control, if exist
+ if (config.referrerPolicy) {
+ segment.referrerPolicy = config.referrerPolicy;
+ }
+ });
+
+ if (!isNaN(totalDuration) && this._mediaDataSource.duration !== totalDuration) {
+ this._mediaDataSource.duration = totalDuration;
+ }
+
+ this._mediaInfo = null;
+ this._demuxer = null;
+ this._remuxer = null;
+ this._ioctl = null;
+
+ this._pendingSeekTime = null;
+ this._pendingResolveSeekPoint = null;
+
+ this._statisticsReporter = null;
+ }
+
+ _createClass(TransmuxingController, [{
+ key: 'destroy',
+ value: function destroy() {
+ this._mediaInfo = null;
+ this._mediaDataSource = null;
+
+ if (this._statisticsReporter) {
+ this._disableStatisticsReporter();
+ }
+ if (this._ioctl) {
+ this._ioctl.destroy();
+ this._ioctl = null;
+ }
+ if (this._demuxer) {
+ this._demuxer.destroy();
+ this._demuxer = null;
+ }
+ if (this._remuxer) {
+ this._remuxer.destroy();
+ this._remuxer = null;
+ }
+
+ this._emitter.removeAllListeners();
+ this._emitter = null;
+ }
+ }, {
+ key: 'on',
+ value: function on(event, listener) {
+ this._emitter.addListener(event, listener);
+ }
+ }, {
+ key: 'off',
+ value: function off(event, listener) {
+ this._emitter.removeListener(event, listener);
+ }
+ }, {
+ key: 'start',
+ value: function start() {
+ this._loadSegment(0);
+ this._enableStatisticsReporter();
+ }
+ }, {
+ key: '_loadSegment',
+ value: function _loadSegment(segmentIndex, optionalFrom) {
+ this._currentSegmentIndex = segmentIndex;
+ var dataSource = this._mediaDataSource.segments[segmentIndex];
+
+ var ioctl = this._ioctl = new _ioController2.default(dataSource, this._config, segmentIndex);
+ ioctl.onError = this._onIOException.bind(this);
+ ioctl.onSeeked = this._onIOSeeked.bind(this);
+ ioctl.onComplete = this._onIOComplete.bind(this);
+ ioctl.onRedirect = this._onIORedirect.bind(this);
+ ioctl.onRecoveredEarlyEof = this._onIORecoveredEarlyEof.bind(this);
+
+ if (optionalFrom) {
+ this._demuxer.bindDataSource(this._ioctl);
+ } else {
+ ioctl.onDataArrival = this._onInitChunkArrival.bind(this);
+ }
+
+ ioctl.open(optionalFrom);
+ }
+ }, {
+ key: 'stop',
+ value: function stop() {
+ this._internalAbort();
+ this._disableStatisticsReporter();
+ }
+ }, {
+ key: '_internalAbort',
+ value: function _internalAbort() {
+ if (this._ioctl) {
+ this._ioctl.destroy();
+ this._ioctl = null;
+ }
+ }
+ }, {
+ key: 'pause',
+ value: function pause() {
+ // take a rest
+ if (this._ioctl && this._ioctl.isWorking()) {
+ this._ioctl.pause();
+ this._disableStatisticsReporter();
+ }
+ }
+ }, {
+ key: 'resume',
+ value: function resume() {
+ if (this._ioctl && this._ioctl.isPaused()) {
+ this._ioctl.resume();
+ this._enableStatisticsReporter();
+ }
+ }
+ }, {
+ key: 'seek',
+ value: function seek(milliseconds) {
+ if (this._mediaInfo == null || !this._mediaInfo.isSeekable()) {
+ return;
+ }
+
+ var targetSegmentIndex = this._searchSegmentIndexContains(milliseconds);
+
+ if (targetSegmentIndex === this._currentSegmentIndex) {
+ // intra-segment seeking
+ var segmentInfo = this._mediaInfo.segments[targetSegmentIndex];
+
+ if (segmentInfo == undefined) {
+ // current segment loading started, but mediainfo hasn't received yet
+ // wait for the metadata loaded, then seek to expected position
+ this._pendingSeekTime = milliseconds;
+ } else {
+ var keyframe = segmentInfo.getNearestKeyframe(milliseconds);
+ this._remuxer.seek(keyframe.milliseconds);
+ this._ioctl.seek(keyframe.fileposition);
+ // Will be resolved in _onRemuxerMediaSegmentArrival()
+ this._pendingResolveSeekPoint = keyframe.milliseconds;
+ }
+ } else {
+ // cross-segment seeking
+ var targetSegmentInfo = this._mediaInfo.segments[targetSegmentIndex];
+
+ if (targetSegmentInfo == undefined) {
+ // target segment hasn't been loaded. We need metadata then seek to expected time
+ this._pendingSeekTime = milliseconds;
+ this._internalAbort();
+ this._remuxer.seek();
+ this._remuxer.insertDiscontinuity();
+ this._loadSegment(targetSegmentIndex);
+ // Here we wait for the metadata loaded, then seek to expected position
+ } else {
+ // We have target segment's metadata, direct seek to target position
+ var _keyframe = targetSegmentInfo.getNearestKeyframe(milliseconds);
+ this._internalAbort();
+ this._remuxer.seek(milliseconds);
+ this._remuxer.insertDiscontinuity();
+ this._demuxer.resetMediaInfo();
+ this._demuxer.timestampBase = this._mediaDataSource.segments[targetSegmentIndex].timestampBase;
+ this._loadSegment(targetSegmentIndex, _keyframe.fileposition);
+ this._pendingResolveSeekPoint = _keyframe.milliseconds;
+ this._reportSegmentMediaInfo(targetSegmentIndex);
+ }
+ }
+
+ this._enableStatisticsReporter();
+ }
+ }, {
+ key: '_searchSegmentIndexContains',
+ value: function _searchSegmentIndexContains(milliseconds) {
+ var segments = this._mediaDataSource.segments;
+ var idx = segments.length - 1;
+
+ for (var i = 0; i < segments.length; i++) {
+ if (milliseconds < segments[i].timestampBase) {
+ idx = i - 1;
+ break;
+ }
+ }
+ return idx;
+ }
+ }, {
+ key: '_onInitChunkArrival',
+ value: function _onInitChunkArrival(data, byteStart) {
+ var _this = this;
+
+ var probeData = null;
+ var consumed = 0;
+
+ if (byteStart > 0) {
+ // IOController seeked immediately after opened, byteStart > 0 callback may received
+ this._demuxer.bindDataSource(this._ioctl);
+ this._demuxer.timestampBase = this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase;
+
+ consumed = this._demuxer.parseChunks(data, byteStart);
+ } else if ((probeData = _flvDemuxer2.default.probe(data)).match) {
+ // Always create new FLVDemuxer
+ this._demuxer = new _flvDemuxer2.default(probeData, this._config);
+
+ if (!this._remuxer) {
+ this._remuxer = new _mp4Remuxer2.default(this._config);
+ }
+
+ var mds = this._mediaDataSource;
+ if (mds.duration != undefined && !isNaN(mds.duration)) {
+ this._demuxer.overridedDuration = mds.duration;
+ }
+ if (typeof mds.hasAudio === 'boolean') {
+ this._demuxer.overridedHasAudio = mds.hasAudio;
+ }
+ if (typeof mds.hasVideo === 'boolean') {
+ this._demuxer.overridedHasVideo = mds.hasVideo;
+ }
+
+ this._demuxer.timestampBase = mds.segments[this._currentSegmentIndex].timestampBase;
+
+ this._demuxer.onError = this._onDemuxException.bind(this);
+ this._demuxer.onMediaInfo = this._onMediaInfo.bind(this);
+ this._demuxer.onMetaDataArrived = this._onMetaDataArrived.bind(this);
+ this._demuxer.onScriptDataArrived = this._onScriptDataArrived.bind(this);
+
+ this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl));
+
+ this._remuxer.onInitSegment = this._onRemuxerInitSegmentArrival.bind(this);
+ this._remuxer.onMediaSegment = this._onRemuxerMediaSegmentArrival.bind(this);
+
+ consumed = this._demuxer.parseChunks(data, byteStart);
+ } else {
+ probeData = null;
+ _logger2.default.e(this.TAG, 'Non-FLV, Unsupported media type!');
+ Promise.resolve().then(function () {
+ _this._internalAbort();
+ });
+ this._emitter.emit(_transmuxingEvents2.default.DEMUX_ERROR, _demuxErrors2.default.FORMAT_UNSUPPORTED, 'Non-FLV, Unsupported media type');
+
+ consumed = 0;
+ }
+
+ return consumed;
+ }
+ }, {
+ key: '_onMediaInfo',
+ value: function _onMediaInfo(mediaInfo) {
+ var _this2 = this;
+
+ if (this._mediaInfo == null) {
+ // Store first segment's mediainfo as global mediaInfo
+ this._mediaInfo = Object.assign({}, mediaInfo);
+ this._mediaInfo.keyframesIndex = null;
+ this._mediaInfo.segments = [];
+ this._mediaInfo.segmentCount = this._mediaDataSource.segments.length;
+ Object.setPrototypeOf(this._mediaInfo, _mediaInfo2.default.prototype);
+ }
+
+ var segmentInfo = Object.assign({}, mediaInfo);
+ Object.setPrototypeOf(segmentInfo, _mediaInfo2.default.prototype);
+ this._mediaInfo.segments[this._currentSegmentIndex] = segmentInfo;
+
+ // notify mediaInfo update
+ this._reportSegmentMediaInfo(this._currentSegmentIndex);
+
+ if (this._pendingSeekTime != null) {
+ Promise.resolve().then(function () {
+ var target = _this2._pendingSeekTime;
+ _this2._pendingSeekTime = null;
+ _this2.seek(target);
+ });
+ }
+ }
+ }, {
+ key: '_onMetaDataArrived',
+ value: function _onMetaDataArrived(metadata) {
+ this._emitter.emit(_transmuxingEvents2.default.METADATA_ARRIVED, metadata);
+ }
+ }, {
+ key: '_onScriptDataArrived',
+ value: function _onScriptDataArrived(data) {
+ this._emitter.emit(_transmuxingEvents2.default.SCRIPTDATA_ARRIVED, data);
+ }
+ }, {
+ key: '_onIOSeeked',
+ value: function _onIOSeeked() {
+ this._remuxer.insertDiscontinuity();
+ }
+ }, {
+ key: '_onIOComplete',
+ value: function _onIOComplete(extraData) {
+ var segmentIndex = extraData;
+ var nextSegmentIndex = segmentIndex + 1;
+
+ if (nextSegmentIndex < this._mediaDataSource.segments.length) {
+ this._internalAbort();
+ this._remuxer.flushStashedSamples();
+ this._loadSegment(nextSegmentIndex);
+ } else {
+ this._remuxer.flushStashedSamples();
+ this._emitter.emit(_transmuxingEvents2.default.LOADING_COMPLETE);
+ this._disableStatisticsReporter();
+ }
+ }
+ }, {
+ key: '_onIORedirect',
+ value: function _onIORedirect(redirectedURL) {
+ var segmentIndex = this._ioctl.extraData;
+ this._mediaDataSource.segments[segmentIndex].redirectedURL = redirectedURL;
+ }
+ }, {
+ key: '_onIORecoveredEarlyEof',
+ value: function _onIORecoveredEarlyEof() {
+ this._emitter.emit(_transmuxingEvents2.default.RECOVERED_EARLY_EOF);
+ }
+ }, {
+ key: '_onIOException',
+ value: function _onIOException(type, info) {
+ _logger2.default.e(this.TAG, 'IOException: type = ' + type + ', code = ' + info.code + ', msg = ' + info.msg);
+ this._emitter.emit(_transmuxingEvents2.default.IO_ERROR, type, info);
+ this._disableStatisticsReporter();
+ }
+ }, {
+ key: '_onDemuxException',
+ value: function _onDemuxException(type, info) {
+ _logger2.default.e(this.TAG, 'DemuxException: type = ' + type + ', info = ' + info);
+ this._emitter.emit(_transmuxingEvents2.default.DEMUX_ERROR, type, info);
+ }
+ }, {
+ key: '_onRemuxerInitSegmentArrival',
+ value: function _onRemuxerInitSegmentArrival(type, initSegment) {
+ this._emitter.emit(_transmuxingEvents2.default.INIT_SEGMENT, type, initSegment);
+ }
+ }, {
+ key: '_onRemuxerMediaSegmentArrival',
+ value: function _onRemuxerMediaSegmentArrival(type, mediaSegment) {
+ if (this._pendingSeekTime != null) {
+ // Media segments after new-segment cross-seeking should be dropped.
+ return;
+ }
+ this._emitter.emit(_transmuxingEvents2.default.MEDIA_SEGMENT, type, mediaSegment);
+
+ // Resolve pending seekPoint
+ if (this._pendingResolveSeekPoint != null && type === 'video') {
+ var syncPoints = mediaSegment.info.syncPoints;
+ var seekpoint = this._pendingResolveSeekPoint;
+ this._pendingResolveSeekPoint = null;
+
+ // Safari: Pass PTS for recommend_seekpoint
+ if (_browser2.default.safari && syncPoints.length > 0 && syncPoints[0].originalDts === seekpoint) {
+ seekpoint = syncPoints[0].pts;
+ }
+ // else: use original DTS (keyframe.milliseconds)
+
+ this._emitter.emit(_transmuxingEvents2.default.RECOMMEND_SEEKPOINT, seekpoint);
+ }
+ }
+ }, {
+ key: '_enableStatisticsReporter',
+ value: function _enableStatisticsReporter() {
+ if (this._statisticsReporter == null) {
+ this._statisticsReporter = self.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval);
+ }
+ }
+ }, {
+ key: '_disableStatisticsReporter',
+ value: function _disableStatisticsReporter() {
+ if (this._statisticsReporter) {
+ self.clearInterval(this._statisticsReporter);
+ this._statisticsReporter = null;
+ }
+ }
+ }, {
+ key: '_reportSegmentMediaInfo',
+ value: function _reportSegmentMediaInfo(segmentIndex) {
+ var segmentInfo = this._mediaInfo.segments[segmentIndex];
+ var exportInfo = Object.assign({}, segmentInfo);
+
+ exportInfo.duration = this._mediaInfo.duration;
+ exportInfo.segmentCount = this._mediaInfo.segmentCount;
+ delete exportInfo.segments;
+ delete exportInfo.keyframesIndex;
+
+ this._emitter.emit(_transmuxingEvents2.default.MEDIA_INFO, exportInfo);
+ }
+ }, {
+ key: '_reportStatisticsInfo',
+ value: function _reportStatisticsInfo() {
+ var info = {};
+
+ info.url = this._ioctl.currentURL;
+ info.hasRedirect = this._ioctl.hasRedirect;
+ if (info.hasRedirect) {
+ info.redirectedURL = this._ioctl.currentRedirectedURL;
+ }
+
+ info.speed = this._ioctl.currentSpeed;
+ info.loaderType = this._ioctl.loaderType;
+ info.currentSegmentIndex = this._currentSegmentIndex;
+ info.totalSegmentCount = this._mediaDataSource.segments.length;
+
+ this._emitter.emit(_transmuxingEvents2.default.STATISTICS_INFO, info);
+ }
+ }]);
+
+ return TransmuxingController;
+ }();
+
+ exports.default = TransmuxingController;
+
+ }, {
+ "../demux/demux-errors.js": 16,
+ "../demux/flv-demuxer.js": 18,
+ "../io/io-controller.js": 23,
+ "../io/loader.js": 24,
+ "../remux/mp4-remuxer.js": 38,
+ "../utils/browser.js": 39,
+ "../utils/logger.js": 41,
+ "./media-info.js": 7,
+ "./transmuxing-events.js": 13,
+ "events": 2
+ }],
+ 13: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var TransmuxingEvents = {
+ IO_ERROR: 'io_error',
+ DEMUX_ERROR: 'demux_error',
+ INIT_SEGMENT: 'init_segment',
+ MEDIA_SEGMENT: 'media_segment',
+ LOADING_COMPLETE: 'loading_complete',
+ RECOVERED_EARLY_EOF: 'recovered_early_eof',
+ MEDIA_INFO: 'media_info',
+ METADATA_ARRIVED: 'metadata_arrived',
+ SCRIPTDATA_ARRIVED: 'scriptdata_arrived',
+ STATISTICS_INFO: 'statistics_info',
+ RECOMMEND_SEEKPOINT: 'recommend_seekpoint'
+ };
+
+ exports.default = TransmuxingEvents;
+
+ }, {}],
+ 14: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _logger = _dereq_('../utils/logger.js');
+
+ var _logger2 = _interopRequireDefault(_logger);
+
+ var _loggingControl = _dereq_('../utils/logging-control.js');
+
+ var _loggingControl2 = _interopRequireDefault(_loggingControl);
+
+ var _polyfill = _dereq_('../utils/polyfill.js');
+
+ var _polyfill2 = _interopRequireDefault(_polyfill);
+
+ var _transmuxingController = _dereq_('./transmuxing-controller.js');
+
+ var _transmuxingController2 = _interopRequireDefault(_transmuxingController);
+
+ var _transmuxingEvents = _dereq_('./transmuxing-events.js');
+
+ var _transmuxingEvents2 = _interopRequireDefault(_transmuxingEvents);
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ /* post message to worker:
+ data: {
+ cmd: string
+ param: any
+ }
+
+ receive message from worker:
+ data: {
+ msg: string,
+ data: any
+ }
+ */
+
+ var TransmuxingWorker = function TransmuxingWorker(self) {
+
+ var TAG = 'TransmuxingWorker';
+ var controller = null;
+ var logcatListener = onLogcatCallback.bind(this);
+
+ _polyfill2.default.install();
+
+ self.addEventListener('message', function (e) {
+ switch (e.data.cmd) {
+ case 'init':
+ controller = new _transmuxingController2.default(e.data.param[0], e.data.param[1]);
+ controller.on(_transmuxingEvents2.default.IO_ERROR, onIOError.bind(this));
+ controller.on(_transmuxingEvents2.default.DEMUX_ERROR, onDemuxError.bind(this));
+ controller.on(_transmuxingEvents2.default.INIT_SEGMENT, onInitSegment.bind(this));
+ controller.on(_transmuxingEvents2.default.MEDIA_SEGMENT, onMediaSegment.bind(this));
+ controller.on(_transmuxingEvents2.default.LOADING_COMPLETE, onLoadingComplete.bind(this));
+ controller.on(_transmuxingEvents2.default.RECOVERED_EARLY_EOF, onRecoveredEarlyEof.bind(this));
+ controller.on(_transmuxingEvents2.default.MEDIA_INFO, onMediaInfo.bind(this));
+ controller.on(_transmuxingEvents2.default.METADATA_ARRIVED, onMetaDataArrived.bind(this));
+ controller.on(_transmuxingEvents2.default.SCRIPTDATA_ARRIVED, onScriptDataArrived.bind(this));
+ controller.on(_transmuxingEvents2.default.STATISTICS_INFO, onStatisticsInfo.bind(this));
+ controller.on(_transmuxingEvents2.default.RECOMMEND_SEEKPOINT, onRecommendSeekpoint.bind(this));
+ break;
+ case 'destroy':
+ if (controller) {
+ controller.destroy();
+ controller = null;
+ }
+ self.postMessage({
+ msg: 'destroyed'
+ });
+ break;
+ case 'start':
+ controller.start();
+ break;
+ case 'stop':
+ controller.stop();
+ break;
+ case 'seek':
+ controller.seek(e.data.param);
+ break;
+ case 'pause':
+ controller.pause();
+ break;
+ case 'resume':
+ controller.resume();
+ break;
+ case 'logging_config': {
+ var config = e.data.param;
+ _loggingControl2.default.applyConfig(config);
+
+ if (config.enableCallback === true) {
+ _loggingControl2.default.addLogListener(logcatListener);
+ } else {
+ _loggingControl2.default.removeLogListener(logcatListener);
+ }
+ break;
+ }
+ }
+ });
+
+ function onInitSegment(type, initSegment) {
+ var obj = {
+ msg: _transmuxingEvents2.default.INIT_SEGMENT,
+ data: {
+ type: type,
+ data: initSegment
+ }
+ };
+ self.postMessage(obj, [initSegment.data]); // data: ArrayBuffer
+ }
+
+ function onMediaSegment(type, mediaSegment) {
+ var obj = {
+ msg: _transmuxingEvents2.default.MEDIA_SEGMENT,
+ data: {
+ type: type,
+ data: mediaSegment
+ }
+ };
+ self.postMessage(obj, [mediaSegment.data]); // data: ArrayBuffer
+ }
+
+ function onLoadingComplete() {
+ var obj = {
+ msg: _transmuxingEvents2.default.LOADING_COMPLETE
+ };
+ self.postMessage(obj);
+ }
+
+ function onRecoveredEarlyEof() {
+ var obj = {
+ msg: _transmuxingEvents2.default.RECOVERED_EARLY_EOF
+ };
+ self.postMessage(obj);
+ }
+
+ function onMediaInfo(mediaInfo) {
+ var obj = {
+ msg: _transmuxingEvents2.default.MEDIA_INFO,
+ data: mediaInfo
+ };
+ self.postMessage(obj);
+ }
+
+ function onMetaDataArrived(metadata) {
+ var obj = {
+ msg: _transmuxingEvents2.default.METADATA_ARRIVED,
+ data: metadata
+ };
+ self.postMessage(obj);
+ }
+
+ function onScriptDataArrived(data) {
+ var obj = {
+ msg: _transmuxingEvents2.default.SCRIPTDATA_ARRIVED,
+ data: data
+ };
+ self.postMessage(obj);
+ }
+
+ function onStatisticsInfo(statInfo) {
+ var obj = {
+ msg: _transmuxingEvents2.default.STATISTICS_INFO,
+ data: statInfo
+ };
+ self.postMessage(obj);
+ }
+
+ function onIOError(type, info) {
+ self.postMessage({
+ msg: _transmuxingEvents2.default.IO_ERROR,
+ data: {
+ type: type,
+ info: info
+ }
+ });
+ }
+
+ function onDemuxError(type, info) {
+ self.postMessage({
+ msg: _transmuxingEvents2.default.DEMUX_ERROR,
+ data: {
+ type: type,
+ info: info
+ }
+ });
+ }
+
+ function onRecommendSeekpoint(milliseconds) {
+ self.postMessage({
+ msg: _transmuxingEvents2.default.RECOMMEND_SEEKPOINT,
+ data: milliseconds
+ });
+ }
+
+ function onLogcatCallback(type, str) {
+ self.postMessage({
+ msg: 'logcat_callback',
+ data: {
+ type: type,
+ logcat: str
+ }
+ });
+ }
+ };
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ exports.default = TransmuxingWorker;
+
+ }, {
+ "../utils/logger.js": 41,
+ "../utils/logging-control.js": 42,
+ "../utils/polyfill.js": 43,
+ "./transmuxing-controller.js": 12,
+ "./transmuxing-events.js": 13
+ }],
+ 15: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var _logger = _dereq_('../utils/logger.js');
+
+ var _logger2 = _interopRequireDefault(_logger);
+
+ var _utf8Conv = _dereq_('../utils/utf8-conv.js');
+
+ var _utf8Conv2 = _interopRequireDefault(_utf8Conv);
+
+ var _exception = _dereq_('../utils/exception.js');
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ var le = function () {
+ var buf = new ArrayBuffer(2);
+ new DataView(buf).setInt16(0, 256, true); // little-endian write
+ return new Int16Array(buf)[0] === 256; // platform-spec read, if equal then LE
+ }();
+
+ var AMF = function () {
+ function AMF() {
+ _classCallCheck(this, AMF);
+ }
+
+ _createClass(AMF, null, [{
+ key: 'parseScriptData',
+ value: function parseScriptData(arrayBuffer, dataOffset, dataSize) {
+ var data = {};
+
+ try {
+ var name = AMF.parseValue(arrayBuffer, dataOffset, dataSize);
+ var value = AMF.parseValue(arrayBuffer, dataOffset + name.size, dataSize - name.size);
+
+ data[name.data] = value.data;
+ } catch (e) {
+ _logger2.default.e('AMF', e.toString());
+ }
+
+ return data;
+ }
+ }, {
+ key: 'parseObject',
+ value: function parseObject(arrayBuffer, dataOffset, dataSize) {
+ if (dataSize < 3) {
+ throw new _exception.IllegalStateException('Data not enough when parse ScriptDataObject');
+ }
+ var name = AMF.parseString(arrayBuffer, dataOffset, dataSize);
+ var value = AMF.parseValue(arrayBuffer, dataOffset + name.size, dataSize - name.size);
+ var isObjectEnd = value.objectEnd;
+
+ return {
+ data: {
+ name: name.data,
+ value: value.data
+ },
+ size: name.size + value.size,
+ objectEnd: isObjectEnd
+ };
+ }
+ }, {
+ key: 'parseVariable',
+ value: function parseVariable(arrayBuffer, dataOffset, dataSize) {
+ return AMF.parseObject(arrayBuffer, dataOffset, dataSize);
+ }
+ }, {
+ key: 'parseString',
+ value: function parseString(arrayBuffer, dataOffset, dataSize) {
+ if (dataSize < 2) {
+ throw new _exception.IllegalStateException('Data not enough when parse String');
+ }
+ var v = new DataView(arrayBuffer, dataOffset, dataSize);
+ var length = v.getUint16(0, !le);
+
+ var str = void 0;
+ if (length > 0) {
+ str = (0, _utf8Conv2.default)(new Uint8Array(arrayBuffer, dataOffset + 2, length));
+ } else {
+ str = '';
+ }
+
+ return {
+ data: str,
+ size: 2 + length
+ };
+ }
+ }, {
+ key: 'parseLongString',
+ value: function parseLongString(arrayBuffer, dataOffset, dataSize) {
+ if (dataSize < 4) {
+ throw new _exception.IllegalStateException('Data not enough when parse LongString');
+ }
+ var v = new DataView(arrayBuffer, dataOffset, dataSize);
+ var length = v.getUint32(0, !le);
+
+ var str = void 0;
+ if (length > 0) {
+ str = (0, _utf8Conv2.default)(new Uint8Array(arrayBuffer, dataOffset + 4, length));
+ } else {
+ str = '';
+ }
+
+ return {
+ data: str,
+ size: 4 + length
+ };
+ }
+ }, {
+ key: 'parseDate',
+ value: function parseDate(arrayBuffer, dataOffset, dataSize) {
+ if (dataSize < 10) {
+ throw new _exception.IllegalStateException('Data size invalid when parse Date');
+ }
+ var v = new DataView(arrayBuffer, dataOffset, dataSize);
+ var timestamp = v.getFloat64(0, !le);
+ var localTimeOffset = v.getInt16(8, !le);
+ timestamp += localTimeOffset * 60 * 1000; // get UTC time
+
+ return {
+ data: new Date(timestamp),
+ size: 8 + 2
+ };
+ }
+ }, {
+ key: 'parseValue',
+ value: function parseValue(arrayBuffer, dataOffset, dataSize) {
+ if (dataSize < 1) {
+ throw new _exception.IllegalStateException('Data not enough when parse Value');
+ }
+
+ var v = new DataView(arrayBuffer, dataOffset, dataSize);
+
+ var offset = 1;
+ var type = v.getUint8(0);
+ var value = void 0;
+ var objectEnd = false;
+
+ try {
+ switch (type) {
+ case 0:
+ // Number(Double) type
+ value = v.getFloat64(1, !le);
+ offset += 8;
+ break;
+ case 1: {
+ // Boolean type
+ var b = v.getUint8(1);
+ value = b ? true : false;
+ offset += 1;
+ break;
+ }
+ case 2: {
+ // String type
+ var amfstr = AMF.parseString(arrayBuffer, dataOffset + 1, dataSize - 1);
+ value = amfstr.data;
+ offset += amfstr.size;
+ break;
+ }
+ case 3: {
+ // Object(s) type
+ value = {};
+ var terminal = 0; // workaround for malformed Objects which has missing ScriptDataObjectEnd
+ if ((v.getUint32(dataSize - 4, !le) & 0x00FFFFFF) === 9) {
+ terminal = 3;
+ }
+ while (offset < dataSize - 4) {
+ // 4 === type(UI8) + ScriptDataObjectEnd(UI24)
+ var amfobj = AMF.parseObject(arrayBuffer, dataOffset + offset, dataSize - offset - terminal);
+ if (amfobj.objectEnd) break;
+ value[amfobj.data.name] = amfobj.data.value;
+ offset += amfobj.size;
+ }
+ if (offset <= dataSize - 3) {
+ var marker = v.getUint32(offset - 1, !le) & 0x00FFFFFF;
+ if (marker === 9) {
+ offset += 3;
+ }
+ }
+ break;
+ }
+ case 8: {
+ // ECMA array type (Mixed array)
+ value = {};
+ offset += 4; // ECMAArrayLength(UI32)
+ var _terminal = 0; // workaround for malformed MixedArrays which has missing ScriptDataObjectEnd
+ if ((v.getUint32(dataSize - 4, !le) & 0x00FFFFFF) === 9) {
+ _terminal = 3;
+ }
+ while (offset < dataSize - 8) {
+ // 8 === type(UI8) + ECMAArrayLength(UI32) + ScriptDataVariableEnd(UI24)
+ var amfvar = AMF.parseVariable(arrayBuffer, dataOffset + offset, dataSize - offset - _terminal);
+ if (amfvar.objectEnd) break;
+ value[amfvar.data.name] = amfvar.data.value;
+ offset += amfvar.size;
+ }
+ if (offset <= dataSize - 3) {
+ var _marker = v.getUint32(offset - 1, !le) & 0x00FFFFFF;
+ if (_marker === 9) {
+ offset += 3;
+ }
+ }
+ break;
+ }
+ case 9:
+ // ScriptDataObjectEnd
+ value = undefined;
+ offset = 1;
+ objectEnd = true;
+ break;
+ case 10: {
+ // Strict array type
+ // ScriptDataValue[n]. NOTE: according to video_file_format_spec_v10_1.pdf
+ value = [];
+ var strictArrayLength = v.getUint32(1, !le);
+ offset += 4;
+ for (var i = 0; i < strictArrayLength; i++) {
+ var val = AMF.parseValue(arrayBuffer, dataOffset + offset, dataSize - offset);
+ value.push(val.data);
+ offset += val.size;
+ }
+ break;
+ }
+ case 11: {
+ // Date type
+ var date = AMF.parseDate(arrayBuffer, dataOffset + 1, dataSize - 1);
+ value = date.data;
+ offset += date.size;
+ break;
+ }
+ case 12: {
+ // Long string type
+ var amfLongStr = AMF.parseString(arrayBuffer, dataOffset + 1, dataSize - 1);
+ value = amfLongStr.data;
+ offset += amfLongStr.size;
+ break;
+ }
+ default:
+ // ignore and skip
+ offset = dataSize;
+ _logger2.default.w('AMF', 'Unsupported AMF value type ' + type);
+ }
+ } catch (e) {
+ _logger2.default.e('AMF', e.toString());
+ }
+
+ return {
+ data: value,
+ size: offset,
+ objectEnd: objectEnd
+ };
+ }
+ }]);
+
+ return AMF;
+ }();
+
+ exports.default = AMF;
+
+ }, {
+ "../utils/exception.js": 40,
+ "../utils/logger.js": 41,
+ "../utils/utf8-conv.js": 44
+ }],
+ 16: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var DemuxErrors = {
+ OK: 'OK',
+ FORMAT_ERROR: 'FormatError',
+ FORMAT_UNSUPPORTED: 'FormatUnsupported',
+ CODEC_UNSUPPORTED: 'CodecUnsupported'
+ };
+
+ exports.default = DemuxErrors;
+
+ }, {}],
+ 17: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var _exception = _dereq_('../utils/exception.js');
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ // Exponential-Golomb buffer decoder
+ var ExpGolomb = function () {
+ function ExpGolomb(uint8array) {
+ _classCallCheck(this, ExpGolomb);
+
+ this.TAG = 'ExpGolomb';
+
+ this._buffer = uint8array;
+ this._buffer_index = 0;
+ this._total_bytes = uint8array.byteLength;
+ this._total_bits = uint8array.byteLength * 8;
+ this._current_word = 0;
+ this._current_word_bits_left = 0;
+ }
+
+ _createClass(ExpGolomb, [{
+ key: 'destroy',
+ value: function destroy() {
+ this._buffer = null;
+ }
+ }, {
+ key: '_fillCurrentWord',
+ value: function _fillCurrentWord() {
+ var buffer_bytes_left = this._total_bytes - this._buffer_index;
+ if (buffer_bytes_left <= 0) throw new _exception.IllegalStateException('ExpGolomb: _fillCurrentWord() but no bytes available');
+
+ var bytes_read = Math.min(4, buffer_bytes_left);
+ var word = new Uint8Array(4);
+ word.set(this._buffer.subarray(this._buffer_index, this._buffer_index + bytes_read));
+ this._current_word = new DataView(word.buffer).getUint32(0, false);
+
+ this._buffer_index += bytes_read;
+ this._current_word_bits_left = bytes_read * 8;
+ }
+ }, {
+ key: 'readBits',
+ value: function readBits(bits) {
+ if (bits > 32) throw new _exception.InvalidArgumentException('ExpGolomb: readBits() bits exceeded max 32bits!');
+
+ if (bits <= this._current_word_bits_left) {
+ var _result = this._current_word >>> 32 - bits;
+ this._current_word <<= bits;
+ this._current_word_bits_left -= bits;
+ return _result;
+ }
+
+ var result = this._current_word_bits_left ? this._current_word : 0;
+ result = result >>> 32 - this._current_word_bits_left;
+ var bits_need_left = bits - this._current_word_bits_left;
+
+ this._fillCurrentWord();
+ var bits_read_next = Math.min(bits_need_left, this._current_word_bits_left);
+
+ var result2 = this._current_word >>> 32 - bits_read_next;
+ this._current_word <<= bits_read_next;
+ this._current_word_bits_left -= bits_read_next;
+
+ result = result << bits_read_next | result2;
+ return result;
+ }
+ }, {
+ key: 'readBool',
+ value: function readBool() {
+ return this.readBits(1) === 1;
+ }
+ }, {
+ key: 'readByte',
+ value: function readByte() {
+ return this.readBits(8);
+ }
+ }, {
+ key: '_skipLeadingZero',
+ value: function _skipLeadingZero() {
+ var zero_count = void 0;
+ for (zero_count = 0; zero_count < this._current_word_bits_left; zero_count++) {
+ if (0 !== (this._current_word & 0x80000000 >>> zero_count)) {
+ this._current_word <<= zero_count;
+ this._current_word_bits_left -= zero_count;
+ return zero_count;
+ }
+ }
+ this._fillCurrentWord();
+ return zero_count + this._skipLeadingZero();
+ }
+ }, {
+ key: 'readUEG',
+ value: function readUEG() {
+ // unsigned exponential golomb
+ var leading_zeros = this._skipLeadingZero();
+ return this.readBits(leading_zeros + 1) - 1;
+ }
+ }, {
+ key: 'readSEG',
+ value: function readSEG() {
+ // signed exponential golomb
+ var value = this.readUEG();
+ if (value & 0x01) {
+ return value + 1 >>> 1;
+ } else {
+ return -1 * (value >>> 1);
+ }
+ }
+ }]);
+
+ return ExpGolomb;
+ }();
+
+ exports.default = ExpGolomb;
+
+ }, {
+ "../utils/exception.js": 40
+ }],
+ 18: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
+ return typeof obj;
+ } : function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+ };
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var _logger = _dereq_('../utils/logger.js');
+
+ var _logger2 = _interopRequireDefault(_logger);
+
+ var _amfParser = _dereq_('./amf-parser.js');
+
+ var _amfParser2 = _interopRequireDefault(_amfParser);
+
+ var _spsParser = _dereq_('./sps-parser.js');
+
+ var _spsParser2 = _interopRequireDefault(_spsParser);
+
+ var _demuxErrors = _dereq_('./demux-errors.js');
+
+ var _demuxErrors2 = _interopRequireDefault(_demuxErrors);
+
+ var _mediaInfo = _dereq_('../core/media-info.js');
+
+ var _mediaInfo2 = _interopRequireDefault(_mediaInfo);
+
+ var _exception = _dereq_('../utils/exception.js');
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ function Swap16(src) {
+ return src >>> 8 & 0xFF | (src & 0xFF) << 8;
+ }
+
+ function Swap32(src) {
+ return (src & 0xFF000000) >>> 24 | (src & 0x00FF0000) >>> 8 | (src & 0x0000FF00) << 8 | (src & 0x000000FF) << 24;
+ }
+
+ function ReadBig32(array, index) {
+ return array[index] << 24 | array[index + 1] << 16 | array[index + 2] << 8 | array[index + 3];
+ }
+
+ var FLVDemuxer = function () {
+ function FLVDemuxer(probeData, config) {
+ _classCallCheck(this, FLVDemuxer);
+
+ this.TAG = 'FLVDemuxer';
+
+ this._config = config;
+
+ this._onError = null;
+ this._onMediaInfo = null;
+ this._onMetaDataArrived = null;
+ this._onScriptDataArrived = null;
+ this._onTrackMetadata = null;
+ this._onDataAvailable = null;
+
+ this._dataOffset = probeData.dataOffset;
+ this._firstParse = true;
+ this._dispatch = false;
+
+ this._hasAudio = probeData.hasAudioTrack;
+ this._hasVideo = probeData.hasVideoTrack;
+
+ this._hasAudioFlagOverrided = false;
+ this._hasVideoFlagOverrided = false;
+
+ this._audioInitialMetadataDispatched = false;
+ this._videoInitialMetadataDispatched = false;
+
+ this._mediaInfo = new _mediaInfo2.default();
+ this._mediaInfo.hasAudio = this._hasAudio;
+ this._mediaInfo.hasVideo = this._hasVideo;
+ this._metadata = null;
+ this._audioMetadata = null;
+ this._videoMetadata = null;
+
+ this._naluLengthSize = 4;
+ this._timestampBase = 0; // int32, in milliseconds
+ this._timescale = 1000;
+ this._duration = 0; // int32, in milliseconds
+ this._durationOverrided = false;
+ this._referenceFrameRate = {
+ fixed: true,
+ fps: 23.976,
+ fps_num: 23976,
+ fps_den: 1000
+ };
+
+ this._flvSoundRateTable = [5500, 11025, 22050, 44100, 48000];
+
+ this._mpegSamplingRates = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350];
+
+ this._mpegAudioV10SampleRateTable = [44100, 48000, 32000, 0];
+ this._mpegAudioV20SampleRateTable = [22050, 24000, 16000, 0];
+ this._mpegAudioV25SampleRateTable = [11025, 12000, 8000, 0];
+
+ this._mpegAudioL1BitRateTable = [0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, -1];
+ this._mpegAudioL2BitRateTable = [0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, -1];
+ this._mpegAudioL3BitRateTable = [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1];
+
+ this._videoTrack = {
+ type: 'video',
+ id: 1,
+ sequenceNumber: 0,
+ samples: [],
+ length: 0
+ };
+ this._audioTrack = {
+ type: 'audio',
+ id: 2,
+ sequenceNumber: 0,
+ samples: [],
+ length: 0
+ };
+
+ this._littleEndian = function () {
+ var buf = new ArrayBuffer(2);
+ new DataView(buf).setInt16(0, 256, true); // little-endian write
+ return new Int16Array(buf)[0] === 256; // platform-spec read, if equal then LE
+ }();
+ }
+
+ _createClass(FLVDemuxer, [{
+ key: 'destroy',
+ value: function destroy() {
+ this._mediaInfo = null;
+ this._metadata = null;
+ this._audioMetadata = null;
+ this._videoMetadata = null;
+ this._videoTrack = null;
+ this._audioTrack = null;
+
+ this._onError = null;
+ this._onMediaInfo = null;
+ this._onMetaDataArrived = null;
+ this._onScriptDataArrived = null;
+ this._onTrackMetadata = null;
+ this._onDataAvailable = null;
+ }
+ }, {
+ key: 'bindDataSource',
+ value: function bindDataSource(loader) {
+ loader.onDataArrival = this.parseChunks.bind(this);
+ return this;
+ }
+
+ // prototype: function(type: string, metadata: any): void
+
+ }, {
+ key: 'resetMediaInfo',
+ value: function resetMediaInfo() {
+ this._mediaInfo = new _mediaInfo2.default();
+ }
+ }, {
+ key: '_isInitialMetadataDispatched',
+ value: function _isInitialMetadataDispatched() {
+ if (this._hasAudio && this._hasVideo) {
+ // both audio & video
+ return this._audioInitialMetadataDispatched && this._videoInitialMetadataDispatched;
+ }
+ if (this._hasAudio && !this._hasVideo) {
+ // audio only
+ return this._audioInitialMetadataDispatched;
+ }
+ if (!this._hasAudio && this._hasVideo) {
+ // video only
+ return this._videoInitialMetadataDispatched;
+ }
+ return false;
+ }
+
+ // function parseChunks(chunk: ArrayBuffer, byteStart: number): number;
+
+ }, {
+ key: 'parseChunks',
+ value: function parseChunks(chunk, byteStart) {
+ if (!this._onError || !this._onMediaInfo || !this._onTrackMetadata || !this._onDataAvailable) {
+ throw new _exception.IllegalStateException('Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified');
+ }
+
+ var offset = 0;
+ var le = this._littleEndian;
+
+ if (byteStart === 0) {
+ // buffer with FLV header
+ if (chunk.byteLength > 13) {
+ var probeData = FLVDemuxer.probe(chunk);
+ offset = probeData.dataOffset;
+ } else {
+ return 0;
+ }
+ }
+
+ if (this._firstParse) {
+ // handle PreviousTagSize0 before Tag1
+ this._firstParse = false;
+ if (byteStart + offset !== this._dataOffset) {
+ _logger2.default.w(this.TAG, 'First time parsing but chunk byteStart invalid!');
+ }
+
+ var v = new DataView(chunk, offset);
+ var prevTagSize0 = v.getUint32(0, !le);
+ if (prevTagSize0 !== 0) {
+ _logger2.default.w(this.TAG, 'PrevTagSize0 !== 0 !!!');
+ }
+ offset += 4;
+ }
+
+ while (offset < chunk.byteLength) {
+ this._dispatch = true;
+
+ var _v = new DataView(chunk, offset);
+
+ if (offset + 11 + 4 > chunk.byteLength) {
+ // data not enough for parsing an flv tag
+ break;
+ }
+
+ var tagType = _v.getUint8(0);
+ var dataSize = _v.getUint32(0, !le) & 0x00FFFFFF;
+
+ if (offset + 11 + dataSize + 4 > chunk.byteLength) {
+ // data not enough for parsing actual data body
+ break;
+ }
+
+ if (tagType !== 8 && tagType !== 9 && tagType !== 18) {
+ _logger2.default.w(this.TAG, 'Unsupported tag type ' + tagType + ', skipped');
+ // consume the whole tag (skip it)
+ offset += 11 + dataSize + 4;
+ continue;
+ }
+
+ var ts2 = _v.getUint8(4);
+ var ts1 = _v.getUint8(5);
+ var ts0 = _v.getUint8(6);
+ var ts3 = _v.getUint8(7);
+
+ var timestamp = ts0 | ts1 << 8 | ts2 << 16 | ts3 << 24;
+
+ var streamId = _v.getUint32(7, !le) & 0x00FFFFFF;
+ if (streamId !== 0) {
+ _logger2.default.w(this.TAG, 'Meet tag which has StreamID != 0!');
+ }
+
+ var dataOffset = offset + 11;
+
+ switch (tagType) {
+ case 8:
+ // Audio
+ this._parseAudioData(chunk, dataOffset, dataSize, timestamp);
+ break;
+ case 9:
+ // Video
+ this._parseVideoData(chunk, dataOffset, dataSize, timestamp, byteStart + offset);
+ break;
+ case 18:
+ // ScriptDataObject
+ this._parseScriptData(chunk, dataOffset, dataSize);
+ break;
+ }
+
+ var prevTagSize = _v.getUint32(11 + dataSize, !le);
+ if (prevTagSize !== 11 + dataSize) {
+ _logger2.default.w(this.TAG, 'Invalid PrevTagSize ' + prevTagSize);
+ }
+
+ offset += 11 + dataSize + 4; // tagBody + dataSize + prevTagSize
+ }
+
+ // dispatch parsed frames to consumer (typically, the remuxer)
+ if (this._isInitialMetadataDispatched()) {
+ if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {
+ this._onDataAvailable(this._audioTrack, this._videoTrack);
+ }
+ }
+
+ return offset; // consumed bytes, just equals latest offset index
+ }
+ }, {
+ key: '_parseScriptData',
+ value: function _parseScriptData(arrayBuffer, dataOffset, dataSize) {
+ var scriptData = _amfParser2.default.parseScriptData(arrayBuffer, dataOffset, dataSize);
+
+ if (scriptData.hasOwnProperty('onMetaData')) {
+ if (scriptData.onMetaData == null || _typeof(scriptData.onMetaData) !== 'object') {
+ _logger2.default.w(this.TAG, 'Invalid onMetaData structure!');
+ return;
+ }
+ if (this._metadata) {
+ _logger2.default.w(this.TAG, 'Found another onMetaData tag!');
+ }
+ this._metadata = scriptData;
+ var onMetaData = this._metadata.onMetaData;
+
+ if (this._onMetaDataArrived) {
+ this._onMetaDataArrived(Object.assign({}, onMetaData));
+ }
+
+ if (typeof onMetaData.hasAudio === 'boolean') {
+ // hasAudio
+ if (this._hasAudioFlagOverrided === false) {
+ this._hasAudio = onMetaData.hasAudio;
+ this._mediaInfo.hasAudio = this._hasAudio;
+ }
+ }
+ if (typeof onMetaData.hasVideo === 'boolean') {
+ // hasVideo
+ if (this._hasVideoFlagOverrided === false) {
+ this._hasVideo = onMetaData.hasVideo;
+ this._mediaInfo.hasVideo = this._hasVideo;
+ }
+ }
+ if (typeof onMetaData.audiodatarate === 'number') {
+ // audiodatarate
+ this._mediaInfo.audioDataRate = onMetaData.audiodatarate;
+ }
+ if (typeof onMetaData.videodatarate === 'number') {
+ // videodatarate
+ this._mediaInfo.videoDataRate = onMetaData.videodatarate;
+ }
+ if (typeof onMetaData.width === 'number') {
+ // width
+ this._mediaInfo.width = onMetaData.width;
+ }
+ if (typeof onMetaData.height === 'number') {
+ // height
+ this._mediaInfo.height = onMetaData.height;
+ }
+ if (typeof onMetaData.duration === 'number') {
+ // duration
+ if (!this._durationOverrided) {
+ var duration = Math.floor(onMetaData.duration * this._timescale);
+ this._duration = duration;
+ this._mediaInfo.duration = duration;
+ }
+ } else {
+ this._mediaInfo.duration = 0;
+ }
+ if (typeof onMetaData.framerate === 'number') {
+ // framerate
+ var fps_num = Math.floor(onMetaData.framerate * 1000);
+ if (fps_num > 0) {
+ var fps = fps_num / 1000;
+ this._referenceFrameRate.fixed = true;
+ this._referenceFrameRate.fps = fps;
+ this._referenceFrameRate.fps_num = fps_num;
+ this._referenceFrameRate.fps_den = 1000;
+ this._mediaInfo.fps = fps;
+ }
+ }
+ if (_typeof(onMetaData.keyframes) === 'object') {
+ // keyframes
+ this._mediaInfo.hasKeyframesIndex = true;
+ var keyframes = onMetaData.keyframes;
+ this._mediaInfo.keyframesIndex = this._parseKeyframesIndex(keyframes);
+ onMetaData.keyframes = null; // keyframes has been extracted, remove it
+ } else {
+ this._mediaInfo.hasKeyframesIndex = false;
+ }
+ this._dispatch = false;
+ this._mediaInfo.metadata = onMetaData;
+ _logger2.default.v(this.TAG, 'Parsed onMetaData');
+ if (this._mediaInfo.isComplete()) {
+ this._onMediaInfo(this._mediaInfo);
+ }
+ }
+
+ if (Object.keys(scriptData).length > 0) {
+ if (this._onScriptDataArrived) {
+ this._onScriptDataArrived(Object.assign({}, scriptData));
+ }
+ }
+ }
+ }, {
+ key: '_parseKeyframesIndex',
+ value: function _parseKeyframesIndex(keyframes) {
+ var times = [];
+ var filepositions = [];
+
+ // ignore first keyframe which is actually AVC Sequence Header (AVCDecoderConfigurationRecord)
+ for (var i = 1; i < keyframes.times.length; i++) {
+ var time = this._timestampBase + Math.floor(keyframes.times[i] * 1000);
+ times.push(time);
+ filepositions.push(keyframes.filepositions[i]);
+ }
+
+ return {
+ times: times,
+ filepositions: filepositions
+ };
+ }
+ }, {
+ key: '_parseAudioData',
+ value: function _parseAudioData(arrayBuffer, dataOffset, dataSize, tagTimestamp) {
+ if (dataSize <= 1) {
+ _logger2.default.w(this.TAG, 'Flv: Invalid audio packet, missing SoundData payload!');
+ return;
+ }
+
+ if (this._hasAudioFlagOverrided === true && this._hasAudio === false) {
+ // If hasAudio: false indicated explicitly in MediaDataSource,
+ // Ignore all the audio packets
+ return;
+ }
+
+ var le = this._littleEndian;
+ var v = new DataView(arrayBuffer, dataOffset, dataSize);
+
+ var soundSpec = v.getUint8(0);
+
+ var soundFormat = soundSpec >>> 4;
+ if (soundFormat !== 2 && soundFormat !== 10) {
+ // MP3 or AAC
+ this._onError(_demuxErrors2.default.CODEC_UNSUPPORTED, 'Flv: Unsupported audio codec idx: ' + soundFormat);
+ return;
+ }
+
+ var soundRate = 0;
+ var soundRateIndex = (soundSpec & 12) >>> 2;
+ if (soundRateIndex >= 0 && soundRateIndex <= 4) {
+ soundRate = this._flvSoundRateTable[soundRateIndex];
+ } else {
+ this._onError(_demuxErrors2.default.FORMAT_ERROR, 'Flv: Invalid audio sample rate idx: ' + soundRateIndex);
+ return;
+ }
+
+ var soundSize = (soundSpec & 2) >>> 1; // unused
+ var soundType = soundSpec & 1;
+
+ var meta = this._audioMetadata;
+ var track = this._audioTrack;
+
+ if (!meta) {
+ if (this._hasAudio === false && this._hasAudioFlagOverrided === false) {
+ this._hasAudio = true;
+ this._mediaInfo.hasAudio = true;
+ }
+
+ // initial metadata
+ meta = this._audioMetadata = {};
+ meta.type = 'audio';
+ meta.id = track.id;
+ meta.timescale = this._timescale;
+ meta.duration = this._duration;
+ meta.audioSampleRate = soundRate;
+ meta.channelCount = soundType === 0 ? 1 : 2;
+ }
+
+ if (soundFormat === 10) {
+ // AAC
+ var aacData = this._parseAACAudioData(arrayBuffer, dataOffset + 1, dataSize - 1);
+ if (aacData == undefined) {
+ return;
+ }
+
+ if (aacData.packetType === 0) {
+ // AAC sequence header (AudioSpecificConfig)
+ if (meta.config) {
+ _logger2.default.w(this.TAG, 'Found another AudioSpecificConfig!');
+ }
+ var misc = aacData.data;
+ meta.audioSampleRate = misc.samplingRate;
+ meta.channelCount = misc.channelCount;
+ meta.codec = misc.codec;
+ meta.originalCodec = misc.originalCodec;
+ meta.config = misc.config;
+ // The decode result of an aac sample is 1024 PCM samples
+ meta.refSampleDuration = 1024 / meta.audioSampleRate * meta.timescale;
+ _logger2.default.v(this.TAG, 'Parsed AudioSpecificConfig');
+
+ if (this._isInitialMetadataDispatched()) {
+ // Non-initial metadata, force dispatch (or flush) parsed frames to remuxer
+ if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {
+ this._onDataAvailable(this._audioTrack, this._videoTrack);
+ }
+ } else {
+ this._audioInitialMetadataDispatched = true;
+ }
+ // then notify new metadata
+ this._dispatch = false;
+ this._onTrackMetadata('audio', meta);
+
+ var mi = this._mediaInfo;
+ mi.audioCodec = meta.originalCodec;
+ mi.audioSampleRate = meta.audioSampleRate;
+ mi.audioChannelCount = meta.channelCount;
+ if (mi.hasVideo) {
+ if (mi.videoCodec != null) {
+ mi.mimeType = 'video/x-flv; codecs="' + mi.videoCodec + ',' + mi.audioCodec + '"';
+ }
+ } else {
+ mi.mimeType = 'video/x-flv; codecs="' + mi.audioCodec + '"';
+ }
+ if (mi.isComplete()) {
+ this._onMediaInfo(mi);
+ }
+ } else if (aacData.packetType === 1) {
+ // AAC raw frame data
+ var dts = this._timestampBase + tagTimestamp;
+ var aacSample = {
+ unit: aacData.data,
+ length: aacData.data.byteLength,
+ dts: dts,
+ pts: dts
+ };
+ track.samples.push(aacSample);
+ track.length += aacData.data.length;
+ } else {
+ _logger2.default.e(this.TAG, 'Flv: Unsupported AAC data type ' + aacData.packetType);
+ }
+ } else if (soundFormat === 2) {
+ // MP3
+ if (!meta.codec) {
+ // We need metadata for mp3 audio track, extract info from frame header
+ var _misc = this._parseMP3AudioData(arrayBuffer, dataOffset + 1, dataSize - 1, true);
+ if (_misc == undefined) {
+ return;
+ }
+ meta.audioSampleRate = _misc.samplingRate;
+ meta.channelCount = _misc.channelCount;
+ meta.codec = _misc.codec;
+ meta.originalCodec = _misc.originalCodec;
+ // The decode result of an mp3 sample is 1152 PCM samples
+ meta.refSampleDuration = 1152 / meta.audioSampleRate * meta.timescale;
+ _logger2.default.v(this.TAG, 'Parsed MPEG Audio Frame Header');
+
+ this._audioInitialMetadataDispatched = true;
+ this._onTrackMetadata('audio', meta);
+
+ var _mi = this._mediaInfo;
+ _mi.audioCodec = meta.codec;
+ _mi.audioSampleRate = meta.audioSampleRate;
+ _mi.audioChannelCount = meta.channelCount;
+ _mi.audioDataRate = _misc.bitRate;
+ if (_mi.hasVideo) {
+ if (_mi.videoCodec != null) {
+ _mi.mimeType = 'video/x-flv; codecs="' + _mi.videoCodec + ',' + _mi.audioCodec + '"';
+ }
+ } else {
+ _mi.mimeType = 'video/x-flv; codecs="' + _mi.audioCodec + '"';
+ }
+ if (_mi.isComplete()) {
+ this._onMediaInfo(_mi);
+ }
+ }
+
+ // This packet is always a valid audio packet, extract it
+ var data = this._parseMP3AudioData(arrayBuffer, dataOffset + 1, dataSize - 1, false);
+ if (data == undefined) {
+ return;
+ }
+ var _dts = this._timestampBase + tagTimestamp;
+ var mp3Sample = {
+ unit: data,
+ length: data.byteLength,
+ dts: _dts,
+ pts: _dts
+ };
+ track.samples.push(mp3Sample);
+ track.length += data.length;
+ }
+ }
+ }, {
+ key: '_parseAACAudioData',
+ value: function _parseAACAudioData(arrayBuffer, dataOffset, dataSize) {
+ if (dataSize <= 1) {
+ _logger2.default.w(this.TAG, 'Flv: Invalid AAC packet, missing AACPacketType or/and Data!');
+ return;
+ }
+
+ var result = {};
+ var array = new Uint8Array(arrayBuffer, dataOffset, dataSize);
+
+ result.packetType = array[0];
+
+ if (array[0] === 0) {
+ result.data = this._parseAACAudioSpecificConfig(arrayBuffer, dataOffset + 1, dataSize - 1);
+ } else {
+ result.data = array.subarray(1);
+ }
+
+ return result;
+ }
+ }, {
+ key: '_parseAACAudioSpecificConfig',
+ value: function _parseAACAudioSpecificConfig(arrayBuffer, dataOffset, dataSize) {
+ var array = new Uint8Array(arrayBuffer, dataOffset, dataSize);
+ var config = null;
+
+ /* Audio Object Type:
+ 0: Null
+ 1: AAC Main
+ 2: AAC LC
+ 3: AAC SSR (Scalable Sample Rate)
+ 4: AAC LTP (Long Term Prediction)
+ 5: HE-AAC / SBR (Spectral Band Replication)
+ 6: AAC Scalable
+ */
+
+ var audioObjectType = 0;
+ var originalAudioObjectType = 0;
+ var audioExtensionObjectType = null;
+ var samplingIndex = 0;
+ var extensionSamplingIndex = null;
+
+ // 5 bits
+ audioObjectType = originalAudioObjectType = array[0] >>> 3;
+ // 4 bits
+ samplingIndex = (array[0] & 0x07) << 1 | array[1] >>> 7;
+ if (samplingIndex < 0 || samplingIndex >= this._mpegSamplingRates.length) {
+ this._onError(_demuxErrors2.default.FORMAT_ERROR, 'Flv: AAC invalid sampling frequency index!');
+ return;
+ }
+
+ var samplingFrequence = this._mpegSamplingRates[samplingIndex];
+
+ // 4 bits
+ var channelConfig = (array[1] & 0x78) >>> 3;
+ if (channelConfig < 0 || channelConfig >= 8) {
+ this._onError(_demuxErrors2.default.FORMAT_ERROR, 'Flv: AAC invalid channel configuration');
+ return;
+ }
+
+ if (audioObjectType === 5) {
+ // HE-AAC?
+ // 4 bits
+ extensionSamplingIndex = (array[1] & 0x07) << 1 | array[2] >>> 7;
+ // 5 bits
+ audioExtensionObjectType = (array[2] & 0x7C) >>> 2;
+ }
+
+ // workarounds for various browsers
+ var userAgent = self.navigator.userAgent.toLowerCase();
+
+ if (userAgent.indexOf('firefox') !== -1) {
+ // firefox: use SBR (HE-AAC) if freq less than 24kHz
+ if (samplingIndex >= 6) {
+ audioObjectType = 5;
+ config = new Array(4);
+ extensionSamplingIndex = samplingIndex - 3;
+ } else {
+ // use LC-AAC
+ audioObjectType = 2;
+ config = new Array(2);
+ extensionSamplingIndex = samplingIndex;
+ }
+ } else if (userAgent.indexOf('android') !== -1) {
+ // android: always use LC-AAC
+ audioObjectType = 2;
+ config = new Array(2);
+ extensionSamplingIndex = samplingIndex;
+ } else {
+ // for other browsers, e.g. chrome...
+ // Always use HE-AAC to make it easier to switch aac codec profile
+ audioObjectType = 5;
+ extensionSamplingIndex = samplingIndex;
+ config = new Array(4);
+
+ if (samplingIndex >= 6) {
+ extensionSamplingIndex = samplingIndex - 3;
+ } else if (channelConfig === 1) {
+ // Mono channel
+ audioObjectType = 2;
+ config = new Array(2);
+ extensionSamplingIndex = samplingIndex;
+ }
+ }
+
+ config[0] = audioObjectType << 3;
+ config[0] |= (samplingIndex & 0x0F) >>> 1;
+ config[1] = (samplingIndex & 0x0F) << 7;
+ config[1] |= (channelConfig & 0x0F) << 3;
+ if (audioObjectType === 5) {
+ config[1] |= (extensionSamplingIndex & 0x0F) >>> 1;
+ config[2] = (extensionSamplingIndex & 0x01) << 7;
+ // extended audio object type: force to 2 (LC-AAC)
+ config[2] |= 2 << 2;
+ config[3] = 0;
+ }
+
+ return {
+ config: config,
+ samplingRate: samplingFrequence,
+ channelCount: channelConfig,
+ codec: 'mp4a.40.' + audioObjectType,
+ originalCodec: 'mp4a.40.' + originalAudioObjectType
+ };
+ }
+ }, {
+ key: '_parseMP3AudioData',
+ value: function _parseMP3AudioData(arrayBuffer, dataOffset, dataSize, requestHeader) {
+ if (dataSize < 4) {
+ _logger2.default.w(this.TAG, 'Flv: Invalid MP3 packet, header missing!');
+ return;
+ }
+
+ var le = this._littleEndian;
+ var array = new Uint8Array(arrayBuffer, dataOffset, dataSize);
+ var result = null;
+
+ if (requestHeader) {
+ if (array[0] !== 0xFF) {
+ return;
+ }
+ var ver = array[1] >>> 3 & 0x03;
+ var layer = (array[1] & 0x06) >> 1;
+
+ var bitrate_index = (array[2] & 0xF0) >>> 4;
+ var sampling_freq_index = (array[2] & 0x0C) >>> 2;
+
+ var channel_mode = array[3] >>> 6 & 0x03;
+ var channel_count = channel_mode !== 3 ? 2 : 1;
+
+ var sample_rate = 0;
+ var bit_rate = 0;
+ var object_type = 34; // Layer-3, listed in MPEG-4 Audio Object Types
+
+ var codec = 'mp3';
+
+ switch (ver) {
+ case 0:
+ // MPEG 2.5
+ sample_rate = this._mpegAudioV25SampleRateTable[sampling_freq_index];
+ break;
+ case 2:
+ // MPEG 2
+ sample_rate = this._mpegAudioV20SampleRateTable[sampling_freq_index];
+ break;
+ case 3:
+ // MPEG 1
+ sample_rate = this._mpegAudioV10SampleRateTable[sampling_freq_index];
+ break;
+ }
+
+ switch (layer) {
+ case 1:
+ // Layer 3
+ object_type = 34;
+ if (bitrate_index < this._mpegAudioL3BitRateTable.length) {
+ bit_rate = this._mpegAudioL3BitRateTable[bitrate_index];
+ }
+ break;
+ case 2:
+ // Layer 2
+ object_type = 33;
+ if (bitrate_index < this._mpegAudioL2BitRateTable.length) {
+ bit_rate = this._mpegAudioL2BitRateTable[bitrate_index];
+ }
+ break;
+ case 3:
+ // Layer 1
+ object_type = 32;
+ if (bitrate_index < this._mpegAudioL1BitRateTable.length) {
+ bit_rate = this._mpegAudioL1BitRateTable[bitrate_index];
+ }
+ break;
+ }
+
+ result = {
+ bitRate: bit_rate,
+ samplingRate: sample_rate,
+ channelCount: channel_count,
+ codec: codec,
+ originalCodec: codec
+ };
+ } else {
+ result = array;
+ }
+
+ return result;
+ }
+ }, {
+ key: '_parseVideoData',
+ value: function _parseVideoData(arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition) {
+ if (dataSize <= 1) {
+ _logger2.default.w(this.TAG, 'Flv: Invalid video packet, missing VideoData payload!');
+ return;
+ }
+
+ if (this._hasVideoFlagOverrided === true && this._hasVideo === false) {
+ // If hasVideo: false indicated explicitly in MediaDataSource,
+ // Ignore all the video packets
+ return;
+ }
+
+ var spec = new Uint8Array(arrayBuffer, dataOffset, dataSize)[0];
+
+ var frameType = (spec & 240) >>> 4;
+ var codecId = spec & 15;
+
+ if (codecId !== 7) {
+ this._onError(_demuxErrors2.default.CODEC_UNSUPPORTED, 'Flv: Unsupported codec in video frame: ' + codecId);
+ return;
+ }
+
+ this._parseAVCVideoPacket(arrayBuffer, dataOffset + 1, dataSize - 1, tagTimestamp, tagPosition, frameType);
+ }
+ }, {
+ key: '_parseAVCVideoPacket',
+ value: function _parseAVCVideoPacket(arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition, frameType) {
+ if (dataSize < 4) {
+ _logger2.default.w(this.TAG, 'Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime');
+ return;
+ }
+
+ var le = this._littleEndian;
+ var v = new DataView(arrayBuffer, dataOffset, dataSize);
+
+ var packetType = v.getUint8(0);
+ var cts_unsigned = v.getUint32(0, !le) & 0x00FFFFFF;
+ var cts = cts_unsigned << 8 >> 8; // convert to 24-bit signed int
+
+ if (packetType === 0) {
+ // AVCDecoderConfigurationRecord
+ this._parseAVCDecoderConfigurationRecord(arrayBuffer, dataOffset + 4, dataSize - 4);
+ } else if (packetType === 1) {
+ // One or more Nalus
+ this._parseAVCVideoData(arrayBuffer, dataOffset + 4, dataSize - 4, tagTimestamp, tagPosition, frameType, cts);
+ } else if (packetType === 2) {
+ // empty, AVC end of sequence
+ } else {
+ this._onError(_demuxErrors2.default.FORMAT_ERROR, 'Flv: Invalid video packet type ' + packetType);
+ return;
+ }
+ }
+ }, {
+ key: '_parseAVCDecoderConfigurationRecord',
+ value: function _parseAVCDecoderConfigurationRecord(arrayBuffer, dataOffset, dataSize) {
+ if (dataSize < 7) {
+ _logger2.default.w(this.TAG, 'Flv: Invalid AVCDecoderConfigurationRecord, lack of data!');
+ return;
+ }
+
+ var meta = this._videoMetadata;
+ var track = this._videoTrack;
+ var le = this._littleEndian;
+ var v = new DataView(arrayBuffer, dataOffset, dataSize);
+
+ if (!meta) {
+ if (this._hasVideo === false && this._hasVideoFlagOverrided === false) {
+ this._hasVideo = true;
+ this._mediaInfo.hasVideo = true;
+ }
+
+ meta = this._videoMetadata = {};
+ meta.type = 'video';
+ meta.id = track.id;
+ meta.timescale = this._timescale;
+ meta.duration = this._duration;
+ } else {
+ if (typeof meta.avcc !== 'undefined') {
+ _logger2.default.w(this.TAG, 'Found another AVCDecoderConfigurationRecord!');
+ }
+ }
+
+ var version = v.getUint8(0); // configurationVersion
+ var avcProfile = v.getUint8(1); // avcProfileIndication
+ var profileCompatibility = v.getUint8(2); // profile_compatibility
+ var avcLevel = v.getUint8(3); // AVCLevelIndication
+
+ if (version !== 1 || avcProfile === 0) {
+ this._onError(_demuxErrors2.default.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord');
+ return;
+ }
+
+ this._naluLengthSize = (v.getUint8(4) & 3) + 1; // lengthSizeMinusOne
+ if (this._naluLengthSize !== 3 && this._naluLengthSize !== 4) {
+ // holy shit!!!
+ this._onError(_demuxErrors2.default.FORMAT_ERROR, 'Flv: Strange NaluLengthSizeMinusOne: ' + (this._naluLengthSize - 1));
+ return;
+ }
+
+ var spsCount = v.getUint8(5) & 31; // numOfSequenceParameterSets
+ if (spsCount === 0) {
+ this._onError(_demuxErrors2.default.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No SPS');
+ return;
+ } else if (spsCount > 1) {
+ _logger2.default.w(this.TAG, 'Flv: Strange AVCDecoderConfigurationRecord: SPS Count = ' + spsCount);
+ }
+
+ var offset = 6;
+
+ for (var i = 0; i < spsCount; i++) {
+ var len = v.getUint16(offset, !le); // sequenceParameterSetLength
+ offset += 2;
+
+ if (len === 0) {
+ continue;
+ }
+
+ // Notice: Nalu without startcode header (00 00 00 01)
+ var sps = new Uint8Array(arrayBuffer, dataOffset + offset, len);
+ offset += len;
+
+ var config = _spsParser2.default.parseSPS(sps);
+ if (i !== 0) {
+ // ignore other sps's config
+ continue;
+ }
+
+ meta.codecWidth = config.codec_size.width;
+ meta.codecHeight = config.codec_size.height;
+ meta.presentWidth = config.present_size.width;
+ meta.presentHeight = config.present_size.height;
+
+ meta.profile = config.profile_string;
+ meta.level = config.level_string;
+ meta.bitDepth = config.bit_depth;
+ meta.chromaFormat = config.chroma_format;
+ meta.sarRatio = config.sar_ratio;
+ meta.frameRate = config.frame_rate;
+
+ if (config.frame_rate.fixed === false || config.frame_rate.fps_num === 0 || config.frame_rate.fps_den === 0) {
+ meta.frameRate = this._referenceFrameRate;
+ }
+
+ var fps_den = meta.frameRate.fps_den;
+ var fps_num = meta.frameRate.fps_num;
+ meta.refSampleDuration = meta.timescale * (fps_den / fps_num);
+
+ var codecArray = sps.subarray(1, 4);
+ var codecString = 'avc1.';
+ for (var j = 0; j < 3; j++) {
+ var h = codecArray[j].toString(16);
+ if (h.length < 2) {
+ h = '0' + h;
+ }
+ codecString += h;
+ }
+ meta.codec = codecString;
+
+ var mi = this._mediaInfo;
+ mi.width = meta.codecWidth;
+ mi.height = meta.codecHeight;
+ mi.fps = meta.frameRate.fps;
+ mi.profile = meta.profile;
+ mi.level = meta.level;
+ mi.refFrames = config.ref_frames;
+ mi.chromaFormat = config.chroma_format_string;
+ mi.sarNum = meta.sarRatio.width;
+ mi.sarDen = meta.sarRatio.height;
+ mi.videoCodec = codecString;
+
+ if (mi.hasAudio) {
+ if (mi.audioCodec != null) {
+ mi.mimeType = 'video/x-flv; codecs="' + mi.videoCodec + ',' + mi.audioCodec + '"';
+ }
+ } else {
+ mi.mimeType = 'video/x-flv; codecs="' + mi.videoCodec + '"';
+ }
+ if (mi.isComplete()) {
+ this._onMediaInfo(mi);
+ }
+ }
+
+ var ppsCount = v.getUint8(offset); // numOfPictureParameterSets
+ if (ppsCount === 0) {
+ this._onError(_demuxErrors2.default.FORMAT_ERROR, 'Flv: Invalid AVCDecoderConfigurationRecord: No PPS');
+ return;
+ } else if (ppsCount > 1) {
+ _logger2.default.w(this.TAG, 'Flv: Strange AVCDecoderConfigurationRecord: PPS Count = ' + ppsCount);
+ }
+
+ offset++;
+
+ for (var _i = 0; _i < ppsCount; _i++) {
+ var _len = v.getUint16(offset, !le); // pictureParameterSetLength
+ offset += 2;
+
+ if (_len === 0) {
+ continue;
+ }
+
+ // pps is useless for extracting video information
+ offset += _len;
+ }
+
+ meta.avcc = new Uint8Array(dataSize);
+ meta.avcc.set(new Uint8Array(arrayBuffer, dataOffset, dataSize), 0);
+ _logger2.default.v(this.TAG, 'Parsed AVCDecoderConfigurationRecord');
+
+ if (this._isInitialMetadataDispatched()) {
+ // flush parsed frames
+ if (this._dispatch && (this._audioTrack.length || this._videoTrack.length)) {
+ this._onDataAvailable(this._audioTrack, this._videoTrack);
+ }
+ } else {
+ this._videoInitialMetadataDispatched = true;
+ }
+ // notify new metadata
+ this._dispatch = false;
+ this._onTrackMetadata('video', meta);
+ }
+ }, {
+ key: '_parseAVCVideoData',
+ value: function _parseAVCVideoData(arrayBuffer, dataOffset, dataSize, tagTimestamp, tagPosition, frameType, cts) {
+ var le = this._littleEndian;
+ var v = new DataView(arrayBuffer, dataOffset, dataSize);
+
+ var units = [],
+ length = 0;
+
+ var offset = 0;
+ var lengthSize = this._naluLengthSize;
+ var dts = this._timestampBase + tagTimestamp;
+ var keyframe = frameType === 1; // from FLV Frame Type constants
+
+ while (offset < dataSize) {
+ if (offset + 4 >= dataSize) {
+ _logger2.default.w(this.TAG, 'Malformed Nalu near timestamp ' + dts + ', offset = ' + offset + ', dataSize = ' + dataSize);
+ break; // data not enough for next Nalu
+ }
+ // Nalu with length-header (AVC1)
+ var naluSize = v.getUint32(offset, !le); // Big-Endian read
+ if (lengthSize === 3) {
+ naluSize >>>= 8;
+ }
+ if (naluSize > dataSize - lengthSize) {
+ _logger2.default.w(this.TAG, 'Malformed Nalus near timestamp ' + dts + ', NaluSize > DataSize!');
+ return;
+ }
+
+ var unitType = v.getUint8(offset + lengthSize) & 0x1F;
+
+ if (unitType === 5) {
+ // IDR
+ keyframe = true;
+ }
+
+ var data = new Uint8Array(arrayBuffer, dataOffset + offset, lengthSize + naluSize);
+ var unit = {
+ type: unitType,
+ data: data
+ };
+ units.push(unit);
+ length += data.byteLength;
+
+ offset += lengthSize + naluSize;
+ }
+
+ if (units.length) {
+ var track = this._videoTrack;
+ var avcSample = {
+ units: units,
+ length: length,
+ isKeyframe: keyframe,
+ dts: dts,
+ cts: cts,
+ pts: dts + cts
+ };
+ if (keyframe) {
+ avcSample.fileposition = tagPosition;
+ }
+ track.samples.push(avcSample);
+ track.length += length;
+ }
+ }
+ }, {
+ key: 'onTrackMetadata',
+ get: function get() {
+ return this._onTrackMetadata;
+ },
+ set: function set(callback) {
+ this._onTrackMetadata = callback;
+ }
+
+ // prototype: function(mediaInfo: MediaInfo): void
+
+ }, {
+ key: 'onMediaInfo',
+ get: function get() {
+ return this._onMediaInfo;
+ },
+ set: function set(callback) {
+ this._onMediaInfo = callback;
+ }
+ }, {
+ key: 'onMetaDataArrived',
+ get: function get() {
+ return this._onMetaDataArrived;
+ },
+ set: function set(callback) {
+ this._onMetaDataArrived = callback;
+ }
+ }, {
+ key: 'onScriptDataArrived',
+ get: function get() {
+ return this._onScriptDataArrived;
+ },
+ set: function set(callback) {
+ this._onScriptDataArrived = callback;
+ }
+
+ // prototype: function(type: number, info: string): void
+
+ }, {
+ key: 'onError',
+ get: function get() {
+ return this._onError;
+ },
+ set: function set(callback) {
+ this._onError = callback;
+ }
+
+ // prototype: function(videoTrack: any, audioTrack: any): void
+
+ }, {
+ key: 'onDataAvailable',
+ get: function get() {
+ return this._onDataAvailable;
+ },
+ set: function set(callback) {
+ this._onDataAvailable = callback;
+ }
+
+ // timestamp base for output samples, must be in milliseconds
+
+ }, {
+ key: 'timestampBase',
+ get: function get() {
+ return this._timestampBase;
+ },
+ set: function set(base) {
+ this._timestampBase = base;
+ }
+ }, {
+ key: 'overridedDuration',
+ get: function get() {
+ return this._duration;
+ }
+
+ // Force-override media duration. Must be in milliseconds, int32
+ ,
+ set: function set(duration) {
+ this._durationOverrided = true;
+ this._duration = duration;
+ this._mediaInfo.duration = duration;
+ }
+
+ // Force-override audio track present flag, boolean
+
+ }, {
+ key: 'overridedHasAudio',
+ set: function set(hasAudio) {
+ this._hasAudioFlagOverrided = true;
+ this._hasAudio = hasAudio;
+ this._mediaInfo.hasAudio = hasAudio;
+ }
+
+ // Force-override video track present flag, boolean
+
+ }, {
+ key: 'overridedHasVideo',
+ set: function set(hasVideo) {
+ this._hasVideoFlagOverrided = true;
+ this._hasVideo = hasVideo;
+ this._mediaInfo.hasVideo = hasVideo;
+ }
+ }], [{
+ key: 'probe',
+ value: function probe(buffer) {
+ var data = new Uint8Array(buffer);
+ var mismatch = {
+ match: false
+ };
+
+ if (data[0] !== 0x46 || data[1] !== 0x4C || data[2] !== 0x56 || data[3] !== 0x01) {
+ return mismatch;
+ }
+
+ var hasAudio = (data[4] & 4) >>> 2 !== 0;
+ var hasVideo = (data[4] & 1) !== 0;
+
+ var offset = ReadBig32(data, 5);
+
+ if (offset < 9) {
+ return mismatch;
+ }
+
+ return {
+ match: true,
+ consumed: offset,
+ dataOffset: offset,
+ hasAudioTrack: hasAudio,
+ hasVideoTrack: hasVideo
+ };
+ }
+ }]);
+
+ return FLVDemuxer;
+ }();
+
+ exports.default = FLVDemuxer;
+
+ }, {
+ "../core/media-info.js": 7,
+ "../utils/exception.js": 40,
+ "../utils/logger.js": 41,
+ "./amf-parser.js": 15,
+ "./demux-errors.js": 16,
+ "./sps-parser.js": 19
+ }],
+ 19: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var _expGolomb = _dereq_('./exp-golomb.js');
+
+ var _expGolomb2 = _interopRequireDefault(_expGolomb);
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ var SPSParser = function () {
+ function SPSParser() {
+ _classCallCheck(this, SPSParser);
+ }
+
+ _createClass(SPSParser, null, [{
+ key: '_ebsp2rbsp',
+ value: function _ebsp2rbsp(uint8array) {
+ var src = uint8array;
+ var src_length = src.byteLength;
+ var dst = new Uint8Array(src_length);
+ var dst_idx = 0;
+
+ for (var i = 0; i < src_length; i++) {
+ if (i >= 2) {
+ // Unescape: Skip 0x03 after 00 00
+ if (src[i] === 0x03 && src[i - 1] === 0x00 && src[i - 2] === 0x00) {
+ continue;
+ }
+ }
+ dst[dst_idx] = src[i];
+ dst_idx++;
+ }
+
+ return new Uint8Array(dst.buffer, 0, dst_idx);
+ }
+ }, {
+ key: 'parseSPS',
+ value: function parseSPS(uint8array) {
+ var rbsp = SPSParser._ebsp2rbsp(uint8array);
+ var gb = new _expGolomb2.default(rbsp);
+
+ gb.readByte();
+ var profile_idc = gb.readByte(); // profile_idc
+ gb.readByte(); // constraint_set_flags[5] + reserved_zero[3]
+ var level_idc = gb.readByte(); // level_idc
+ gb.readUEG(); // seq_parameter_set_id
+
+ var profile_string = SPSParser.getProfileString(profile_idc);
+ var level_string = SPSParser.getLevelString(level_idc);
+ var chroma_format_idc = 1;
+ var chroma_format = 420;
+ var chroma_format_table = [0, 420, 422, 444];
+ var bit_depth = 8;
+
+ if (profile_idc === 100 || profile_idc === 110 || profile_idc === 122 || profile_idc === 244 || profile_idc === 44 || profile_idc === 83 || profile_idc === 86 || profile_idc === 118 || profile_idc === 128 || profile_idc === 138 || profile_idc === 144) {
+
+ chroma_format_idc = gb.readUEG();
+ if (chroma_format_idc === 3) {
+ gb.readBits(1); // separate_colour_plane_flag
+ }
+ if (chroma_format_idc <= 3) {
+ chroma_format = chroma_format_table[chroma_format_idc];
+ }
+
+ bit_depth = gb.readUEG() + 8; // bit_depth_luma_minus8
+ gb.readUEG(); // bit_depth_chroma_minus8
+ gb.readBits(1); // qpprime_y_zero_transform_bypass_flag
+ if (gb.readBool()) {
+ // seq_scaling_matrix_present_flag
+ var scaling_list_count = chroma_format_idc !== 3 ? 8 : 12;
+ for (var i = 0; i < scaling_list_count; i++) {
+ if (gb.readBool()) {
+ // seq_scaling_list_present_flag
+ if (i < 6) {
+ SPSParser._skipScalingList(gb, 16);
+ } else {
+ SPSParser._skipScalingList(gb, 64);
+ }
+ }
+ }
+ }
+ }
+ gb.readUEG(); // log2_max_frame_num_minus4
+ var pic_order_cnt_type = gb.readUEG();
+ if (pic_order_cnt_type === 0) {
+ gb.readUEG(); // log2_max_pic_order_cnt_lsb_minus_4
+ } else if (pic_order_cnt_type === 1) {
+ gb.readBits(1); // delta_pic_order_always_zero_flag
+ gb.readSEG(); // offset_for_non_ref_pic
+ gb.readSEG(); // offset_for_top_to_bottom_field
+ var num_ref_frames_in_pic_order_cnt_cycle = gb.readUEG();
+ for (var _i = 0; _i < num_ref_frames_in_pic_order_cnt_cycle; _i++) {
+ gb.readSEG(); // offset_for_ref_frame
+ }
+ }
+ var ref_frames = gb.readUEG(); // max_num_ref_frames
+ gb.readBits(1); // gaps_in_frame_num_value_allowed_flag
+
+ var pic_width_in_mbs_minus1 = gb.readUEG();
+ var pic_height_in_map_units_minus1 = gb.readUEG();
+
+ var frame_mbs_only_flag = gb.readBits(1);
+ if (frame_mbs_only_flag === 0) {
+ gb.readBits(1); // mb_adaptive_frame_field_flag
+ }
+ gb.readBits(1); // direct_8x8_inference_flag
+
+ var frame_crop_left_offset = 0;
+ var frame_crop_right_offset = 0;
+ var frame_crop_top_offset = 0;
+ var frame_crop_bottom_offset = 0;
+
+ var frame_cropping_flag = gb.readBool();
+ if (frame_cropping_flag) {
+ frame_crop_left_offset = gb.readUEG();
+ frame_crop_right_offset = gb.readUEG();
+ frame_crop_top_offset = gb.readUEG();
+ frame_crop_bottom_offset = gb.readUEG();
+ }
+
+ var sar_width = 1,
+ sar_height = 1;
+ var fps = 0,
+ fps_fixed = true,
+ fps_num = 0,
+ fps_den = 0;
+
+ var vui_parameters_present_flag = gb.readBool();
+ if (vui_parameters_present_flag) {
+ if (gb.readBool()) {
+ // aspect_ratio_info_present_flag
+ var aspect_ratio_idc = gb.readByte();
+ var sar_w_table = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2];
+ var sar_h_table = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1];
+
+ if (aspect_ratio_idc > 0 && aspect_ratio_idc < 16) {
+ sar_width = sar_w_table[aspect_ratio_idc - 1];
+ sar_height = sar_h_table[aspect_ratio_idc - 1];
+ } else if (aspect_ratio_idc === 255) {
+ sar_width = gb.readByte() << 8 | gb.readByte();
+ sar_height = gb.readByte() << 8 | gb.readByte();
+ }
+ }
+
+ if (gb.readBool()) {
+ // overscan_info_present_flag
+ gb.readBool(); // overscan_appropriate_flag
+ }
+ if (gb.readBool()) {
+ // video_signal_type_present_flag
+ gb.readBits(4); // video_format & video_full_range_flag
+ if (gb.readBool()) {
+ // colour_description_present_flag
+ gb.readBits(24); // colour_primaries & transfer_characteristics & matrix_coefficients
+ }
+ }
+ if (gb.readBool()) {
+ // chroma_loc_info_present_flag
+ gb.readUEG(); // chroma_sample_loc_type_top_field
+ gb.readUEG(); // chroma_sample_loc_type_bottom_field
+ }
+ if (gb.readBool()) {
+ // timing_info_present_flag
+ var num_units_in_tick = gb.readBits(32);
+ var time_scale = gb.readBits(32);
+ fps_fixed = gb.readBool(); // fixed_frame_rate_flag
+
+ fps_num = time_scale;
+ fps_den = num_units_in_tick * 2;
+ fps = fps_num / fps_den;
+ }
+ }
+
+ var sarScale = 1;
+ if (sar_width !== 1 || sar_height !== 1) {
+ sarScale = sar_width / sar_height;
+ }
+
+ var crop_unit_x = 0,
+ crop_unit_y = 0;
+ if (chroma_format_idc === 0) {
+ crop_unit_x = 1;
+ crop_unit_y = 2 - frame_mbs_only_flag;
+ } else {
+ var sub_wc = chroma_format_idc === 3 ? 1 : 2;
+ var sub_hc = chroma_format_idc === 1 ? 2 : 1;
+ crop_unit_x = sub_wc;
+ crop_unit_y = sub_hc * (2 - frame_mbs_only_flag);
+ }
+
+ var codec_width = (pic_width_in_mbs_minus1 + 1) * 16;
+ var codec_height = (2 - frame_mbs_only_flag) * ((pic_height_in_map_units_minus1 + 1) * 16);
+
+ codec_width -= (frame_crop_left_offset + frame_crop_right_offset) * crop_unit_x;
+ codec_height -= (frame_crop_top_offset + frame_crop_bottom_offset) * crop_unit_y;
+
+ var present_width = Math.ceil(codec_width * sarScale);
+
+ gb.destroy();
+ gb = null;
+
+ return {
+ profile_string: profile_string, // baseline, high, high10, ...
+ level_string: level_string, // 3, 3.1, 4, 4.1, 5, 5.1, ...
+ bit_depth: bit_depth, // 8bit, 10bit, ...
+ ref_frames: ref_frames,
+ chroma_format: chroma_format, // 4:2:0, 4:2:2, ...
+ chroma_format_string: SPSParser.getChromaFormatString(chroma_format),
+
+ frame_rate: {
+ fixed: fps_fixed,
+ fps: fps,
+ fps_den: fps_den,
+ fps_num: fps_num
+ },
+
+ sar_ratio: {
+ width: sar_width,
+ height: sar_height
+ },
+
+ codec_size: {
+ width: codec_width,
+ height: codec_height
+ },
+
+ present_size: {
+ width: present_width,
+ height: codec_height
+ }
+ };
+ }
+ }, {
+ key: '_skipScalingList',
+ value: function _skipScalingList(gb, count) {
+ var last_scale = 8,
+ next_scale = 8;
+ var delta_scale = 0;
+ for (var i = 0; i < count; i++) {
+ if (next_scale !== 0) {
+ delta_scale = gb.readSEG();
+ next_scale = (last_scale + delta_scale + 256) % 256;
+ }
+ last_scale = next_scale === 0 ? last_scale : next_scale;
+ }
+ }
+ }, {
+ key: 'getProfileString',
+ value: function getProfileString(profile_idc) {
+ switch (profile_idc) {
+ case 66:
+ return 'Baseline';
+ case 77:
+ return 'Main';
+ case 88:
+ return 'Extended';
+ case 100:
+ return 'High';
+ case 110:
+ return 'High10';
+ case 122:
+ return 'High422';
+ case 244:
+ return 'High444';
+ default:
+ return 'Unknown';
+ }
+ }
+ }, {
+ key: 'getLevelString',
+ value: function getLevelString(level_idc) {
+ return (level_idc / 10).toFixed(1);
+ }
+ }, {
+ key: 'getChromaFormatString',
+ value: function getChromaFormatString(chroma) {
+ switch (chroma) {
+ case 420:
+ return '4:2:0';
+ case 422:
+ return '4:2:2';
+ case 444:
+ return '4:4:4';
+ default:
+ return 'Unknown';
+ }
+ }
+ }]);
+
+ return SPSParser;
+ }();
+
+ exports.default = SPSParser;
+
+ }, {
+ "./exp-golomb.js": 17
+ }],
+ 20: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
+ return typeof obj;
+ } : function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+ };
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var _polyfill = _dereq_('./utils/polyfill.js');
+
+ var _polyfill2 = _interopRequireDefault(_polyfill);
+
+ var _features = _dereq_('./core/features.js');
+
+ var _features2 = _interopRequireDefault(_features);
+
+ var _loader = _dereq_('./io/loader.js');
+
+ var _flvPlayer = _dereq_('./player/flv-player.js');
+
+ var _flvPlayer2 = _interopRequireDefault(_flvPlayer);
+
+ var _nativePlayer = _dereq_('./player/native-player.js');
+
+ var _nativePlayer2 = _interopRequireDefault(_nativePlayer);
+
+ var _playerEvents = _dereq_('./player/player-events.js');
+
+ var _playerEvents2 = _interopRequireDefault(_playerEvents);
+
+ var _playerErrors = _dereq_('./player/player-errors.js');
+
+ var _loggingControl = _dereq_('./utils/logging-control.js');
+
+ var _loggingControl2 = _interopRequireDefault(_loggingControl);
+
+ var _exception = _dereq_('./utils/exception.js');
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ // here are all the interfaces
+
+ // install polyfills
+ _polyfill2.default.install();
+
+ // factory method
+ function createPlayer(mediaDataSource, optionalConfig) {
+ var mds = mediaDataSource;
+ if (mds == null || (typeof mds === 'undefined' ? 'undefined' : _typeof(mds)) !== 'object') {
+ throw new _exception.InvalidArgumentException('MediaDataSource must be an javascript object!');
+ }
+
+ if (!mds.hasOwnProperty('type')) {
+ throw new _exception.InvalidArgumentException('MediaDataSource must has type field to indicate video file type!');
+ }
+
+ switch (mds.type) {
+ case 'flv':
+ return new _flvPlayer2.default(mds, optionalConfig);
+ default:
+ return new _nativePlayer2.default(mds, optionalConfig);
+ }
+ }
+
+ // feature detection
+ function isSupported() {
+ return _features2.default.supportMSEH264Playback();
+ }
+
+ function getFeatureList() {
+ return _features2.default.getFeatureList();
+ }
+
+ // interfaces
+ var flvjs = {};
+
+ flvjs.createPlayer = createPlayer;
+ flvjs.isSupported = isSupported;
+ flvjs.getFeatureList = getFeatureList;
+
+ flvjs.BaseLoader = _loader.BaseLoader;
+ flvjs.LoaderStatus = _loader.LoaderStatus;
+ flvjs.LoaderErrors = _loader.LoaderErrors;
+
+ flvjs.Events = _playerEvents2.default;
+ flvjs.ErrorTypes = _playerErrors.ErrorTypes;
+ flvjs.ErrorDetails = _playerErrors.ErrorDetails;
+
+ flvjs.FlvPlayer = _flvPlayer2.default;
+ flvjs.NativePlayer = _nativePlayer2.default;
+ flvjs.LoggingControl = _loggingControl2.default;
+
+ Object.defineProperty(flvjs, 'version', {
+ enumerable: true,
+ get: function get() {
+ // replaced by browserify-versionify transform
+ return '1.5.0';
+ }
+ });
+
+ exports.default = flvjs;
+
+ }, {
+ "./core/features.js": 6,
+ "./io/loader.js": 24,
+ "./player/flv-player.js": 32,
+ "./player/native-player.js": 33,
+ "./player/player-errors.js": 34,
+ "./player/player-events.js": 35,
+ "./utils/exception.js": 40,
+ "./utils/logging-control.js": 42,
+ "./utils/polyfill.js": 43
+ }],
+ 21: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ // entry/index file
+
+ // make it compatible with browserify's umd wrapper
+ module.exports = _dereq_('./flv.js').default;
+
+ }, {
+ "./flv.js": 20
+ }],
+ 22: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
+ return typeof obj;
+ } : function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+ };
+
+ var _get = function get(object, property, receiver) {
+ if (object === null) object = Function.prototype;
+ var desc = Object.getOwnPropertyDescriptor(object, property);
+ if (desc === undefined) {
+ var parent = Object.getPrototypeOf(object);
+ if (parent === null) {
+ return undefined;
+ } else {
+ return get(parent, property, receiver);
+ }
+ } else if ("value" in desc) {
+ return desc.value;
+ } else {
+ var getter = desc.get;
+ if (getter === undefined) {
+ return undefined;
+ }
+ return getter.call(receiver);
+ }
+ };
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+
+ var _logger = _dereq_('../utils/logger.js');
+
+ var _logger2 = _interopRequireDefault(_logger);
+
+ var _browser = _dereq_('../utils/browser.js');
+
+ var _browser2 = _interopRequireDefault(_browser);
+
+ var _loader = _dereq_('./loader.js');
+
+ var _exception = _dereq_('../utils/exception.js');
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ function _possibleConstructorReturn(self, call) {
+ if (!self) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+ return call && (typeof call === "object" || typeof call === "function") ? call : self;
+ }
+
+ function _inherits(subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
+ }
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
+ }
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ /* fetch + stream IO loader. Currently working on chrome 43+.
+ * fetch provides a better alternative http API to XMLHttpRequest
+ *
+ * fetch spec https://fetch.spec.whatwg.org/
+ * stream spec https://streams.spec.whatwg.org/
+ */
+ var FetchStreamLoader = function (_BaseLoader) {
+ _inherits(FetchStreamLoader, _BaseLoader);
+
+ _createClass(FetchStreamLoader, null, [{
+ key: 'isSupported',
+ value: function isSupported() {
+ try {
+ // fetch + stream is broken on Microsoft Edge. Disable before build 15048.
+ // see https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8196907/
+ // Fixed in Jan 10, 2017. Build 15048+ removed from blacklist.
+ var isWorkWellEdge = _browser2.default.msedge && _browser2.default.version.minor >= 15048;
+ var browserNotBlacklisted = _browser2.default.msedge ? isWorkWellEdge : true;
+ return self.fetch && self.ReadableStream && browserNotBlacklisted;
+ } catch (e) {
+ return false;
+ }
+ }
+ }]);
+
+ function FetchStreamLoader(seekHandler, config) {
+ _classCallCheck(this, FetchStreamLoader);
+
+ var _this = _possibleConstructorReturn(this, (FetchStreamLoader.__proto__ || Object.getPrototypeOf(FetchStreamLoader)).call(this, 'fetch-stream-loader'));
+
+ _this.TAG = 'FetchStreamLoader';
+
+ _this._seekHandler = seekHandler;
+ _this._config = config;
+ _this._needStash = true;
+
+ _this._requestAbort = false;
+ _this._contentLength = null;
+ _this._receivedLength = 0;
+ return _this;
+ }
+
+ _createClass(FetchStreamLoader, [{
+ key: 'destroy',
+ value: function destroy() {
+ if (this.isWorking()) {
+ this.abort();
+ }
+ _get(FetchStreamLoader.prototype.__proto__ || Object.getPrototypeOf(FetchStreamLoader.prototype), 'destroy', this).call(this);
+ }
+ }, {
+ key: 'open',
+ value: function open(dataSource, range) {
+ var _this2 = this;
+
+ this._dataSource = dataSource;
+ this._range = range;
+
+ var sourceURL = dataSource.url;
+ if (this._config.reuseRedirectedURL && dataSource.redirectedURL != undefined) {
+ sourceURL = dataSource.redirectedURL;
+ }
+
+ var seekConfig = this._seekHandler.getConfig(sourceURL, range);
+
+ var headers = new self.Headers();
+
+ if (_typeof(seekConfig.headers) === 'object') {
+ var configHeaders = seekConfig.headers;
+ for (var key in configHeaders) {
+ if (configHeaders.hasOwnProperty(key)) {
+ headers.append(key, configHeaders[key]);
+ }
+ }
+ }
+
+ var params = {
+ method: 'GET',
+ headers: headers,
+ mode: 'cors',
+ cache: 'default',
+ // The default policy of Fetch API in the whatwg standard
+ // Safari incorrectly indicates 'no-referrer' as default policy, fuck it
+ referrerPolicy: 'no-referrer-when-downgrade'
+ };
+
+ // add additional headers
+ if (_typeof(this._config.headers) === 'object') {
+ for (var _key in this._config.headers) {
+ headers.append(_key, this._config.headers[_key]);
+ }
+ }
+
+ // cors is enabled by default
+ if (dataSource.cors === false) {
+ // no-cors means 'disregard cors policy', which can only be used in ServiceWorker
+ params.mode = 'same-origin';
+ }
+
+ // withCredentials is disabled by default
+ if (dataSource.withCredentials) {
+ params.credentials = 'include';
+ }
+
+ // referrerPolicy from config
+ if (dataSource.referrerPolicy) {
+ params.referrerPolicy = dataSource.referrerPolicy;
+ }
+
+ this._status = _loader.LoaderStatus.kConnecting;
+ self.fetch(seekConfig.url, params).then(function (res) {
+ if (_this2._requestAbort) {
+ _this2._requestAbort = false;
+ _this2._status = _loader.LoaderStatus.kIdle;
+ return;
+ }
+ if (res.ok && res.status >= 200 && res.status <= 299) {
+ if (res.url !== seekConfig.url) {
+ if (_this2._onURLRedirect) {
+ var redirectedURL = _this2._seekHandler.removeURLParameters(res.url);
+ _this2._onURLRedirect(redirectedURL);
+ }
+ }
+
+ var lengthHeader = res.headers.get('Content-Length');
+ if (lengthHeader != null) {
+ _this2._contentLength = parseInt(lengthHeader);
+ if (_this2._contentLength !== 0) {
+ if (_this2._onContentLengthKnown) {
+ _this2._onContentLengthKnown(_this2._contentLength);
+ }
+ }
+ }
+
+ return _this2._pump.call(_this2, res.body.getReader());
+ } else {
+ _this2._status = _loader.LoaderStatus.kError;
+ if (_this2._onError) {
+ _this2._onError(_loader.LoaderErrors.HTTP_STATUS_CODE_INVALID, {
+ code: res.status,
+ msg: res.statusText
+ });
+ } else {
+ throw new _exception.RuntimeException('FetchStreamLoader: Http code invalid, ' + res.status + ' ' + res.statusText);
+ }
+ }
+ }).catch(function (e) {
+ _this2._status = _loader.LoaderStatus.kError;
+ if (_this2._onError) {
+ _this2._onError(_loader.LoaderErrors.EXCEPTION, {
+ code: -1,
+ msg: e.message
+ });
+ } else {
+ throw e;
+ }
+ });
+ }
+ }, {
+ key: 'abort',
+ value: function abort() {
+ this._requestAbort = true;
+ }
+ }, {
+ key: '_pump',
+ value: function _pump(reader) {
+ var _this3 = this;
+
+ // ReadableStreamReader
+ return reader.read().then(function (result) {
+ if (result.done) {
+ // First check received length
+ if (_this3._contentLength !== null && _this3._receivedLength < _this3._contentLength) {
+ // Report Early-EOF
+ _this3._status = _loader.LoaderStatus.kError;
+ var type = _loader.LoaderErrors.EARLY_EOF;
+ var info = {
+ code: -1,
+ msg: 'Fetch stream meet Early-EOF'
+ };
+ if (_this3._onError) {
+ _this3._onError(type, info);
+ } else {
+ throw new _exception.RuntimeException(info.msg);
+ }
+ } else {
+ // OK. Download complete
+ _this3._status = _loader.LoaderStatus.kComplete;
+ if (_this3._onComplete) {
+ _this3._onComplete(_this3._range.from, _this3._range.from + _this3._receivedLength - 1);
+ }
+ }
+ } else {
+ if (_this3._requestAbort === true) {
+ _this3._requestAbort = false;
+ _this3._status = _loader.LoaderStatus.kComplete;
+ return reader.cancel();
+ }
+
+ _this3._status = _loader.LoaderStatus.kBuffering;
+
+ var chunk = result.value.buffer;
+ var byteStart = _this3._range.from + _this3._receivedLength;
+ _this3._receivedLength += chunk.byteLength;
+
+ if (_this3._onDataArrival) {
+ _this3._onDataArrival(chunk, byteStart, _this3._receivedLength);
+ }
+
+ _this3._pump(reader);
+ }
+ }).catch(function (e) {
+ if (e.code === 11 && _browser2.default.msedge) {
+ // InvalidStateError on Microsoft Edge
+ // Workaround: Edge may throw InvalidStateError after ReadableStreamReader.cancel() call
+ // Ignore the unknown exception.
+ // Related issue: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/11265202/
+ return;
+ }
+
+ _this3._status = _loader.LoaderStatus.kError;
+ var type = 0;
+ var info = null;
+
+ if ((e.code === 19 || e.message === 'network error') && ( // NETWORK_ERR
+ _this3._contentLength === null || _this3._contentLength !== null && _this3._receivedLength < _this3._contentLength)) {
+ type = _loader.LoaderErrors.EARLY_EOF;
+ info = {
+ code: e.code,
+ msg: 'Fetch stream meet Early-EOF'
+ };
+ } else {
+ type = _loader.LoaderErrors.EXCEPTION;
+ info = {
+ code: e.code,
+ msg: e.message
+ };
+ }
+
+ if (_this3._onError) {
+ _this3._onError(type, info);
+ } else {
+ throw new _exception.RuntimeException(info.msg);
+ }
+ });
+ }
+ }]);
+
+ return FetchStreamLoader;
+ }(_loader.BaseLoader);
+
+ exports.default = FetchStreamLoader;
+
+ }, {
+ "../utils/browser.js": 39,
+ "../utils/exception.js": 40,
+ "../utils/logger.js": 41,
+ "./loader.js": 24
+ }],
+ 23: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var _logger = _dereq_('../utils/logger.js');
+
+ var _logger2 = _interopRequireDefault(_logger);
+
+ var _speedSampler = _dereq_('./speed-sampler.js');
+
+ var _speedSampler2 = _interopRequireDefault(_speedSampler);
+
+ var _loader = _dereq_('./loader.js');
+
+ var _fetchStreamLoader = _dereq_('./fetch-stream-loader.js');
+
+ var _fetchStreamLoader2 = _interopRequireDefault(_fetchStreamLoader);
+
+ var _xhrMozChunkedLoader = _dereq_('./xhr-moz-chunked-loader.js');
+
+ var _xhrMozChunkedLoader2 = _interopRequireDefault(_xhrMozChunkedLoader);
+
+ var _xhrMsstreamLoader = _dereq_('./xhr-msstream-loader.js');
+
+ var _xhrMsstreamLoader2 = _interopRequireDefault(_xhrMsstreamLoader);
+
+ var _xhrRangeLoader = _dereq_('./xhr-range-loader.js');
+
+ var _xhrRangeLoader2 = _interopRequireDefault(_xhrRangeLoader);
+
+ var _websocketLoader = _dereq_('./websocket-loader.js');
+
+ var _websocketLoader2 = _interopRequireDefault(_websocketLoader);
+
+ var _rangeSeekHandler = _dereq_('./range-seek-handler.js');
+
+ var _rangeSeekHandler2 = _interopRequireDefault(_rangeSeekHandler);
+
+ var _paramSeekHandler = _dereq_('./param-seek-handler.js');
+
+ var _paramSeekHandler2 = _interopRequireDefault(_paramSeekHandler);
+
+ var _exception = _dereq_('../utils/exception.js');
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ /**
+ * DataSource: {
+ * url: string,
+ * filesize: number,
+ * cors: boolean,
+ * withCredentials: boolean
+ * }
+ *
+ */
+
+ // Manage IO Loaders
+ var IOController = function () {
+ function IOController(dataSource, config, extraData) {
+ _classCallCheck(this, IOController);
+
+ this.TAG = 'IOController';
+
+ this._config = config;
+ this._extraData = extraData;
+
+ this._stashInitialSize = 1024 * 384; // default initial size: 384KB
+ if (config.stashInitialSize != undefined && config.stashInitialSize > 0) {
+ // apply from config
+ this._stashInitialSize = config.stashInitialSize;
+ }
+
+ this._stashUsed = 0;
+ this._stashSize = this._stashInitialSize;
+ this._bufferSize = 1024 * 1024 * 3; // initial size: 3MB
+ this._stashBuffer = new ArrayBuffer(this._bufferSize);
+ this._stashByteStart = 0;
+ this._enableStash = true;
+ if (config.enableStashBuffer === false) {
+ this._enableStash = false;
+ }
+
+ this._loader = null;
+ this._loaderClass = null;
+ this._seekHandler = null;
+
+ this._dataSource = dataSource;
+ this._isWebSocketURL = /wss?:\/\/(.+?)/.test(dataSource.url);
+ this._refTotalLength = dataSource.filesize ? dataSource.filesize : null;
+ this._totalLength = this._refTotalLength;
+ this._fullRequestFlag = false;
+ this._currentRange = null;
+ this._redirectedURL = null;
+
+ this._speedNormalized = 0;
+ this._speedSampler = new _speedSampler2.default();
+ this._speedNormalizeList = [64, 128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096];
+
+ this._isEarlyEofReconnecting = false;
+
+ this._paused = false;
+ this._resumeFrom = 0;
+
+ this._onDataArrival = null;
+ this._onSeeked = null;
+ this._onError = null;
+ this._onComplete = null;
+ this._onRedirect = null;
+ this._onRecoveredEarlyEof = null;
+
+ this._selectSeekHandler();
+ this._selectLoader();
+ this._createLoader();
+ }
+
+ _createClass(IOController, [{
+ key: 'destroy',
+ value: function destroy() {
+ if (this._loader.isWorking()) {
+ this._loader.abort();
+ }
+ this._loader.destroy();
+ this._loader = null;
+ this._loaderClass = null;
+ this._dataSource = null;
+ this._stashBuffer = null;
+ this._stashUsed = this._stashSize = this._bufferSize = this._stashByteStart = 0;
+ this._currentRange = null;
+ this._speedSampler = null;
+
+ this._isEarlyEofReconnecting = false;
+
+ this._onDataArrival = null;
+ this._onSeeked = null;
+ this._onError = null;
+ this._onComplete = null;
+ this._onRedirect = null;
+ this._onRecoveredEarlyEof = null;
+
+ this._extraData = null;
+ }
+ }, {
+ key: 'isWorking',
+ value: function isWorking() {
+ return this._loader && this._loader.isWorking() && !this._paused;
+ }
+ }, {
+ key: 'isPaused',
+ value: function isPaused() {
+ return this._paused;
+ }
+ }, {
+ key: '_selectSeekHandler',
+ value: function _selectSeekHandler() {
+ var config = this._config;
+
+ if (config.seekType === 'range') {
+ this._seekHandler = new _rangeSeekHandler2.default(this._config.rangeLoadZeroStart);
+ } else if (config.seekType === 'param') {
+ var paramStart = config.seekParamStart || 'bstart';
+ var paramEnd = config.seekParamEnd || 'bend';
+
+ this._seekHandler = new _paramSeekHandler2.default(paramStart, paramEnd);
+ } else if (config.seekType === 'custom') {
+ if (typeof config.customSeekHandler !== 'function') {
+ throw new _exception.InvalidArgumentException('Custom seekType specified in config but invalid customSeekHandler!');
+ }
+ this._seekHandler = new config.customSeekHandler();
+ } else {
+ throw new _exception.InvalidArgumentException('Invalid seekType in config: ' + config.seekType);
+ }
+ }
+ }, {
+ key: '_selectLoader',
+ value: function _selectLoader() {
+ if (this._config.customLoader != null) {
+ this._loaderClass = this._config.customLoader;
+ } else if (this._isWebSocketURL) {
+ this._loaderClass = _websocketLoader2.default;
+ } else if (_fetchStreamLoader2.default.isSupported()) {
+ this._loaderClass = _fetchStreamLoader2.default;
+ } else if (_xhrMozChunkedLoader2.default.isSupported()) {
+ this._loaderClass = _xhrMozChunkedLoader2.default;
+ } else if (_xhrRangeLoader2.default.isSupported()) {
+ this._loaderClass = _xhrRangeLoader2.default;
+ } else {
+ throw new _exception.RuntimeException('Your browser doesn\'t support xhr with arraybuffer responseType!');
+ }
+ }
+ }, {
+ key: '_createLoader',
+ value: function _createLoader() {
+ this._loader = new this._loaderClass(this._seekHandler, this._config);
+ if (this._loader.needStashBuffer === false) {
+ this._enableStash = false;
+ }
+ this._loader.onContentLengthKnown = this._onContentLengthKnown.bind(this);
+ this._loader.onURLRedirect = this._onURLRedirect.bind(this);
+ this._loader.onDataArrival = this._onLoaderChunkArrival.bind(this);
+ this._loader.onComplete = this._onLoaderComplete.bind(this);
+ this._loader.onError = this._onLoaderError.bind(this);
+ }
+ }, {
+ key: 'open',
+ value: function open(optionalFrom) {
+ this._currentRange = {
+ from: 0,
+ to: -1
+ };
+ if (optionalFrom) {
+ this._currentRange.from = optionalFrom;
+ }
+
+ this._speedSampler.reset();
+ if (!optionalFrom) {
+ this._fullRequestFlag = true;
+ }
+
+ this._loader.open(this._dataSource, Object.assign({}, this._currentRange));
+ }
+ }, {
+ key: 'abort',
+ value: function abort() {
+ this._loader.abort();
+
+ if (this._paused) {
+ this._paused = false;
+ this._resumeFrom = 0;
+ }
+ }
+ }, {
+ key: 'pause',
+ value: function pause() {
+ if (this.isWorking()) {
+ this._loader.abort();
+
+ if (this._stashUsed !== 0) {
+ this._resumeFrom = this._stashByteStart;
+ this._currentRange.to = this._stashByteStart - 1;
+ } else {
+ this._resumeFrom = this._currentRange.to + 1;
+ }
+ this._stashUsed = 0;
+ this._stashByteStart = 0;
+ this._paused = true;
+ }
+ }
+ }, {
+ key: 'resume',
+ value: function resume() {
+ if (this._paused) {
+ this._paused = false;
+ var bytes = this._resumeFrom;
+ this._resumeFrom = 0;
+ this._internalSeek(bytes, true);
+ }
+ }
+ }, {
+ key: 'seek',
+ value: function seek(bytes) {
+ this._paused = false;
+ this._stashUsed = 0;
+ this._stashByteStart = 0;
+ this._internalSeek(bytes, true);
+ }
+
+ /**
+ * When seeking request is from media seeking, unconsumed stash data should be dropped
+ * However, stash data shouldn't be dropped if seeking requested from http reconnection
+ *
+ * @dropUnconsumed: Ignore and discard all unconsumed data in stash buffer
+ */
+
+ }, {
+ key: '_internalSeek',
+ value: function _internalSeek(bytes, dropUnconsumed) {
+ if (this._loader.isWorking()) {
+ this._loader.abort();
+ }
+
+ // dispatch & flush stash buffer before seek
+ this._flushStashBuffer(dropUnconsumed);
+
+ this._loader.destroy();
+ this._loader = null;
+
+ var requestRange = {
+ from: bytes,
+ to: -1
+ };
+ this._currentRange = {
+ from: requestRange.from,
+ to: -1
+ };
+
+ this._speedSampler.reset();
+ this._stashSize = this._stashInitialSize;
+ this._createLoader();
+ this._loader.open(this._dataSource, requestRange);
+
+ if (this._onSeeked) {
+ this._onSeeked();
+ }
+ }
+ }, {
+ key: 'updateUrl',
+ value: function updateUrl(url) {
+ if (!url || typeof url !== 'string' || url.length === 0) {
+ throw new _exception.InvalidArgumentException('Url must be a non-empty string!');
+ }
+
+ this._dataSource.url = url;
+
+ // TODO: replace with new url
+ }
+ }, {
+ key: '_expandBuffer',
+ value: function _expandBuffer(expectedBytes) {
+ var bufferNewSize = this._stashSize;
+ while (bufferNewSize + 1024 * 1024 * 1 < expectedBytes) {
+ bufferNewSize *= 2;
+ }
+
+ bufferNewSize += 1024 * 1024 * 1; // bufferSize = stashSize + 1MB
+ if (bufferNewSize === this._bufferSize) {
+ return;
+ }
+
+ var newBuffer = new ArrayBuffer(bufferNewSize);
+
+ if (this._stashUsed > 0) {
+ // copy existing data into new buffer
+ var stashOldArray = new Uint8Array(this._stashBuffer, 0, this._stashUsed);
+ var stashNewArray = new Uint8Array(newBuffer, 0, bufferNewSize);
+ stashNewArray.set(stashOldArray, 0);
+ }
+
+ this._stashBuffer = newBuffer;
+ this._bufferSize = bufferNewSize;
+ }
+ }, {
+ key: '_normalizeSpeed',
+ value: function _normalizeSpeed(input) {
+ var list = this._speedNormalizeList;
+ var last = list.length - 1;
+ var mid = 0;
+ var lbound = 0;
+ var ubound = last;
+
+ if (input < list[0]) {
+ return list[0];
+ }
+
+ // binary search
+ while (lbound <= ubound) {
+ mid = lbound + Math.floor((ubound - lbound) / 2);
+ if (mid === last || input >= list[mid] && input < list[mid + 1]) {
+ return list[mid];
+ } else if (list[mid] < input) {
+ lbound = mid + 1;
+ } else {
+ ubound = mid - 1;
+ }
+ }
+ }
+ }, {
+ key: '_adjustStashSize',
+ value: function _adjustStashSize(normalized) {
+ var stashSizeKB = 0;
+
+ if (this._config.isLive) {
+ // live stream: always use single normalized speed for size of stashSizeKB
+ stashSizeKB = normalized;
+ } else {
+ if (normalized < 512) {
+ stashSizeKB = normalized;
+ } else if (normalized >= 512 && normalized <= 1024) {
+ stashSizeKB = Math.floor(normalized * 1.5);
+ } else {
+ stashSizeKB = normalized * 2;
+ }
+ }
+
+ if (stashSizeKB > 8192) {
+ stashSizeKB = 8192;
+ }
+
+ var bufferSize = stashSizeKB * 1024 + 1024 * 1024 * 1; // stashSize + 1MB
+ if (this._bufferSize < bufferSize) {
+ this._expandBuffer(bufferSize);
+ }
+ this._stashSize = stashSizeKB * 1024;
+ }
+ }, {
+ key: '_dispatchChunks',
+ value: function _dispatchChunks(chunks, byteStart) {
+ this._currentRange.to = byteStart + chunks.byteLength - 1;
+ return this._onDataArrival(chunks, byteStart);
+ }
+ }, {
+ key: '_onURLRedirect',
+ value: function _onURLRedirect(redirectedURL) {
+ this._redirectedURL = redirectedURL;
+ if (this._onRedirect) {
+ this._onRedirect(redirectedURL);
+ }
+ }
+ }, {
+ key: '_onContentLengthKnown',
+ value: function _onContentLengthKnown(contentLength) {
+ if (contentLength && this._fullRequestFlag) {
+ this._totalLength = contentLength;
+ this._fullRequestFlag = false;
+ }
+ }
+ }, {
+ key: '_onLoaderChunkArrival',
+ value: function _onLoaderChunkArrival(chunk, byteStart, receivedLength) {
+ if (!this._onDataArrival) {
+ throw new _exception.IllegalStateException('IOController: No existing consumer (onDataArrival) callback!');
+ }
+ if (this._paused) {
+ return;
+ }
+ if (this._isEarlyEofReconnecting) {
+ // Auto-reconnect for EarlyEof succeed, notify to upper-layer by callback
+ this._isEarlyEofReconnecting = false;
+ if (this._onRecoveredEarlyEof) {
+ this._onRecoveredEarlyEof();
+ }
+ }
+
+ this._speedSampler.addBytes(chunk.byteLength);
+
+ // adjust stash buffer size according to network speed dynamically
+ var KBps = this._speedSampler.lastSecondKBps;
+ if (KBps !== 0) {
+ var normalized = this._normalizeSpeed(KBps);
+ if (this._speedNormalized !== normalized) {
+ this._speedNormalized = normalized;
+ this._adjustStashSize(normalized);
+ }
+ }
+
+ if (!this._enableStash) {
+ // disable stash
+ if (this._stashUsed === 0) {
+ // dispatch chunk directly to consumer;
+ // check ret value (consumed bytes) and stash unconsumed to stashBuffer
+ var consumed = this._dispatchChunks(chunk, byteStart);
+ if (consumed < chunk.byteLength) {
+ // unconsumed data remain.
+ var remain = chunk.byteLength - consumed;
+ if (remain > this._bufferSize) {
+ this._expandBuffer(remain);
+ }
+ var stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
+ stashArray.set(new Uint8Array(chunk, consumed), 0);
+ this._stashUsed += remain;
+ this._stashByteStart = byteStart + consumed;
+ }
+ } else {
+ // else: Merge chunk into stashBuffer, and dispatch stashBuffer to consumer.
+ if (this._stashUsed + chunk.byteLength > this._bufferSize) {
+ this._expandBuffer(this._stashUsed + chunk.byteLength);
+ }
+ var _stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
+ _stashArray.set(new Uint8Array(chunk), this._stashUsed);
+ this._stashUsed += chunk.byteLength;
+ var _consumed = this._dispatchChunks(this._stashBuffer.slice(0, this._stashUsed), this._stashByteStart);
+ if (_consumed < this._stashUsed && _consumed > 0) {
+ // unconsumed data remain
+ var remainArray = new Uint8Array(this._stashBuffer, _consumed);
+ _stashArray.set(remainArray, 0);
+ }
+ this._stashUsed -= _consumed;
+ this._stashByteStart += _consumed;
+ }
+ } else {
+ // enable stash
+ if (this._stashUsed === 0 && this._stashByteStart === 0) {
+ // seeked? or init chunk?
+ // This is the first chunk after seek action
+ this._stashByteStart = byteStart;
+ }
+ if (this._stashUsed + chunk.byteLength <= this._stashSize) {
+ // just stash
+ var _stashArray2 = new Uint8Array(this._stashBuffer, 0, this._stashSize);
+ _stashArray2.set(new Uint8Array(chunk), this._stashUsed);
+ this._stashUsed += chunk.byteLength;
+ } else {
+ // stashUsed + chunkSize > stashSize, size limit exceeded
+ var _stashArray3 = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
+ if (this._stashUsed > 0) {
+ // There're stash datas in buffer
+ // dispatch the whole stashBuffer, and stash remain data
+ // then append chunk to stashBuffer (stash)
+ var buffer = this._stashBuffer.slice(0, this._stashUsed);
+ var _consumed2 = this._dispatchChunks(buffer, this._stashByteStart);
+ if (_consumed2 < buffer.byteLength) {
+ if (_consumed2 > 0) {
+ var _remainArray = new Uint8Array(buffer, _consumed2);
+ _stashArray3.set(_remainArray, 0);
+ this._stashUsed = _remainArray.byteLength;
+ this._stashByteStart += _consumed2;
+ }
+ } else {
+ this._stashUsed = 0;
+ this._stashByteStart += _consumed2;
+ }
+ if (this._stashUsed + chunk.byteLength > this._bufferSize) {
+ this._expandBuffer(this._stashUsed + chunk.byteLength);
+ _stashArray3 = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
+ }
+ _stashArray3.set(new Uint8Array(chunk), this._stashUsed);
+ this._stashUsed += chunk.byteLength;
+ } else {
+ // stash buffer empty, but chunkSize > stashSize (oh, holy shit)
+ // dispatch chunk directly and stash remain data
+ var _consumed3 = this._dispatchChunks(chunk, byteStart);
+ if (_consumed3 < chunk.byteLength) {
+ var _remain = chunk.byteLength - _consumed3;
+ if (_remain > this._bufferSize) {
+ this._expandBuffer(_remain);
+ _stashArray3 = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
+ }
+ _stashArray3.set(new Uint8Array(chunk, _consumed3), 0);
+ this._stashUsed += _remain;
+ this._stashByteStart = byteStart + _consumed3;
+ }
+ }
+ }
+ }
+ }
+ }, {
+ key: '_flushStashBuffer',
+ value: function _flushStashBuffer(dropUnconsumed) {
+ if (this._stashUsed > 0) {
+ var buffer = this._stashBuffer.slice(0, this._stashUsed);
+ var consumed = this._dispatchChunks(buffer, this._stashByteStart);
+ var remain = buffer.byteLength - consumed;
+
+ if (consumed < buffer.byteLength) {
+ if (dropUnconsumed) {
+ _logger2.default.w(this.TAG, remain + ' bytes unconsumed data remain when flush buffer, dropped');
+ } else {
+ if (consumed > 0) {
+ var stashArray = new Uint8Array(this._stashBuffer, 0, this._bufferSize);
+ var remainArray = new Uint8Array(buffer, consumed);
+ stashArray.set(remainArray, 0);
+ this._stashUsed = remainArray.byteLength;
+ this._stashByteStart += consumed;
+ }
+ return 0;
+ }
+ }
+ this._stashUsed = 0;
+ this._stashByteStart = 0;
+ return remain;
+ }
+ return 0;
+ }
+ }, {
+ key: '_onLoaderComplete',
+ value: function _onLoaderComplete(from, to) {
+ // Force-flush stash buffer, and drop unconsumed data
+ this._flushStashBuffer(true);
+
+ if (this._onComplete) {
+ this._onComplete(this._extraData);
+ }
+ }
+ }, {
+ key: '_onLoaderError',
+ value: function _onLoaderError(type, data) {
+ _logger2.default.e(this.TAG, 'Loader error, code = ' + data.code + ', msg = ' + data.msg);
+
+ this._flushStashBuffer(false);
+
+ if (this._isEarlyEofReconnecting) {
+ // Auto-reconnect for EarlyEof failed, throw UnrecoverableEarlyEof error to upper-layer
+ this._isEarlyEofReconnecting = false;
+ type = _loader.LoaderErrors.UNRECOVERABLE_EARLY_EOF;
+ }
+
+ switch (type) {
+ case _loader.LoaderErrors.EARLY_EOF: {
+ if (!this._config.isLive) {
+ // Do internal http reconnect if not live stream
+ if (this._totalLength) {
+ var nextFrom = this._currentRange.to + 1;
+ if (nextFrom < this._totalLength) {
+ _logger2.default.w(this.TAG, 'Connection lost, trying reconnect...');
+ this._isEarlyEofReconnecting = true;
+ this._internalSeek(nextFrom, false);
+ }
+ return;
+ }
+ // else: We don't know totalLength, throw UnrecoverableEarlyEof
+ }
+ // live stream: throw UnrecoverableEarlyEof error to upper-layer
+ type = _loader.LoaderErrors.UNRECOVERABLE_EARLY_EOF;
+ break;
+ }
+ case _loader.LoaderErrors.UNRECOVERABLE_EARLY_EOF:
+ case _loader.LoaderErrors.CONNECTING_TIMEOUT:
+ case _loader.LoaderErrors.HTTP_STATUS_CODE_INVALID:
+ case _loader.LoaderErrors.EXCEPTION:
+ break;
+ }
+
+ if (this._onError) {
+ this._onError(type, data);
+ } else {
+ throw new _exception.RuntimeException('IOException: ' + data.msg);
+ }
+ }
+ }, {
+ key: 'status',
+ get: function get() {
+ return this._loader.status;
+ }
+ }, {
+ key: 'extraData',
+ get: function get() {
+ return this._extraData;
+ },
+ set: function set(data) {
+ this._extraData = data;
+ }
+
+ // prototype: function onDataArrival(chunks: ArrayBuffer, byteStart: number): number
+
+ }, {
+ key: 'onDataArrival',
+ get: function get() {
+ return this._onDataArrival;
+ },
+ set: function set(callback) {
+ this._onDataArrival = callback;
+ }
+ }, {
+ key: 'onSeeked',
+ get: function get() {
+ return this._onSeeked;
+ },
+ set: function set(callback) {
+ this._onSeeked = callback;
+ }
+
+ // prototype: function onError(type: number, info: {code: number, msg: string}): void
+
+ }, {
+ key: 'onError',
+ get: function get() {
+ return this._onError;
+ },
+ set: function set(callback) {
+ this._onError = callback;
+ }
+ }, {
+ key: 'onComplete',
+ get: function get() {
+ return this._onComplete;
+ },
+ set: function set(callback) {
+ this._onComplete = callback;
+ }
+ }, {
+ key: 'onRedirect',
+ get: function get() {
+ return this._onRedirect;
+ },
+ set: function set(callback) {
+ this._onRedirect = callback;
+ }
+ }, {
+ key: 'onRecoveredEarlyEof',
+ get: function get() {
+ return this._onRecoveredEarlyEof;
+ },
+ set: function set(callback) {
+ this._onRecoveredEarlyEof = callback;
+ }
+ }, {
+ key: 'currentURL',
+ get: function get() {
+ return this._dataSource.url;
+ }
+ }, {
+ key: 'hasRedirect',
+ get: function get() {
+ return this._redirectedURL != null || this._dataSource.redirectedURL != undefined;
+ }
+ }, {
+ key: 'currentRedirectedURL',
+ get: function get() {
+ return this._redirectedURL || this._dataSource.redirectedURL;
+ }
+
+ // in KB/s
+
+ }, {
+ key: 'currentSpeed',
+ get: function get() {
+ if (this._loaderClass === _xhrRangeLoader2.default) {
+ // SpeedSampler is inaccuracy if loader is RangeLoader
+ return this._loader.currentSpeed;
+ }
+ return this._speedSampler.lastSecondKBps;
+ }
+ }, {
+ key: 'loaderType',
+ get: function get() {
+ return this._loader.type;
+ }
+ }]);
+
+ return IOController;
+ }();
+
+ exports.default = IOController;
+
+ }, {
+ "../utils/exception.js": 40,
+ "../utils/logger.js": 41,
+ "./fetch-stream-loader.js": 22,
+ "./loader.js": 24,
+ "./param-seek-handler.js": 25,
+ "./range-seek-handler.js": 26,
+ "./speed-sampler.js": 27,
+ "./websocket-loader.js": 28,
+ "./xhr-moz-chunked-loader.js": 29,
+ "./xhr-msstream-loader.js": 30,
+ "./xhr-range-loader.js": 31
+ }],
+ 24: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.BaseLoader = exports.LoaderErrors = exports.LoaderStatus = undefined;
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var _exception = _dereq_('../utils/exception.js');
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ var LoaderStatus = exports.LoaderStatus = {
+ kIdle: 0,
+ kConnecting: 1,
+ kBuffering: 2,
+ kError: 3,
+ kComplete: 4
+ };
+
+ var LoaderErrors = exports.LoaderErrors = {
+ OK: 'OK',
+ EXCEPTION: 'Exception',
+ HTTP_STATUS_CODE_INVALID: 'HttpStatusCodeInvalid',
+ CONNECTING_TIMEOUT: 'ConnectingTimeout',
+ EARLY_EOF: 'EarlyEof',
+ UNRECOVERABLE_EARLY_EOF: 'UnrecoverableEarlyEof'
+ };
+
+ /* Loader has callbacks which have following prototypes:
+ * function onContentLengthKnown(contentLength: number): void
+ * function onURLRedirect(url: string): void
+ * function onDataArrival(chunk: ArrayBuffer, byteStart: number, receivedLength: number): void
+ * function onError(errorType: number, errorInfo: {code: number, msg: string}): void
+ * function onComplete(rangeFrom: number, rangeTo: number): void
+ */
+
+ var BaseLoader = exports.BaseLoader = function () {
+ function BaseLoader(typeName) {
+ _classCallCheck(this, BaseLoader);
+
+ this._type = typeName || 'undefined';
+ this._status = LoaderStatus.kIdle;
+ this._needStash = false;
+ // callbacks
+ this._onContentLengthKnown = null;
+ this._onURLRedirect = null;
+ this._onDataArrival = null;
+ this._onError = null;
+ this._onComplete = null;
+ }
+
+ _createClass(BaseLoader, [{
+ key: 'destroy',
+ value: function destroy() {
+ this._status = LoaderStatus.kIdle;
+ this._onContentLengthKnown = null;
+ this._onURLRedirect = null;
+ this._onDataArrival = null;
+ this._onError = null;
+ this._onComplete = null;
+ }
+ }, {
+ key: 'isWorking',
+ value: function isWorking() {
+ return this._status === LoaderStatus.kConnecting || this._status === LoaderStatus.kBuffering;
+ }
+ }, {
+ key: 'open',
+
+
+ // pure virtual
+ value: function open(dataSource, range) {
+ throw new _exception.NotImplementedException('Unimplemented abstract function!');
+ }
+ }, {
+ key: 'abort',
+ value: function abort() {
+ throw new _exception.NotImplementedException('Unimplemented abstract function!');
+ }
+ }, {
+ key: 'type',
+ get: function get() {
+ return this._type;
+ }
+ }, {
+ key: 'status',
+ get: function get() {
+ return this._status;
+ }
+ }, {
+ key: 'needStashBuffer',
+ get: function get() {
+ return this._needStash;
+ }
+ }, {
+ key: 'onContentLengthKnown',
+ get: function get() {
+ return this._onContentLengthKnown;
+ },
+ set: function set(callback) {
+ this._onContentLengthKnown = callback;
+ }
+ }, {
+ key: 'onURLRedirect',
+ get: function get() {
+ return this._onURLRedirect;
+ },
+ set: function set(callback) {
+ this._onURLRedirect = callback;
+ }
+ }, {
+ key: 'onDataArrival',
+ get: function get() {
+ return this._onDataArrival;
+ },
+ set: function set(callback) {
+ this._onDataArrival = callback;
+ }
+ }, {
+ key: 'onError',
+ get: function get() {
+ return this._onError;
+ },
+ set: function set(callback) {
+ this._onError = callback;
+ }
+ }, {
+ key: 'onComplete',
+ get: function get() {
+ return this._onComplete;
+ },
+ set: function set(callback) {
+ this._onComplete = callback;
+ }
+ }]);
+
+ return BaseLoader;
+ }();
+
+ }, {
+ "../utils/exception.js": 40
+ }],
+ 25: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var ParamSeekHandler = function () {
+ function ParamSeekHandler(paramStart, paramEnd) {
+ _classCallCheck(this, ParamSeekHandler);
+
+ this._startName = paramStart;
+ this._endName = paramEnd;
+ }
+
+ _createClass(ParamSeekHandler, [{
+ key: 'getConfig',
+ value: function getConfig(baseUrl, range) {
+ var url = baseUrl;
+
+ if (range.from !== 0 || range.to !== -1) {
+ var needAnd = true;
+ if (url.indexOf('?') === -1) {
+ url += '?';
+ needAnd = false;
+ }
+
+ if (needAnd) {
+ url += '&';
+ }
+
+ url += this._startName + '=' + range.from.toString();
+
+ if (range.to !== -1) {
+ url += '&' + this._endName + '=' + range.to.toString();
+ }
+ }
+
+ return {
+ url: url,
+ headers: {}
+ };
+ }
+ }, {
+ key: 'removeURLParameters',
+ value: function removeURLParameters(seekedURL) {
+ var baseURL = seekedURL.split('?')[0];
+ var params = undefined;
+
+ var queryIndex = seekedURL.indexOf('?');
+ if (queryIndex !== -1) {
+ params = seekedURL.substring(queryIndex + 1);
+ }
+
+ var resultParams = '';
+
+ if (params != undefined && params.length > 0) {
+ var pairs = params.split('&');
+
+ for (var i = 0; i < pairs.length; i++) {
+ var pair = pairs[i].split('=');
+ var requireAnd = i > 0;
+
+ if (pair[0] !== this._startName && pair[0] !== this._endName) {
+ if (requireAnd) {
+ resultParams += '&';
+ }
+ resultParams += pairs[i];
+ }
+ }
+ }
+
+ return resultParams.length === 0 ? baseURL : baseURL + '?' + resultParams;
+ }
+ }]);
+
+ return ParamSeekHandler;
+ }();
+
+ exports.default = ParamSeekHandler;
+
+ }, {}],
+ 26: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var RangeSeekHandler = function () {
+ function RangeSeekHandler(zeroStart) {
+ _classCallCheck(this, RangeSeekHandler);
+
+ this._zeroStart = zeroStart || false;
+ }
+
+ _createClass(RangeSeekHandler, [{
+ key: 'getConfig',
+ value: function getConfig(url, range) {
+ var headers = {};
+
+ if (range.from !== 0 || range.to !== -1) {
+ var param = void 0;
+ if (range.to !== -1) {
+ param = 'bytes=' + range.from.toString() + '-' + range.to.toString();
+ } else {
+ param = 'bytes=' + range.from.toString() + '-';
+ }
+ headers['Range'] = param;
+ } else if (this._zeroStart) {
+ headers['Range'] = 'bytes=0-';
+ }
+
+ return {
+ url: url,
+ headers: headers
+ };
+ }
+ }, {
+ key: 'removeURLParameters',
+ value: function removeURLParameters(seekedURL) {
+ return seekedURL;
+ }
+ }]);
+
+ return RangeSeekHandler;
+ }();
+
+ exports.default = RangeSeekHandler;
+
+ }, {}],
+ 27: [function (_dereq_, module, exports) {
+ "use strict";
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ // Utility class to calculate realtime network I/O speed
+ var SpeedSampler = function () {
+ function SpeedSampler() {
+ _classCallCheck(this, SpeedSampler);
+
+ // milliseconds
+ this._firstCheckpoint = 0;
+ this._lastCheckpoint = 0;
+ this._intervalBytes = 0;
+ this._totalBytes = 0;
+ this._lastSecondBytes = 0;
+
+ // compatibility detection
+ if (self.performance && self.performance.now) {
+ this._now = self.performance.now.bind(self.performance);
+ } else {
+ this._now = Date.now;
+ }
+ }
+
+ _createClass(SpeedSampler, [{
+ key: "reset",
+ value: function reset() {
+ this._firstCheckpoint = this._lastCheckpoint = 0;
+ this._totalBytes = this._intervalBytes = 0;
+ this._lastSecondBytes = 0;
+ }
+ }, {
+ key: "addBytes",
+ value: function addBytes(bytes) {
+ if (this._firstCheckpoint === 0) {
+ this._firstCheckpoint = this._now();
+ this._lastCheckpoint = this._firstCheckpoint;
+ this._intervalBytes += bytes;
+ this._totalBytes += bytes;
+ } else if (this._now() - this._lastCheckpoint < 1000) {
+ this._intervalBytes += bytes;
+ this._totalBytes += bytes;
+ } else {
+ // duration >= 1000
+ this._lastSecondBytes = this._intervalBytes;
+ this._intervalBytes = bytes;
+ this._totalBytes += bytes;
+ this._lastCheckpoint = this._now();
+ }
+ }
+ }, {
+ key: "currentKBps",
+ get: function get() {
+ this.addBytes(0);
+
+ var durationSeconds = (this._now() - this._lastCheckpoint) / 1000;
+ if (durationSeconds == 0) durationSeconds = 1;
+ return this._intervalBytes / durationSeconds / 1024;
+ }
+ }, {
+ key: "lastSecondKBps",
+ get: function get() {
+ this.addBytes(0);
+
+ if (this._lastSecondBytes !== 0) {
+ return this._lastSecondBytes / 1024;
+ } else {
+ // lastSecondBytes === 0
+ if (this._now() - this._lastCheckpoint >= 500) {
+ // if time interval since last checkpoint has exceeded 500ms
+ // the speed is nearly accurate
+ return this.currentKBps;
+ } else {
+ // We don't know
+ return 0;
+ }
+ }
+ }
+ }, {
+ key: "averageKBps",
+ get: function get() {
+ var durationSeconds = (this._now() - this._firstCheckpoint) / 1000;
+ return this._totalBytes / durationSeconds / 1024;
+ }
+ }]);
+
+ return SpeedSampler;
+ }();
+
+ exports.default = SpeedSampler;
+
+ }, {}],
+ 28: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _get = function get(object, property, receiver) {
+ if (object === null) object = Function.prototype;
+ var desc = Object.getOwnPropertyDescriptor(object, property);
+ if (desc === undefined) {
+ var parent = Object.getPrototypeOf(object);
+ if (parent === null) {
+ return undefined;
+ } else {
+ return get(parent, property, receiver);
+ }
+ } else if ("value" in desc) {
+ return desc.value;
+ } else {
+ var getter = desc.get;
+ if (getter === undefined) {
+ return undefined;
+ }
+ return getter.call(receiver);
+ }
+ };
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+
+ var _logger = _dereq_('../utils/logger.js');
+
+ var _logger2 = _interopRequireDefault(_logger);
+
+ var _loader = _dereq_('./loader.js');
+
+ var _exception = _dereq_('../utils/exception.js');
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ function _possibleConstructorReturn(self, call) {
+ if (!self) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+ return call && (typeof call === "object" || typeof call === "function") ? call : self;
+ }
+
+ function _inherits(subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
+ }
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
+ }
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ // For FLV over WebSocket live stream
+ var WebSocketLoader = function (_BaseLoader) {
+ _inherits(WebSocketLoader, _BaseLoader);
+
+ _createClass(WebSocketLoader, null, [{
+ key: 'isSupported',
+ value: function isSupported() {
+ try {
+ return typeof self.WebSocket !== 'undefined';
+ } catch (e) {
+ return false;
+ }
+ }
+ }]);
+
+ function WebSocketLoader() {
+ _classCallCheck(this, WebSocketLoader);
+
+ var _this = _possibleConstructorReturn(this, (WebSocketLoader.__proto__ || Object.getPrototypeOf(WebSocketLoader)).call(this, 'websocket-loader'));
+
+ _this.TAG = 'WebSocketLoader';
+
+ _this._needStash = true;
+
+ _this._ws = null;
+ _this._requestAbort = false;
+ _this._receivedLength = 0;
+ return _this;
+ }
+
+ _createClass(WebSocketLoader, [{
+ key: 'destroy',
+ value: function destroy() {
+ if (this._ws) {
+ this.abort();
+ }
+ _get(WebSocketLoader.prototype.__proto__ || Object.getPrototypeOf(WebSocketLoader.prototype), 'destroy', this).call(this);
+ }
+ }, {
+ key: 'open',
+ value: function open(dataSource) {
+ try {
+ var ws = this._ws = new self.WebSocket(dataSource.url);
+ ws.binaryType = 'arraybuffer';
+ ws.onopen = this._onWebSocketOpen.bind(this);
+ ws.onclose = this._onWebSocketClose.bind(this);
+ ws.onmessage = this._onWebSocketMessage.bind(this);
+ ws.onerror = this._onWebSocketError.bind(this);
+
+ this._status = _loader.LoaderStatus.kConnecting;
+ } catch (e) {
+ this._status = _loader.LoaderStatus.kError;
+
+ var info = {
+ code: e.code,
+ msg: e.message
+ };
+
+ if (this._onError) {
+ this._onError(_loader.LoaderErrors.EXCEPTION, info);
+ } else {
+ throw new _exception.RuntimeException(info.msg);
+ }
+ }
+ }
+ }, {
+ key: 'abort',
+ value: function abort() {
+ var ws = this._ws;
+ if (ws && (ws.readyState === 0 || ws.readyState === 1)) {
+ // CONNECTING || OPEN
+ this._requestAbort = true;
+ ws.close();
+ }
+
+ this._ws = null;
+ this._status = _loader.LoaderStatus.kComplete;
+ }
+ }, {
+ key: '_onWebSocketOpen',
+ value: function _onWebSocketOpen(e) {
+ this._status = _loader.LoaderStatus.kBuffering;
+ }
+ }, {
+ key: '_onWebSocketClose',
+ value: function _onWebSocketClose(e) {
+ if (this._requestAbort === true) {
+ this._requestAbort = false;
+ return;
+ }
+
+ this._status = _loader.LoaderStatus.kComplete;
+
+ if (this._onComplete) {
+ this._onComplete(0, this._receivedLength - 1);
+ }
+ }
+ }, {
+ key: '_onWebSocketMessage',
+ value: function _onWebSocketMessage(e) {
+ var _this2 = this;
+
+ if (e.data instanceof ArrayBuffer) {
+ this._dispatchArrayBuffer(e.data);
+ } else if (e.data instanceof Blob) {
+ var reader = new FileReader();
+ reader.onload = function () {
+ _this2._dispatchArrayBuffer(reader.result);
+ };
+ reader.readAsArrayBuffer(e.data);
+ } else {
+ this._status = _loader.LoaderStatus.kError;
+ var info = {
+ code: -1,
+ msg: 'Unsupported WebSocket message type: ' + e.data.constructor.name
+ };
+
+ if (this._onError) {
+ this._onError(_loader.LoaderErrors.EXCEPTION, info);
+ } else {
+ throw new _exception.RuntimeException(info.msg);
+ }
+ }
+ }
+ }, {
+ key: '_dispatchArrayBuffer',
+ value: function _dispatchArrayBuffer(arraybuffer) {
+ var chunk = arraybuffer;
+ var byteStart = this._receivedLength;
+ this._receivedLength += chunk.byteLength;
+
+ if (this._onDataArrival) {
+ this._onDataArrival(chunk, byteStart, this._receivedLength);
+ }
+ }
+ }, {
+ key: '_onWebSocketError',
+ value: function _onWebSocketError(e) {
+ this._status = _loader.LoaderStatus.kError;
+
+ var info = {
+ code: e.code,
+ msg: e.message
+ };
+
+ if (this._onError) {
+ this._onError(_loader.LoaderErrors.EXCEPTION, info);
+ } else {
+ throw new _exception.RuntimeException(info.msg);
+ }
+ }
+ }]);
+
+ return WebSocketLoader;
+ }(_loader.BaseLoader);
+
+ exports.default = WebSocketLoader;
+
+ }, {
+ "../utils/exception.js": 40,
+ "../utils/logger.js": 41,
+ "./loader.js": 24
+ }],
+ 29: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
+ return typeof obj;
+ } : function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+ };
+
+ var _get = function get(object, property, receiver) {
+ if (object === null) object = Function.prototype;
+ var desc = Object.getOwnPropertyDescriptor(object, property);
+ if (desc === undefined) {
+ var parent = Object.getPrototypeOf(object);
+ if (parent === null) {
+ return undefined;
+ } else {
+ return get(parent, property, receiver);
+ }
+ } else if ("value" in desc) {
+ return desc.value;
+ } else {
+ var getter = desc.get;
+ if (getter === undefined) {
+ return undefined;
+ }
+ return getter.call(receiver);
+ }
+ };
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+
+ var _logger = _dereq_('../utils/logger.js');
+
+ var _logger2 = _interopRequireDefault(_logger);
+
+ var _loader = _dereq_('./loader.js');
+
+ var _exception = _dereq_('../utils/exception.js');
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ function _possibleConstructorReturn(self, call) {
+ if (!self) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+ return call && (typeof call === "object" || typeof call === "function") ? call : self;
+ }
+
+ function _inherits(subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
+ }
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
+ }
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ // For FireFox browser which supports `xhr.responseType = 'moz-chunked-arraybuffer'`
+ var MozChunkedLoader = function (_BaseLoader) {
+ _inherits(MozChunkedLoader, _BaseLoader);
+
+ _createClass(MozChunkedLoader, null, [{
+ key: 'isSupported',
+ value: function isSupported() {
+ try {
+ var xhr = new XMLHttpRequest();
+ // Firefox 37- requires .open() to be called before setting responseType
+ xhr.open('GET', 'https://example.com', true);
+ xhr.responseType = 'moz-chunked-arraybuffer';
+ return xhr.responseType === 'moz-chunked-arraybuffer';
+ } catch (e) {
+ _logger2.default.w('MozChunkedLoader', e.message);
+ return false;
+ }
+ }
+ }]);
+
+ function MozChunkedLoader(seekHandler, config) {
+ _classCallCheck(this, MozChunkedLoader);
+
+ var _this = _possibleConstructorReturn(this, (MozChunkedLoader.__proto__ || Object.getPrototypeOf(MozChunkedLoader)).call(this, 'xhr-moz-chunked-loader'));
+
+ _this.TAG = 'MozChunkedLoader';
+
+ _this._seekHandler = seekHandler;
+ _this._config = config;
+ _this._needStash = true;
+
+ _this._xhr = null;
+ _this._requestAbort = false;
+ _this._contentLength = null;
+ _this._receivedLength = 0;
+ return _this;
+ }
+
+ _createClass(MozChunkedLoader, [{
+ key: 'destroy',
+ value: function destroy() {
+ if (this.isWorking()) {
+ this.abort();
+ }
+ if (this._xhr) {
+ this._xhr.onreadystatechange = null;
+ this._xhr.onprogress = null;
+ this._xhr.onloadend = null;
+ this._xhr.onerror = null;
+ this._xhr = null;
+ }
+ _get(MozChunkedLoader.prototype.__proto__ || Object.getPrototypeOf(MozChunkedLoader.prototype), 'destroy', this).call(this);
+ }
+ }, {
+ key: 'open',
+ value: function open(dataSource, range) {
+ this._dataSource = dataSource;
+ this._range = range;
+
+ var sourceURL = dataSource.url;
+ if (this._config.reuseRedirectedURL && dataSource.redirectedURL != undefined) {
+ sourceURL = dataSource.redirectedURL;
+ }
+
+ var seekConfig = this._seekHandler.getConfig(sourceURL, range);
+ this._requestURL = seekConfig.url;
+
+ var xhr = this._xhr = new XMLHttpRequest();
+ xhr.open('GET', seekConfig.url, true);
+ xhr.responseType = 'moz-chunked-arraybuffer';
+ xhr.onreadystatechange = this._onReadyStateChange.bind(this);
+ xhr.onprogress = this._onProgress.bind(this);
+ xhr.onloadend = this._onLoadEnd.bind(this);
+ xhr.onerror = this._onXhrError.bind(this);
+
+ // cors is auto detected and enabled by xhr
+
+ // withCredentials is disabled by default
+ if (dataSource.withCredentials) {
+ xhr.withCredentials = true;
+ }
+
+ if (_typeof(seekConfig.headers) === 'object') {
+ var headers = seekConfig.headers;
+
+ for (var key in headers) {
+ if (headers.hasOwnProperty(key)) {
+ xhr.setRequestHeader(key, headers[key]);
+ }
+ }
+ }
+
+ // add additional headers
+ if (_typeof(this._config.headers) === 'object') {
+ var _headers = this._config.headers;
+
+ for (var _key in _headers) {
+ if (_headers.hasOwnProperty(_key)) {
+ xhr.setRequestHeader(_key, _headers[_key]);
+ }
+ }
+ }
+
+ this._status = _loader.LoaderStatus.kConnecting;
+ xhr.send();
+ }
+ }, {
+ key: 'abort',
+ value: function abort() {
+ this._requestAbort = true;
+ if (this._xhr) {
+ this._xhr.abort();
+ }
+ this._status = _loader.LoaderStatus.kComplete;
+ }
+ }, {
+ key: '_onReadyStateChange',
+ value: function _onReadyStateChange(e) {
+ var xhr = e.target;
+
+ if (xhr.readyState === 2) {
+ // HEADERS_RECEIVED
+ if (xhr.responseURL != undefined && xhr.responseURL !== this._requestURL) {
+ if (this._onURLRedirect) {
+ var redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL);
+ this._onURLRedirect(redirectedURL);
+ }
+ }
+
+ if (xhr.status !== 0 && (xhr.status < 200 || xhr.status > 299)) {
+ this._status = _loader.LoaderStatus.kError;
+ if (this._onError) {
+ this._onError(_loader.LoaderErrors.HTTP_STATUS_CODE_INVALID, {
+ code: xhr.status,
+ msg: xhr.statusText
+ });
+ } else {
+ throw new _exception.RuntimeException('MozChunkedLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText);
+ }
+ } else {
+ this._status = _loader.LoaderStatus.kBuffering;
+ }
+ }
+ }
+ }, {
+ key: '_onProgress',
+ value: function _onProgress(e) {
+ if (this._status === _loader.LoaderStatus.kError) {
+ // Ignore error response
+ return;
+ }
+
+ if (this._contentLength === null) {
+ if (e.total !== null && e.total !== 0) {
+ this._contentLength = e.total;
+ if (this._onContentLengthKnown) {
+ this._onContentLengthKnown(this._contentLength);
+ }
+ }
+ }
+
+ var chunk = e.target.response;
+ var byteStart = this._range.from + this._receivedLength;
+ this._receivedLength += chunk.byteLength;
+
+ if (this._onDataArrival) {
+ this._onDataArrival(chunk, byteStart, this._receivedLength);
+ }
+ }
+ }, {
+ key: '_onLoadEnd',
+ value: function _onLoadEnd(e) {
+ if (this._requestAbort === true) {
+ this._requestAbort = false;
+ return;
+ } else if (this._status === _loader.LoaderStatus.kError) {
+ return;
+ }
+
+ this._status = _loader.LoaderStatus.kComplete;
+ if (this._onComplete) {
+ this._onComplete(this._range.from, this._range.from + this._receivedLength - 1);
+ }
+ }
+ }, {
+ key: '_onXhrError',
+ value: function _onXhrError(e) {
+ this._status = _loader.LoaderStatus.kError;
+ var type = 0;
+ var info = null;
+
+ if (this._contentLength && e.loaded < this._contentLength) {
+ type = _loader.LoaderErrors.EARLY_EOF;
+ info = {
+ code: -1,
+ msg: 'Moz-Chunked stream meet Early-Eof'
+ };
+ } else {
+ type = _loader.LoaderErrors.EXCEPTION;
+ info = {
+ code: -1,
+ msg: e.constructor.name + ' ' + e.type
+ };
+ }
+
+ if (this._onError) {
+ this._onError(type, info);
+ } else {
+ throw new _exception.RuntimeException(info.msg);
+ }
+ }
+ }]);
+
+ return MozChunkedLoader;
+ }(_loader.BaseLoader);
+
+ exports.default = MozChunkedLoader;
+
+ }, {
+ "../utils/exception.js": 40,
+ "../utils/logger.js": 41,
+ "./loader.js": 24
+ }],
+ 30: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
+ return typeof obj;
+ } : function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+ };
+
+ var _get = function get(object, property, receiver) {
+ if (object === null) object = Function.prototype;
+ var desc = Object.getOwnPropertyDescriptor(object, property);
+ if (desc === undefined) {
+ var parent = Object.getPrototypeOf(object);
+ if (parent === null) {
+ return undefined;
+ } else {
+ return get(parent, property, receiver);
+ }
+ } else if ("value" in desc) {
+ return desc.value;
+ } else {
+ var getter = desc.get;
+ if (getter === undefined) {
+ return undefined;
+ }
+ return getter.call(receiver);
+ }
+ };
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+
+ var _logger = _dereq_('../utils/logger.js');
+
+ var _logger2 = _interopRequireDefault(_logger);
+
+ var _loader = _dereq_('./loader.js');
+
+ var _exception = _dereq_('../utils/exception.js');
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ function _possibleConstructorReturn(self, call) {
+ if (!self) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+ return call && (typeof call === "object" || typeof call === "function") ? call : self;
+ }
+
+ function _inherits(subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
+ }
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
+ }
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ /* Notice: ms-stream may cause IE/Edge browser crash if seek too frequently!!!
+ * The browser may crash in wininet.dll. Disable for now.
+ *
+ * For IE11/Edge browser by microsoft which supports `xhr.responseType = 'ms-stream'`
+ * Notice that ms-stream API sucks. The buffer is always expanding along with downloading.
+ *
+ * We need to abort the xhr if buffer size exceeded limit size (e.g. 16 MiB), then do reconnect.
+ * in order to release previous ArrayBuffer to avoid memory leak
+ *
+ * Otherwise, the ArrayBuffer will increase to a terrible size that equals final file size.
+ */
+ var MSStreamLoader = function (_BaseLoader) {
+ _inherits(MSStreamLoader, _BaseLoader);
+
+ _createClass(MSStreamLoader, null, [{
+ key: 'isSupported',
+ value: function isSupported() {
+ try {
+ if (typeof self.MSStream === 'undefined' || typeof self.MSStreamReader === 'undefined') {
+ return false;
+ }
+
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', 'https://example.com', true);
+ xhr.responseType = 'ms-stream';
+ return xhr.responseType === 'ms-stream';
+ } catch (e) {
+ _logger2.default.w('MSStreamLoader', e.message);
+ return false;
+ }
+ }
+ }]);
+
+ function MSStreamLoader(seekHandler, config) {
+ _classCallCheck(this, MSStreamLoader);
+
+ var _this = _possibleConstructorReturn(this, (MSStreamLoader.__proto__ || Object.getPrototypeOf(MSStreamLoader)).call(this, 'xhr-msstream-loader'));
+
+ _this.TAG = 'MSStreamLoader';
+
+ _this._seekHandler = seekHandler;
+ _this._config = config;
+ _this._needStash = true;
+
+ _this._xhr = null;
+ _this._reader = null; // MSStreamReader
+
+ _this._totalRange = null;
+ _this._currentRange = null;
+
+ _this._currentRequestURL = null;
+ _this._currentRedirectedURL = null;
+
+ _this._contentLength = null;
+ _this._receivedLength = 0;
+
+ _this._bufferLimit = 16 * 1024 * 1024; // 16MB
+ _this._lastTimeBufferSize = 0;
+ _this._isReconnecting = false;
+ return _this;
+ }
+
+ _createClass(MSStreamLoader, [{
+ key: 'destroy',
+ value: function destroy() {
+ if (this.isWorking()) {
+ this.abort();
+ }
+ if (this._reader) {
+ this._reader.onprogress = null;
+ this._reader.onload = null;
+ this._reader.onerror = null;
+ this._reader = null;
+ }
+ if (this._xhr) {
+ this._xhr.onreadystatechange = null;
+ this._xhr = null;
+ }
+ _get(MSStreamLoader.prototype.__proto__ || Object.getPrototypeOf(MSStreamLoader.prototype), 'destroy', this).call(this);
+ }
+ }, {
+ key: 'open',
+ value: function open(dataSource, range) {
+ this._internalOpen(dataSource, range, false);
+ }
+ }, {
+ key: '_internalOpen',
+ value: function _internalOpen(dataSource, range, isSubrange) {
+ this._dataSource = dataSource;
+
+ if (!isSubrange) {
+ this._totalRange = range;
+ } else {
+ this._currentRange = range;
+ }
+
+ var sourceURL = dataSource.url;
+ if (this._config.reuseRedirectedURL) {
+ if (this._currentRedirectedURL != undefined) {
+ sourceURL = this._currentRedirectedURL;
+ } else if (dataSource.redirectedURL != undefined) {
+ sourceURL = dataSource.redirectedURL;
+ }
+ }
+
+ var seekConfig = this._seekHandler.getConfig(sourceURL, range);
+ this._currentRequestURL = seekConfig.url;
+
+ var reader = this._reader = new self.MSStreamReader();
+ reader.onprogress = this._msrOnProgress.bind(this);
+ reader.onload = this._msrOnLoad.bind(this);
+ reader.onerror = this._msrOnError.bind(this);
+
+ var xhr = this._xhr = new XMLHttpRequest();
+ xhr.open('GET', seekConfig.url, true);
+ xhr.responseType = 'ms-stream';
+ xhr.onreadystatechange = this._xhrOnReadyStateChange.bind(this);
+ xhr.onerror = this._xhrOnError.bind(this);
+
+ if (dataSource.withCredentials) {
+ xhr.withCredentials = true;
+ }
+
+ if (_typeof(seekConfig.headers) === 'object') {
+ var headers = seekConfig.headers;
+
+ for (var key in headers) {
+ if (headers.hasOwnProperty(key)) {
+ xhr.setRequestHeader(key, headers[key]);
+ }
+ }
+ }
+
+ // add additional headers
+ if (_typeof(this._config.headers) === 'object') {
+ var _headers = this._config.headers;
+
+ for (var _key in _headers) {
+ if (_headers.hasOwnProperty(_key)) {
+ xhr.setRequestHeader(_key, _headers[_key]);
+ }
+ }
+ }
+
+ if (this._isReconnecting) {
+ this._isReconnecting = false;
+ } else {
+ this._status = _loader.LoaderStatus.kConnecting;
+ }
+ xhr.send();
+ }
+ }, {
+ key: 'abort',
+ value: function abort() {
+ this._internalAbort();
+ this._status = _loader.LoaderStatus.kComplete;
+ }
+ }, {
+ key: '_internalAbort',
+ value: function _internalAbort() {
+ if (this._reader) {
+ if (this._reader.readyState === 1) {
+ // LOADING
+ this._reader.abort();
+ }
+ this._reader.onprogress = null;
+ this._reader.onload = null;
+ this._reader.onerror = null;
+ this._reader = null;
+ }
+ if (this._xhr) {
+ this._xhr.abort();
+ this._xhr.onreadystatechange = null;
+ this._xhr = null;
+ }
+ }
+ }, {
+ key: '_xhrOnReadyStateChange',
+ value: function _xhrOnReadyStateChange(e) {
+ var xhr = e.target;
+
+ if (xhr.readyState === 2) {
+ // HEADERS_RECEIVED
+ if (xhr.status >= 200 && xhr.status <= 299) {
+ this._status = _loader.LoaderStatus.kBuffering;
+
+ if (xhr.responseURL != undefined) {
+ var redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL);
+ if (xhr.responseURL !== this._currentRequestURL && redirectedURL !== this._currentRedirectedURL) {
+ this._currentRedirectedURL = redirectedURL;
+ if (this._onURLRedirect) {
+ this._onURLRedirect(redirectedURL);
+ }
+ }
+ }
+
+ var lengthHeader = xhr.getResponseHeader('Content-Length');
+ if (lengthHeader != null && this._contentLength == null) {
+ var length = parseInt(lengthHeader);
+ if (length > 0) {
+ this._contentLength = length;
+ if (this._onContentLengthKnown) {
+ this._onContentLengthKnown(this._contentLength);
+ }
+ }
+ }
+ } else {
+ this._status = _loader.LoaderStatus.kError;
+ if (this._onError) {
+ this._onError(_loader.LoaderErrors.HTTP_STATUS_CODE_INVALID, {
+ code: xhr.status,
+ msg: xhr.statusText
+ });
+ } else {
+ throw new _exception.RuntimeException('MSStreamLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText);
+ }
+ }
+ } else if (xhr.readyState === 3) {
+ // LOADING
+ if (xhr.status >= 200 && xhr.status <= 299) {
+ this._status = _loader.LoaderStatus.kBuffering;
+
+ var msstream = xhr.response;
+ this._reader.readAsArrayBuffer(msstream);
+ }
+ }
+ }
+ }, {
+ key: '_xhrOnError',
+ value: function _xhrOnError(e) {
+ this._status = _loader.LoaderStatus.kError;
+ var type = _loader.LoaderErrors.EXCEPTION;
+ var info = {
+ code: -1,
+ msg: e.constructor.name + ' ' + e.type
+ };
+
+ if (this._onError) {
+ this._onError(type, info);
+ } else {
+ throw new _exception.RuntimeException(info.msg);
+ }
+ }
+ }, {
+ key: '_msrOnProgress',
+ value: function _msrOnProgress(e) {
+ var reader = e.target;
+ var bigbuffer = reader.result;
+ if (bigbuffer == null) {
+ // result may be null, workaround for buggy M$
+ this._doReconnectIfNeeded();
+ return;
+ }
+
+ var slice = bigbuffer.slice(this._lastTimeBufferSize);
+ this._lastTimeBufferSize = bigbuffer.byteLength;
+ var byteStart = this._totalRange.from + this._receivedLength;
+ this._receivedLength += slice.byteLength;
+
+ if (this._onDataArrival) {
+ this._onDataArrival(slice, byteStart, this._receivedLength);
+ }
+
+ if (bigbuffer.byteLength >= this._bufferLimit) {
+ _logger2.default.v(this.TAG, 'MSStream buffer exceeded max size near ' + (byteStart + slice.byteLength) + ', reconnecting...');
+ this._doReconnectIfNeeded();
+ }
+ }
+ }, {
+ key: '_doReconnectIfNeeded',
+ value: function _doReconnectIfNeeded() {
+ if (this._contentLength == null || this._receivedLength < this._contentLength) {
+ this._isReconnecting = true;
+ this._lastTimeBufferSize = 0;
+ this._internalAbort();
+
+ var range = {
+ from: this._totalRange.from + this._receivedLength,
+ to: -1
+ };
+ this._internalOpen(this._dataSource, range, true);
+ }
+ }
+ }, {
+ key: '_msrOnLoad',
+ value: function _msrOnLoad(e) {
+ // actually it is onComplete event
+ this._status = _loader.LoaderStatus.kComplete;
+ if (this._onComplete) {
+ this._onComplete(this._totalRange.from, this._totalRange.from + this._receivedLength - 1);
+ }
+ }
+ }, {
+ key: '_msrOnError',
+ value: function _msrOnError(e) {
+ this._status = _loader.LoaderStatus.kError;
+ var type = 0;
+ var info = null;
+
+ if (this._contentLength && this._receivedLength < this._contentLength) {
+ type = _loader.LoaderErrors.EARLY_EOF;
+ info = {
+ code: -1,
+ msg: 'MSStream meet Early-Eof'
+ };
+ } else {
+ type = _loader.LoaderErrors.EARLY_EOF;
+ info = {
+ code: -1,
+ msg: e.constructor.name + ' ' + e.type
+ };
+ }
+
+ if (this._onError) {
+ this._onError(type, info);
+ } else {
+ throw new _exception.RuntimeException(info.msg);
+ }
+ }
+ }]);
+
+ return MSStreamLoader;
+ }(_loader.BaseLoader);
+
+ exports.default = MSStreamLoader;
+
+ }, {
+ "../utils/exception.js": 40,
+ "../utils/logger.js": 41,
+ "./loader.js": 24
+ }],
+ 31: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
+ return typeof obj;
+ } : function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+ };
+
+ var _get = function get(object, property, receiver) {
+ if (object === null) object = Function.prototype;
+ var desc = Object.getOwnPropertyDescriptor(object, property);
+ if (desc === undefined) {
+ var parent = Object.getPrototypeOf(object);
+ if (parent === null) {
+ return undefined;
+ } else {
+ return get(parent, property, receiver);
+ }
+ } else if ("value" in desc) {
+ return desc.value;
+ } else {
+ var getter = desc.get;
+ if (getter === undefined) {
+ return undefined;
+ }
+ return getter.call(receiver);
+ }
+ };
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+
+ var _logger = _dereq_('../utils/logger.js');
+
+ var _logger2 = _interopRequireDefault(_logger);
+
+ var _speedSampler = _dereq_('./speed-sampler.js');
+
+ var _speedSampler2 = _interopRequireDefault(_speedSampler);
+
+ var _loader = _dereq_('./loader.js');
+
+ var _exception = _dereq_('../utils/exception.js');
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ function _possibleConstructorReturn(self, call) {
+ if (!self) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+ return call && (typeof call === "object" || typeof call === "function") ? call : self;
+ }
+
+ function _inherits(subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
+ }
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
+ }
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ // Universal IO Loader, implemented by adding Range header in xhr's request header
+ var RangeLoader = function (_BaseLoader) {
+ _inherits(RangeLoader, _BaseLoader);
+
+ _createClass(RangeLoader, null, [{
+ key: 'isSupported',
+ value: function isSupported() {
+ try {
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', 'https://example.com', true);
+ xhr.responseType = 'arraybuffer';
+ return xhr.responseType === 'arraybuffer';
+ } catch (e) {
+ _logger2.default.w('RangeLoader', e.message);
+ return false;
+ }
+ }
+ }]);
+
+ function RangeLoader(seekHandler, config) {
+ _classCallCheck(this, RangeLoader);
+
+ var _this = _possibleConstructorReturn(this, (RangeLoader.__proto__ || Object.getPrototypeOf(RangeLoader)).call(this, 'xhr-range-loader'));
+
+ _this.TAG = 'RangeLoader';
+
+ _this._seekHandler = seekHandler;
+ _this._config = config;
+ _this._needStash = false;
+
+ _this._chunkSizeKBList = [128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192];
+ _this._currentChunkSizeKB = 384;
+ _this._currentSpeedNormalized = 0;
+ _this._zeroSpeedChunkCount = 0;
+
+ _this._xhr = null;
+ _this._speedSampler = new _speedSampler2.default();
+
+ _this._requestAbort = false;
+ _this._waitForTotalLength = false;
+ _this._totalLengthReceived = false;
+
+ _this._currentRequestURL = null;
+ _this._currentRedirectedURL = null;
+ _this._currentRequestRange = null;
+ _this._totalLength = null; // size of the entire file
+ _this._contentLength = null; // Content-Length of entire request range
+ _this._receivedLength = 0; // total received bytes
+ _this._lastTimeLoaded = 0; // received bytes of current request sub-range
+ return _this;
+ }
+
+ _createClass(RangeLoader, [{
+ key: 'destroy',
+ value: function destroy() {
+ if (this.isWorking()) {
+ this.abort();
+ }
+ if (this._xhr) {
+ this._xhr.onreadystatechange = null;
+ this._xhr.onprogress = null;
+ this._xhr.onload = null;
+ this._xhr.onerror = null;
+ this._xhr = null;
+ }
+ _get(RangeLoader.prototype.__proto__ || Object.getPrototypeOf(RangeLoader.prototype), 'destroy', this).call(this);
+ }
+ }, {
+ key: 'open',
+ value: function open(dataSource, range) {
+ this._dataSource = dataSource;
+ this._range = range;
+ this._status = _loader.LoaderStatus.kConnecting;
+
+ var useRefTotalLength = false;
+ if (this._dataSource.filesize != undefined && this._dataSource.filesize !== 0) {
+ useRefTotalLength = true;
+ this._totalLength = this._dataSource.filesize;
+ }
+
+ if (!this._totalLengthReceived && !useRefTotalLength) {
+ // We need total filesize
+ this._waitForTotalLength = true;
+ this._internalOpen(this._dataSource, {
+ from: 0,
+ to: -1
+ });
+ } else {
+ // We have filesize, start loading
+ this._openSubRange();
+ }
+ }
+ }, {
+ key: '_openSubRange',
+ value: function _openSubRange() {
+ var chunkSize = this._currentChunkSizeKB * 1024;
+
+ var from = this._range.from + this._receivedLength;
+ var to = from + chunkSize;
+
+ if (this._contentLength != null) {
+ if (to - this._range.from >= this._contentLength) {
+ to = this._range.from + this._contentLength - 1;
+ }
+ }
+
+ this._currentRequestRange = {
+ from: from,
+ to: to
+ };
+ this._internalOpen(this._dataSource, this._currentRequestRange);
+ }
+ }, {
+ key: '_internalOpen',
+ value: function _internalOpen(dataSource, range) {
+ this._lastTimeLoaded = 0;
+
+ var sourceURL = dataSource.url;
+ if (this._config.reuseRedirectedURL) {
+ if (this._currentRedirectedURL != undefined) {
+ sourceURL = this._currentRedirectedURL;
+ } else if (dataSource.redirectedURL != undefined) {
+ sourceURL = dataSource.redirectedURL;
+ }
+ }
+
+ var seekConfig = this._seekHandler.getConfig(sourceURL, range);
+ this._currentRequestURL = seekConfig.url;
+
+ var xhr = this._xhr = new XMLHttpRequest();
+ xhr.open('GET', seekConfig.url, true);
+ xhr.responseType = 'arraybuffer';
+ xhr.onreadystatechange = this._onReadyStateChange.bind(this);
+ xhr.onprogress = this._onProgress.bind(this);
+ xhr.onload = this._onLoad.bind(this);
+ xhr.onerror = this._onXhrError.bind(this);
+
+ if (dataSource.withCredentials) {
+ xhr.withCredentials = true;
+ }
+
+ if (_typeof(seekConfig.headers) === 'object') {
+ var headers = seekConfig.headers;
+
+ for (var key in headers) {
+ if (headers.hasOwnProperty(key)) {
+ xhr.setRequestHeader(key, headers[key]);
+ }
+ }
+ }
+
+ // add additional headers
+ if (_typeof(this._config.headers) === 'object') {
+ var _headers = this._config.headers;
+
+ for (var _key in _headers) {
+ if (_headers.hasOwnProperty(_key)) {
+ xhr.setRequestHeader(_key, _headers[_key]);
+ }
+ }
+ }
+
+ xhr.send();
+ }
+ }, {
+ key: 'abort',
+ value: function abort() {
+ this._requestAbort = true;
+ this._internalAbort();
+ this._status = _loader.LoaderStatus.kComplete;
+ }
+ }, {
+ key: '_internalAbort',
+ value: function _internalAbort() {
+ if (this._xhr) {
+ this._xhr.onreadystatechange = null;
+ this._xhr.onprogress = null;
+ this._xhr.onload = null;
+ this._xhr.onerror = null;
+ this._xhr.abort();
+ this._xhr = null;
+ }
+ }
+ }, {
+ key: '_onReadyStateChange',
+ value: function _onReadyStateChange(e) {
+ var xhr = e.target;
+
+ if (xhr.readyState === 2) {
+ // HEADERS_RECEIVED
+ if (xhr.responseURL != undefined) {
+ // if the browser support this property
+ var redirectedURL = this._seekHandler.removeURLParameters(xhr.responseURL);
+ if (xhr.responseURL !== this._currentRequestURL && redirectedURL !== this._currentRedirectedURL) {
+ this._currentRedirectedURL = redirectedURL;
+ if (this._onURLRedirect) {
+ this._onURLRedirect(redirectedURL);
+ }
+ }
+ }
+
+ if (xhr.status >= 200 && xhr.status <= 299) {
+ if (this._waitForTotalLength) {
+ return;
+ }
+ this._status = _loader.LoaderStatus.kBuffering;
+ } else {
+ this._status = _loader.LoaderStatus.kError;
+ if (this._onError) {
+ this._onError(_loader.LoaderErrors.HTTP_STATUS_CODE_INVALID, {
+ code: xhr.status,
+ msg: xhr.statusText
+ });
+ } else {
+ throw new _exception.RuntimeException('RangeLoader: Http code invalid, ' + xhr.status + ' ' + xhr.statusText);
+ }
+ }
+ }
+ }
+ }, {
+ key: '_onProgress',
+ value: function _onProgress(e) {
+ if (this._status === _loader.LoaderStatus.kError) {
+ // Ignore error response
+ return;
+ }
+
+ if (this._contentLength === null) {
+ var openNextRange = false;
+
+ if (this._waitForTotalLength) {
+ this._waitForTotalLength = false;
+ this._totalLengthReceived = true;
+ openNextRange = true;
+
+ var total = e.total;
+ this._internalAbort();
+ if (total != null & total !== 0) {
+ this._totalLength = total;
+ }
+ }
+
+ // calculate currrent request range's contentLength
+ if (this._range.to === -1) {
+ this._contentLength = this._totalLength - this._range.from;
+ } else {
+ // to !== -1
+ this._contentLength = this._range.to - this._range.from + 1;
+ }
+
+ if (openNextRange) {
+ this._openSubRange();
+ return;
+ }
+ if (this._onContentLengthKnown) {
+ this._onContentLengthKnown(this._contentLength);
+ }
+ }
+
+ var delta = e.loaded - this._lastTimeLoaded;
+ this._lastTimeLoaded = e.loaded;
+ this._speedSampler.addBytes(delta);
+ }
+ }, {
+ key: '_normalizeSpeed',
+ value: function _normalizeSpeed(input) {
+ var list = this._chunkSizeKBList;
+ var last = list.length - 1;
+ var mid = 0;
+ var lbound = 0;
+ var ubound = last;
+
+ if (input < list[0]) {
+ return list[0];
+ }
+
+ while (lbound <= ubound) {
+ mid = lbound + Math.floor((ubound - lbound) / 2);
+ if (mid === last || input >= list[mid] && input < list[mid + 1]) {
+ return list[mid];
+ } else if (list[mid] < input) {
+ lbound = mid + 1;
+ } else {
+ ubound = mid - 1;
+ }
+ }
+ }
+ }, {
+ key: '_onLoad',
+ value: function _onLoad(e) {
+ if (this._status === _loader.LoaderStatus.kError) {
+ // Ignore error response
+ return;
+ }
+
+ if (this._waitForTotalLength) {
+ this._waitForTotalLength = false;
+ return;
+ }
+
+ this._lastTimeLoaded = 0;
+ var KBps = this._speedSampler.lastSecondKBps;
+ if (KBps === 0) {
+ this._zeroSpeedChunkCount++;
+ if (this._zeroSpeedChunkCount >= 3) {
+ // Try get currentKBps after 3 chunks
+ KBps = this._speedSampler.currentKBps;
+ }
+ }
+
+ if (KBps !== 0) {
+ var normalized = this._normalizeSpeed(KBps);
+ if (this._currentSpeedNormalized !== normalized) {
+ this._currentSpeedNormalized = normalized;
+ this._currentChunkSizeKB = normalized;
+ }
+ }
+
+ var chunk = e.target.response;
+ var byteStart = this._range.from + this._receivedLength;
+ this._receivedLength += chunk.byteLength;
+
+ var reportComplete = false;
+
+ if (this._contentLength != null && this._receivedLength < this._contentLength) {
+ // continue load next chunk
+ this._openSubRange();
+ } else {
+ reportComplete = true;
+ }
+
+ // dispatch received chunk
+ if (this._onDataArrival) {
+ this._onDataArrival(chunk, byteStart, this._receivedLength);
+ }
+
+ if (reportComplete) {
+ this._status = _loader.LoaderStatus.kComplete;
+ if (this._onComplete) {
+ this._onComplete(this._range.from, this._range.from + this._receivedLength - 1);
+ }
+ }
+ }
+ }, {
+ key: '_onXhrError',
+ value: function _onXhrError(e) {
+ this._status = _loader.LoaderStatus.kError;
+ var type = 0;
+ var info = null;
+
+ if (this._contentLength && this._receivedLength > 0 && this._receivedLength < this._contentLength) {
+ type = _loader.LoaderErrors.EARLY_EOF;
+ info = {
+ code: -1,
+ msg: 'RangeLoader meet Early-Eof'
+ };
+ } else {
+ type = _loader.LoaderErrors.EXCEPTION;
+ info = {
+ code: -1,
+ msg: e.constructor.name + ' ' + e.type
+ };
+ }
+
+ if (this._onError) {
+ this._onError(type, info);
+ } else {
+ throw new _exception.RuntimeException(info.msg);
+ }
+ }
+ }, {
+ key: 'currentSpeed',
+ get: function get() {
+ return this._speedSampler.lastSecondKBps;
+ }
+ }]);
+
+ return RangeLoader;
+ }(_loader.BaseLoader);
+
+ exports.default = RangeLoader;
+
+ }, {
+ "../utils/exception.js": 40,
+ "../utils/logger.js": 41,
+ "./loader.js": 24,
+ "./speed-sampler.js": 27
+ }],
+ 32: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
+ return typeof obj;
+ } : function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+ };
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var _events = _dereq_('events');
+
+ var _events2 = _interopRequireDefault(_events);
+
+ var _logger = _dereq_('../utils/logger.js');
+
+ var _logger2 = _interopRequireDefault(_logger);
+
+ var _browser = _dereq_('../utils/browser.js');
+
+ var _browser2 = _interopRequireDefault(_browser);
+
+ var _playerEvents = _dereq_('./player-events.js');
+
+ var _playerEvents2 = _interopRequireDefault(_playerEvents);
+
+ var _transmuxer = _dereq_('../core/transmuxer.js');
+
+ var _transmuxer2 = _interopRequireDefault(_transmuxer);
+
+ var _transmuxingEvents = _dereq_('../core/transmuxing-events.js');
+
+ var _transmuxingEvents2 = _interopRequireDefault(_transmuxingEvents);
+
+ var _mseController = _dereq_('../core/mse-controller.js');
+
+ var _mseController2 = _interopRequireDefault(_mseController);
+
+ var _mseEvents = _dereq_('../core/mse-events.js');
+
+ var _mseEvents2 = _interopRequireDefault(_mseEvents);
+
+ var _playerErrors = _dereq_('./player-errors.js');
+
+ var _config = _dereq_('../config.js');
+
+ var _exception = _dereq_('../utils/exception.js');
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ var FlvPlayer = function () {
+ function FlvPlayer(mediaDataSource, config) {
+ _classCallCheck(this, FlvPlayer);
+
+ this.TAG = 'FlvPlayer';
+ this._type = 'FlvPlayer';
+ this._emitter = new _events2.default();
+
+ this._config = (0, _config.createDefaultConfig)();
+ if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') {
+ Object.assign(this._config, config);
+ }
+
+ if (mediaDataSource.type.toLowerCase() !== 'flv') {
+ throw new _exception.InvalidArgumentException('FlvPlayer requires an flv MediaDataSource input!');
+ }
+
+ if (mediaDataSource.isLive === true) {
+ this._config.isLive = true;
+ }
+
+ this.e = {
+ onvLoadedMetadata: this._onvLoadedMetadata.bind(this),
+ onvSeeking: this._onvSeeking.bind(this),
+ onvCanPlay: this._onvCanPlay.bind(this),
+ onvStalled: this._onvStalled.bind(this),
+ onvProgress: this._onvProgress.bind(this)
+ };
+
+ if (self.performance && self.performance.now) {
+ this._now = self.performance.now.bind(self.performance);
+ } else {
+ this._now = Date.now;
+ }
+
+ this._pendingSeekTime = null; // in seconds
+ this._requestSetTime = false;
+ this._seekpointRecord = null;
+ this._progressChecker = null;
+
+ this._mediaDataSource = mediaDataSource;
+ this._mediaElement = null;
+ this._msectl = null;
+ this._transmuxer = null;
+
+ this._mseSourceOpened = false;
+ this._hasPendingLoad = false;
+ this._receivedCanPlay = false;
+
+ this._mediaInfo = null;
+ this._statisticsInfo = null;
+
+ var chromeNeedIDRFix = _browser2.default.chrome && (_browser2.default.version.major < 50 || _browser2.default.version.major === 50 && _browser2.default.version.build < 2661);
+ this._alwaysSeekKeyframe = chromeNeedIDRFix || _browser2.default.msedge || _browser2.default.msie ? true : false;
+
+ if (this._alwaysSeekKeyframe) {
+ this._config.accurateSeek = false;
+ }
+ }
+
+ _createClass(FlvPlayer, [{
+ key: 'destroy',
+ value: function destroy() {
+ if (this._progressChecker != null) {
+ window.clearInterval(this._progressChecker);
+ this._progressChecker = null;
+ }
+ if (this._transmuxer) {
+ this.unload();
+ }
+ if (this._mediaElement) {
+ this.detachMediaElement();
+ }
+ this.e = null;
+ this._mediaDataSource = null;
+
+ this._emitter.removeAllListeners();
+ this._emitter = null;
+ }
+ }, {
+ key: 'on',
+ value: function on(event, listener) {
+ var _this = this;
+
+ if (event === _playerEvents2.default.MEDIA_INFO) {
+ if (this._mediaInfo != null) {
+ Promise.resolve().then(function () {
+ _this._emitter.emit(_playerEvents2.default.MEDIA_INFO, _this.mediaInfo);
+ });
+ }
+ } else if (event === _playerEvents2.default.STATISTICS_INFO) {
+ if (this._statisticsInfo != null) {
+ Promise.resolve().then(function () {
+ _this._emitter.emit(_playerEvents2.default.STATISTICS_INFO, _this.statisticsInfo);
+ });
+ }
+ }
+ this._emitter.addListener(event, listener);
+ }
+ }, {
+ key: 'off',
+ value: function off(event, listener) {
+ this._emitter.removeListener(event, listener);
+ }
+ }, {
+ key: 'attachMediaElement',
+ value: function attachMediaElement(mediaElement) {
+ var _this2 = this;
+
+ this._mediaElement = mediaElement;
+ mediaElement.addEventListener('loadedmetadata', this.e.onvLoadedMetadata);
+ mediaElement.addEventListener('seeking', this.e.onvSeeking);
+ mediaElement.addEventListener('canplay', this.e.onvCanPlay);
+ mediaElement.addEventListener('stalled', this.e.onvStalled);
+ mediaElement.addEventListener('progress', this.e.onvProgress);
+
+ this._msectl = new _mseController2.default(this._config);
+
+ this._msectl.on(_mseEvents2.default.UPDATE_END, this._onmseUpdateEnd.bind(this));
+ this._msectl.on(_mseEvents2.default.BUFFER_FULL, this._onmseBufferFull.bind(this));
+ this._msectl.on(_mseEvents2.default.SOURCE_OPEN, function () {
+ _this2._mseSourceOpened = true;
+ if (_this2._hasPendingLoad) {
+ _this2._hasPendingLoad = false;
+ _this2.load();
+ }
+ });
+ this._msectl.on(_mseEvents2.default.ERROR, function (info) {
+ _this2._emitter.emit(_playerEvents2.default.ERROR, _playerErrors.ErrorTypes.MEDIA_ERROR, _playerErrors.ErrorDetails.MEDIA_MSE_ERROR, info);
+ });
+
+ this._msectl.attachMediaElement(mediaElement);
+
+ if (this._pendingSeekTime != null) {
+ try {
+ mediaElement.currentTime = this._pendingSeekTime;
+ this._pendingSeekTime = null;
+ } catch (e) {
+ // IE11 may throw InvalidStateError if readyState === 0
+ // We can defer set currentTime operation after loadedmetadata
+ }
+ }
+ }
+ }, {
+ key: 'detachMediaElement',
+ value: function detachMediaElement() {
+ if (this._mediaElement) {
+ this._msectl.detachMediaElement();
+ this._mediaElement.removeEventListener('loadedmetadata', this.e.onvLoadedMetadata);
+ this._mediaElement.removeEventListener('seeking', this.e.onvSeeking);
+ this._mediaElement.removeEventListener('canplay', this.e.onvCanPlay);
+ this._mediaElement.removeEventListener('stalled', this.e.onvStalled);
+ this._mediaElement.removeEventListener('progress', this.e.onvProgress);
+ this._mediaElement = null;
+ }
+ if (this._msectl) {
+ this._msectl.destroy();
+ this._msectl = null;
+ }
+ }
+ }, {
+ key: 'load',
+ value: function load() {
+ var _this3 = this;
+
+ if (!this._mediaElement) {
+ throw new _exception.IllegalStateException('HTMLMediaElement must be attached before load()!');
+ }
+ if (this._transmuxer) {
+ throw new _exception.IllegalStateException('FlvPlayer.load() has been called, please call unload() first!');
+ }
+ if (this._hasPendingLoad) {
+ return;
+ }
+
+ if (this._config.deferLoadAfterSourceOpen && this._mseSourceOpened === false) {
+ this._hasPendingLoad = true;
+ return;
+ }
+
+ if (this._mediaElement.readyState > 0) {
+ this._requestSetTime = true;
+ // IE11 may throw InvalidStateError if readyState === 0
+ this._mediaElement.currentTime = 0;
+ }
+
+ this._transmuxer = new _transmuxer2.default(this._mediaDataSource, this._config);
+
+ this._transmuxer.on(_transmuxingEvents2.default.INIT_SEGMENT, function (type, is) {
+ _this3._msectl.appendInitSegment(is);
+ });
+ this._transmuxer.on(_transmuxingEvents2.default.MEDIA_SEGMENT, function (type, ms) {
+ _this3._msectl.appendMediaSegment(ms);
+
+ // lazyLoad check
+ if (_this3._config.lazyLoad && !_this3._config.isLive) {
+ var currentTime = _this3._mediaElement.currentTime;
+ if (ms.info.endDts >= (currentTime + _this3._config.lazyLoadMaxDuration) * 1000) {
+ if (_this3._progressChecker == null) {
+ _logger2.default.v(_this3.TAG, 'Maximum buffering duration exceeded, suspend transmuxing task');
+ _this3._suspendTransmuxer();
+ }
+ }
+ }
+ });
+ this._transmuxer.on(_transmuxingEvents2.default.LOADING_COMPLETE, function () {
+ _this3._msectl.endOfStream();
+ _this3._emitter.emit(_playerEvents2.default.LOADING_COMPLETE);
+ });
+ this._transmuxer.on(_transmuxingEvents2.default.RECOVERED_EARLY_EOF, function () {
+ _this3._emitter.emit(_playerEvents2.default.RECOVERED_EARLY_EOF);
+ });
+ this._transmuxer.on(_transmuxingEvents2.default.IO_ERROR, function (detail, info) {
+ _this3._emitter.emit(_playerEvents2.default.ERROR, _playerErrors.ErrorTypes.NETWORK_ERROR, detail, info);
+ });
+ this._transmuxer.on(_transmuxingEvents2.default.DEMUX_ERROR, function (detail, info) {
+ _this3._emitter.emit(_playerEvents2.default.ERROR, _playerErrors.ErrorTypes.MEDIA_ERROR, detail, {
+ code: -1,
+ msg: info
+ });
+ });
+ this._transmuxer.on(_transmuxingEvents2.default.MEDIA_INFO, function (mediaInfo) {
+ _this3._mediaInfo = mediaInfo;
+ _this3._emitter.emit(_playerEvents2.default.MEDIA_INFO, Object.assign({}, mediaInfo));
+ });
+ this._transmuxer.on(_transmuxingEvents2.default.METADATA_ARRIVED, function (metadata) {
+ _this3._emitter.emit(_playerEvents2.default.METADATA_ARRIVED, metadata);
+ });
+ this._transmuxer.on(_transmuxingEvents2.default.SCRIPTDATA_ARRIVED, function (data) {
+ _this3._emitter.emit(_playerEvents2.default.SCRIPTDATA_ARRIVED, data);
+ });
+ this._transmuxer.on(_transmuxingEvents2.default.STATISTICS_INFO, function (statInfo) {
+ _this3._statisticsInfo = _this3._fillStatisticsInfo(statInfo);
+ _this3._emitter.emit(_playerEvents2.default.STATISTICS_INFO, Object.assign({}, _this3._statisticsInfo));
+ });
+ this._transmuxer.on(_transmuxingEvents2.default.RECOMMEND_SEEKPOINT, function (milliseconds) {
+ if (_this3._mediaElement && !_this3._config.accurateSeek) {
+ _this3._requestSetTime = true;
+ _this3._mediaElement.currentTime = milliseconds / 1000;
+ }
+ });
+
+ this._transmuxer.open();
+ }
+ }, {
+ key: 'unload',
+ value: function unload() {
+ if (this._mediaElement) {
+ this._mediaElement.pause();
+ }
+ if (this._msectl) {
+ this._msectl.seek(0);
+ }
+ if (this._transmuxer) {
+ this._transmuxer.close();
+ this._transmuxer.destroy();
+ this._transmuxer = null;
+ }
+ }
+ }, {
+ key: 'play',
+ value: function play() {
+ return this._mediaElement.play();
+ }
+ }, {
+ key: 'pause',
+ value: function pause() {
+ this._mediaElement.pause();
+ }
+ }, {
+ key: '_fillStatisticsInfo',
+ value: function _fillStatisticsInfo(statInfo) {
+ statInfo.playerType = this._type;
+
+ if (!(this._mediaElement instanceof HTMLVideoElement)) {
+ return statInfo;
+ }
+
+ var hasQualityInfo = true;
+ var decoded = 0;
+ var dropped = 0;
+
+ if (this._mediaElement.getVideoPlaybackQuality) {
+ var quality = this._mediaElement.getVideoPlaybackQuality();
+ decoded = quality.totalVideoFrames;
+ dropped = quality.droppedVideoFrames;
+ } else if (this._mediaElement.webkitDecodedFrameCount != undefined) {
+ decoded = this._mediaElement.webkitDecodedFrameCount;
+ dropped = this._mediaElement.webkitDroppedFrameCount;
+ } else {
+ hasQualityInfo = false;
+ }
+
+ if (hasQualityInfo) {
+ statInfo.decodedFrames = decoded;
+ statInfo.droppedFrames = dropped;
+ }
+
+ return statInfo;
+ }
+ }, {
+ key: '_onmseUpdateEnd',
+ value: function _onmseUpdateEnd() {
+ if (!this._config.lazyLoad || this._config.isLive) {
+ return;
+ }
+
+ var buffered = this._mediaElement.buffered;
+ var currentTime = this._mediaElement.currentTime;
+ var currentRangeStart = 0;
+ var currentRangeEnd = 0;
+
+ for (var i = 0; i < buffered.length; i++) {
+ var start = buffered.start(i);
+ var end = buffered.end(i);
+ if (start <= currentTime && currentTime < end) {
+ currentRangeStart = start;
+ currentRangeEnd = end;
+ break;
+ }
+ }
+
+ if (currentRangeEnd >= currentTime + this._config.lazyLoadMaxDuration && this._progressChecker == null) {
+ _logger2.default.v(this.TAG, 'Maximum buffering duration exceeded, suspend transmuxing task');
+ this._suspendTransmuxer();
+ }
+ }
+ }, {
+ key: '_onmseBufferFull',
+ value: function _onmseBufferFull() {
+ _logger2.default.v(this.TAG, 'MSE SourceBuffer is full, suspend transmuxing task');
+ if (this._progressChecker == null) {
+ this._suspendTransmuxer();
+ }
+ }
+ }, {
+ key: '_suspendTransmuxer',
+ value: function _suspendTransmuxer() {
+ if (this._transmuxer) {
+ this._transmuxer.pause();
+
+ if (this._progressChecker == null) {
+ this._progressChecker = window.setInterval(this._checkProgressAndResume.bind(this), 1000);
+ }
+ }
+ }
+ }, {
+ key: '_checkProgressAndResume',
+ value: function _checkProgressAndResume() {
+ var currentTime = this._mediaElement.currentTime;
+ var buffered = this._mediaElement.buffered;
+
+ var needResume = false;
+
+ for (var i = 0; i < buffered.length; i++) {
+ var from = buffered.start(i);
+ var to = buffered.end(i);
+ if (currentTime >= from && currentTime < to) {
+ if (currentTime >= to - this._config.lazyLoadRecoverDuration) {
+ needResume = true;
+ }
+ break;
+ }
+ }
+
+ if (needResume) {
+ window.clearInterval(this._progressChecker);
+ this._progressChecker = null;
+ if (needResume) {
+ _logger2.default.v(this.TAG, 'Continue loading from paused position');
+ this._transmuxer.resume();
+ }
+ }
+ }
+ }, {
+ key: '_isTimepointBuffered',
+ value: function _isTimepointBuffered(seconds) {
+ var buffered = this._mediaElement.buffered;
+
+ for (var i = 0; i < buffered.length; i++) {
+ var from = buffered.start(i);
+ var to = buffered.end(i);
+ if (seconds >= from && seconds < to) {
+ return true;
+ }
+ }
+ return false;
+ }
+ }, {
+ key: '_internalSeek',
+ value: function _internalSeek(seconds) {
+ var directSeek = this._isTimepointBuffered(seconds);
+
+ var directSeekBegin = false;
+ var directSeekBeginTime = 0;
+
+ if (seconds < 1.0 && this._mediaElement.buffered.length > 0) {
+ var videoBeginTime = this._mediaElement.buffered.start(0);
+ if (videoBeginTime < 1.0 && seconds < videoBeginTime || _browser2.default.safari) {
+ directSeekBegin = true;
+ // also workaround for Safari: Seek to 0 may cause video stuck, use 0.1 to avoid
+ directSeekBeginTime = _browser2.default.safari ? 0.1 : videoBeginTime;
+ }
+ }
+
+ if (directSeekBegin) {
+ // seek to video begin, set currentTime directly if beginPTS buffered
+ this._requestSetTime = true;
+ this._mediaElement.currentTime = directSeekBeginTime;
+ } else if (directSeek) {
+ // buffered position
+ if (!this._alwaysSeekKeyframe) {
+ this._requestSetTime = true;
+ this._mediaElement.currentTime = seconds;
+ } else {
+ var idr = this._msectl.getNearestKeyframe(Math.floor(seconds * 1000));
+ this._requestSetTime = true;
+ if (idr != null) {
+ this._mediaElement.currentTime = idr.dts / 1000;
+ } else {
+ this._mediaElement.currentTime = seconds;
+ }
+ }
+ if (this._progressChecker != null) {
+ this._checkProgressAndResume();
+ }
+ } else {
+ if (this._progressChecker != null) {
+ window.clearInterval(this._progressChecker);
+ this._progressChecker = null;
+ }
+ this._msectl.seek(seconds);
+ this._transmuxer.seek(Math.floor(seconds * 1000)); // in milliseconds
+ // no need to set mediaElement.currentTime if non-accurateSeek,
+ // just wait for the recommend_seekpoint callback
+ if (this._config.accurateSeek) {
+ this._requestSetTime = true;
+ this._mediaElement.currentTime = seconds;
+ }
+ }
+ }
+ }, {
+ key: '_checkAndApplyUnbufferedSeekpoint',
+ value: function _checkAndApplyUnbufferedSeekpoint() {
+ if (this._seekpointRecord) {
+ if (this._seekpointRecord.recordTime <= this._now() - 100) {
+ var target = this._mediaElement.currentTime;
+ this._seekpointRecord = null;
+ if (!this._isTimepointBuffered(target)) {
+ if (this._progressChecker != null) {
+ window.clearTimeout(this._progressChecker);
+ this._progressChecker = null;
+ }
+ // .currentTime is consists with .buffered timestamp
+ // Chrome/Edge use DTS, while FireFox/Safari use PTS
+ this._msectl.seek(target);
+ this._transmuxer.seek(Math.floor(target * 1000));
+ // set currentTime if accurateSeek, or wait for recommend_seekpoint callback
+ if (this._config.accurateSeek) {
+ this._requestSetTime = true;
+ this._mediaElement.currentTime = target;
+ }
+ }
+ } else {
+ window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50);
+ }
+ }
+ }
+ }, {
+ key: '_checkAndResumeStuckPlayback',
+ value: function _checkAndResumeStuckPlayback(stalled) {
+ var media = this._mediaElement;
+ if (stalled || !this._receivedCanPlay || media.readyState < 2) {
+ // HAVE_CURRENT_DATA
+ var buffered = media.buffered;
+ if (buffered.length > 0 && media.currentTime < buffered.start(0)) {
+ _logger2.default.w(this.TAG, 'Playback seems stuck at ' + media.currentTime + ', seek to ' + buffered.start(0));
+ this._requestSetTime = true;
+ this._mediaElement.currentTime = buffered.start(0);
+ this._mediaElement.removeEventListener('progress', this.e.onvProgress);
+ }
+ } else {
+ // Playback didn't stuck, remove progress event listener
+ this._mediaElement.removeEventListener('progress', this.e.onvProgress);
+ }
+ }
+ }, {
+ key: '_onvLoadedMetadata',
+ value: function _onvLoadedMetadata(e) {
+ if (this._pendingSeekTime != null) {
+ this._mediaElement.currentTime = this._pendingSeekTime;
+ this._pendingSeekTime = null;
+ }
+ }
+ }, {
+ key: '_onvSeeking',
+ value: function _onvSeeking(e) {
+ // handle seeking request from browser's progress bar
+ var target = this._mediaElement.currentTime;
+ var buffered = this._mediaElement.buffered;
+
+ if (this._requestSetTime) {
+ this._requestSetTime = false;
+ return;
+ }
+
+ if (target < 1.0 && buffered.length > 0) {
+ // seek to video begin, set currentTime directly if beginPTS buffered
+ var videoBeginTime = buffered.start(0);
+ if (videoBeginTime < 1.0 && target < videoBeginTime || _browser2.default.safari) {
+ this._requestSetTime = true;
+ // also workaround for Safari: Seek to 0 may cause video stuck, use 0.1 to avoid
+ this._mediaElement.currentTime = _browser2.default.safari ? 0.1 : videoBeginTime;
+ return;
+ }
+ }
+
+ if (this._isTimepointBuffered(target)) {
+ if (this._alwaysSeekKeyframe) {
+ var idr = this._msectl.getNearestKeyframe(Math.floor(target * 1000));
+ if (idr != null) {
+ this._requestSetTime = true;
+ this._mediaElement.currentTime = idr.dts / 1000;
+ }
+ }
+ if (this._progressChecker != null) {
+ this._checkProgressAndResume();
+ }
+ return;
+ }
+
+ this._seekpointRecord = {
+ seekPoint: target,
+ recordTime: this._now()
+ };
+ window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50);
+ }
+ }, {
+ key: '_onvCanPlay',
+ value: function _onvCanPlay(e) {
+ this._receivedCanPlay = true;
+ this._mediaElement.removeEventListener('canplay', this.e.onvCanPlay);
+ }
+ }, {
+ key: '_onvStalled',
+ value: function _onvStalled(e) {
+ this._checkAndResumeStuckPlayback(true);
+ }
+ }, {
+ key: '_onvProgress',
+ value: function _onvProgress(e) {
+ this._checkAndResumeStuckPlayback();
+ }
+ }, {
+ key: 'type',
+ get: function get() {
+ return this._type;
+ }
+ }, {
+ key: 'buffered',
+ get: function get() {
+ return this._mediaElement.buffered;
+ }
+ }, {
+ key: 'duration',
+ get: function get() {
+ return this._mediaElement.duration;
+ }
+ }, {
+ key: 'volume',
+ get: function get() {
+ return this._mediaElement.volume;
+ },
+ set: function set(value) {
+ this._mediaElement.volume = value;
+ }
+ }, {
+ key: 'muted',
+ get: function get() {
+ return this._mediaElement.muted;
+ },
+ set: function set(muted) {
+ this._mediaElement.muted = muted;
+ }
+ }, {
+ key: 'currentTime',
+ get: function get() {
+ if (this._mediaElement) {
+ return this._mediaElement.currentTime;
+ }
+ return 0;
+ },
+ set: function set(seconds) {
+ if (this._mediaElement) {
+ this._internalSeek(seconds);
+ } else {
+ this._pendingSeekTime = seconds;
+ }
+ }
+ }, {
+ key: 'mediaInfo',
+ get: function get() {
+ return Object.assign({}, this._mediaInfo);
+ }
+ }, {
+ key: 'statisticsInfo',
+ get: function get() {
+ if (this._statisticsInfo == null) {
+ this._statisticsInfo = {};
+ }
+ this._statisticsInfo = this._fillStatisticsInfo(this._statisticsInfo);
+ return Object.assign({}, this._statisticsInfo);
+ }
+ }]);
+
+ return FlvPlayer;
+ }();
+
+ exports.default = FlvPlayer;
+
+ }, {
+ "../config.js": 5,
+ "../core/mse-controller.js": 9,
+ "../core/mse-events.js": 10,
+ "../core/transmuxer.js": 11,
+ "../core/transmuxing-events.js": 13,
+ "../utils/browser.js": 39,
+ "../utils/exception.js": 40,
+ "../utils/logger.js": 41,
+ "./player-errors.js": 34,
+ "./player-events.js": 35,
+ "events": 2
+ }],
+ 33: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
+ return typeof obj;
+ } : function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+ };
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var _events = _dereq_('events');
+
+ var _events2 = _interopRequireDefault(_events);
+
+ var _playerEvents = _dereq_('./player-events.js');
+
+ var _playerEvents2 = _interopRequireDefault(_playerEvents);
+
+ var _config = _dereq_('../config.js');
+
+ var _exception = _dereq_('../utils/exception.js');
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ // Player wrapper for browser's native player (HTMLVideoElement) without MediaSource src.
+ var NativePlayer = function () {
+ function NativePlayer(mediaDataSource, config) {
+ _classCallCheck(this, NativePlayer);
+
+ this.TAG = 'NativePlayer';
+ this._type = 'NativePlayer';
+ this._emitter = new _events2.default();
+
+ this._config = (0, _config.createDefaultConfig)();
+ if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') {
+ Object.assign(this._config, config);
+ }
+
+ if (mediaDataSource.type.toLowerCase() === 'flv') {
+ throw new _exception.InvalidArgumentException('NativePlayer does\'t support flv MediaDataSource input!');
+ }
+ if (mediaDataSource.hasOwnProperty('segments')) {
+ throw new _exception.InvalidArgumentException('NativePlayer(' + mediaDataSource.type + ') doesn\'t support multipart playback!');
+ }
+
+ this.e = {
+ onvLoadedMetadata: this._onvLoadedMetadata.bind(this)
+ };
+
+ this._pendingSeekTime = null;
+ this._statisticsReporter = null;
+
+ this._mediaDataSource = mediaDataSource;
+ this._mediaElement = null;
+ }
+
+ _createClass(NativePlayer, [{
+ key: 'destroy',
+ value: function destroy() {
+ if (this._mediaElement) {
+ this.unload();
+ this.detachMediaElement();
+ }
+ this.e = null;
+ this._mediaDataSource = null;
+ this._emitter.removeAllListeners();
+ this._emitter = null;
+ }
+ }, {
+ key: 'on',
+ value: function on(event, listener) {
+ var _this = this;
+
+ if (event === _playerEvents2.default.MEDIA_INFO) {
+ if (this._mediaElement != null && this._mediaElement.readyState !== 0) {
+ // HAVE_NOTHING
+ Promise.resolve().then(function () {
+ _this._emitter.emit(_playerEvents2.default.MEDIA_INFO, _this.mediaInfo);
+ });
+ }
+ } else if (event === _playerEvents2.default.STATISTICS_INFO) {
+ if (this._mediaElement != null && this._mediaElement.readyState !== 0) {
+ Promise.resolve().then(function () {
+ _this._emitter.emit(_playerEvents2.default.STATISTICS_INFO, _this.statisticsInfo);
+ });
+ }
+ }
+ this._emitter.addListener(event, listener);
+ }
+ }, {
+ key: 'off',
+ value: function off(event, listener) {
+ this._emitter.removeListener(event, listener);
+ }
+ }, {
+ key: 'attachMediaElement',
+ value: function attachMediaElement(mediaElement) {
+ this._mediaElement = mediaElement;
+ mediaElement.addEventListener('loadedmetadata', this.e.onvLoadedMetadata);
+
+ if (this._pendingSeekTime != null) {
+ try {
+ mediaElement.currentTime = this._pendingSeekTime;
+ this._pendingSeekTime = null;
+ } catch (e) {
+ // IE11 may throw InvalidStateError if readyState === 0
+ // Defer set currentTime operation after loadedmetadata
+ }
+ }
+ }
+ }, {
+ key: 'detachMediaElement',
+ value: function detachMediaElement() {
+ if (this._mediaElement) {
+ this._mediaElement.src = '';
+ this._mediaElement.removeAttribute('src');
+ this._mediaElement.removeEventListener('loadedmetadata', this.e.onvLoadedMetadata);
+ this._mediaElement = null;
+ }
+ if (this._statisticsReporter != null) {
+ window.clearInterval(this._statisticsReporter);
+ this._statisticsReporter = null;
+ }
+ }
+ }, {
+ key: 'load',
+ value: function load() {
+ if (!this._mediaElement) {
+ throw new _exception.IllegalStateException('HTMLMediaElement must be attached before load()!');
+ }
+ this._mediaElement.src = this._mediaDataSource.url;
+
+ if (this._mediaElement.readyState > 0) {
+ this._mediaElement.currentTime = 0;
+ }
+
+ this._mediaElement.preload = 'auto';
+ this._mediaElement.load();
+ this._statisticsReporter = window.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval);
+ }
+ }, {
+ key: 'unload',
+ value: function unload() {
+ if (this._mediaElement) {
+ this._mediaElement.src = '';
+ this._mediaElement.removeAttribute('src');
+ }
+ if (this._statisticsReporter != null) {
+ window.clearInterval(this._statisticsReporter);
+ this._statisticsReporter = null;
+ }
+ }
+ }, {
+ key: 'play',
+ value: function play() {
+ return this._mediaElement.play();
+ }
+ }, {
+ key: 'pause',
+ value: function pause() {
+ this._mediaElement.pause();
+ }
+ }, {
+ key: '_onvLoadedMetadata',
+ value: function _onvLoadedMetadata(e) {
+ if (this._pendingSeekTime != null) {
+ this._mediaElement.currentTime = this._pendingSeekTime;
+ this._pendingSeekTime = null;
+ }
+ this._emitter.emit(_playerEvents2.default.MEDIA_INFO, this.mediaInfo);
+ }
+ }, {
+ key: '_reportStatisticsInfo',
+ value: function _reportStatisticsInfo() {
+ this._emitter.emit(_playerEvents2.default.STATISTICS_INFO, this.statisticsInfo);
+ }
+ }, {
+ key: 'type',
+ get: function get() {
+ return this._type;
+ }
+ }, {
+ key: 'buffered',
+ get: function get() {
+ return this._mediaElement.buffered;
+ }
+ }, {
+ key: 'duration',
+ get: function get() {
+ return this._mediaElement.duration;
+ }
+ }, {
+ key: 'volume',
+ get: function get() {
+ return this._mediaElement.volume;
+ },
+ set: function set(value) {
+ this._mediaElement.volume = value;
+ }
+ }, {
+ key: 'muted',
+ get: function get() {
+ return this._mediaElement.muted;
+ },
+ set: function set(muted) {
+ this._mediaElement.muted = muted;
+ }
+ }, {
+ key: 'currentTime',
+ get: function get() {
+ if (this._mediaElement) {
+ return this._mediaElement.currentTime;
+ }
+ return 0;
+ },
+ set: function set(seconds) {
+ if (this._mediaElement) {
+ this._mediaElement.currentTime = seconds;
+ } else {
+ this._pendingSeekTime = seconds;
+ }
+ }
+ }, {
+ key: 'mediaInfo',
+ get: function get() {
+ var mediaPrefix = this._mediaElement instanceof HTMLAudioElement ? 'audio/' : 'video/';
+ var info = {
+ mimeType: mediaPrefix + this._mediaDataSource.type
+ };
+ if (this._mediaElement) {
+ info.duration = Math.floor(this._mediaElement.duration * 1000);
+ if (this._mediaElement instanceof HTMLVideoElement) {
+ info.width = this._mediaElement.videoWidth;
+ info.height = this._mediaElement.videoHeight;
+ }
+ }
+ return info;
+ }
+ }, {
+ key: 'statisticsInfo',
+ get: function get() {
+ var info = {
+ playerType: this._type,
+ url: this._mediaDataSource.url
+ };
+
+ if (!(this._mediaElement instanceof HTMLVideoElement)) {
+ return info;
+ }
+
+ var hasQualityInfo = true;
+ var decoded = 0;
+ var dropped = 0;
+
+ if (this._mediaElement.getVideoPlaybackQuality) {
+ var quality = this._mediaElement.getVideoPlaybackQuality();
+ decoded = quality.totalVideoFrames;
+ dropped = quality.droppedVideoFrames;
+ } else if (this._mediaElement.webkitDecodedFrameCount != undefined) {
+ decoded = this._mediaElement.webkitDecodedFrameCount;
+ dropped = this._mediaElement.webkitDroppedFrameCount;
+ } else {
+ hasQualityInfo = false;
+ }
+
+ if (hasQualityInfo) {
+ info.decodedFrames = decoded;
+ info.droppedFrames = dropped;
+ }
+
+ return info;
+ }
+ }]);
+
+ return NativePlayer;
+ }();
+
+ exports.default = NativePlayer;
+
+ }, {
+ "../config.js": 5,
+ "../utils/exception.js": 40,
+ "./player-events.js": 35,
+ "events": 2
+ }],
+ 34: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.ErrorDetails = exports.ErrorTypes = undefined;
+
+ var _loader = _dereq_('../io/loader.js');
+
+ var _demuxErrors = _dereq_('../demux/demux-errors.js');
+
+ var _demuxErrors2 = _interopRequireDefault(_demuxErrors);
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var ErrorTypes = exports.ErrorTypes = {
+ NETWORK_ERROR: 'NetworkError',
+ MEDIA_ERROR: 'MediaError',
+ OTHER_ERROR: 'OtherError'
+ };
+
+ var ErrorDetails = exports.ErrorDetails = {
+ NETWORK_EXCEPTION: _loader.LoaderErrors.EXCEPTION,
+ NETWORK_STATUS_CODE_INVALID: _loader.LoaderErrors.HTTP_STATUS_CODE_INVALID,
+ NETWORK_TIMEOUT: _loader.LoaderErrors.CONNECTING_TIMEOUT,
+ NETWORK_UNRECOVERABLE_EARLY_EOF: _loader.LoaderErrors.UNRECOVERABLE_EARLY_EOF,
+
+ MEDIA_MSE_ERROR: 'MediaMSEError',
+
+ MEDIA_FORMAT_ERROR: _demuxErrors2.default.FORMAT_ERROR,
+ MEDIA_FORMAT_UNSUPPORTED: _demuxErrors2.default.FORMAT_UNSUPPORTED,
+ MEDIA_CODEC_UNSUPPORTED: _demuxErrors2.default.CODEC_UNSUPPORTED
+ };
+
+ }, {
+ "../demux/demux-errors.js": 16,
+ "../io/loader.js": 24
+ }],
+ 35: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var PlayerEvents = {
+ ERROR: 'error',
+ LOADING_COMPLETE: 'loading_complete',
+ RECOVERED_EARLY_EOF: 'recovered_early_eof',
+ MEDIA_INFO: 'media_info',
+ METADATA_ARRIVED: 'metadata_arrived',
+ SCRIPTDATA_ARRIVED: 'scriptdata_arrived',
+ STATISTICS_INFO: 'statistics_info'
+ };
+
+ exports.default = PlayerEvents;
+
+ }, {}],
+ 36: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * This file is modified from dailymotion's hls.js library (hls.js/src/helper/aac.js)
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var AAC = function () {
+ function AAC() {
+ _classCallCheck(this, AAC);
+ }
+
+ _createClass(AAC, null, [{
+ key: 'getSilentFrame',
+ value: function getSilentFrame(codec, channelCount) {
+ if (codec === 'mp4a.40.2') {
+ // handle LC-AAC
+ if (channelCount === 1) {
+ return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]);
+ } else if (channelCount === 2) {
+ return new Uint8Array([0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80]);
+ } else if (channelCount === 3) {
+ return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x8e]);
+ } else if (channelCount === 4) {
+ return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38]);
+ } else if (channelCount === 5) {
+ return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38]);
+ } else if (channelCount === 6) {
+ return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2, 0x00, 0x20, 0x08, 0xe0]);
+ }
+ } else {
+ // handle HE-AAC (mp4a.40.5 / mp4a.40.29)
+ if (channelCount === 1) {
+ // ffmpeg -y -f lavfi -i "aevalsrc=0:d=0.05" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac
+ return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);
+ } else if (channelCount === 2) {
+ // ffmpeg -y -f lavfi -i "aevalsrc=0|0:d=0.05" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac
+ return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);
+ } else if (channelCount === 3) {
+ // ffmpeg -y -f lavfi -i "aevalsrc=0|0|0:d=0.05" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac
+ return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]);
+ }
+ }
+ return null;
+ }
+ }]);
+
+ return AAC;
+ }();
+
+ exports.default = AAC;
+
+ }, {}],
+ 37: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * This file is derived from dailymotion's hls.js library (hls.js/src/remux/mp4-generator.js)
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ // MP4 boxes generator for ISO BMFF (ISO Base Media File Format, defined in ISO/IEC 14496-12)
+ var MP4 = function () {
+ function MP4() {
+ _classCallCheck(this, MP4);
+ }
+
+ _createClass(MP4, null, [{
+ key: 'init',
+ value: function init() {
+ MP4.types = {
+ avc1: [],
+ avcC: [],
+ btrt: [],
+ dinf: [],
+ dref: [],
+ esds: [],
+ ftyp: [],
+ hdlr: [],
+ mdat: [],
+ mdhd: [],
+ mdia: [],
+ mfhd: [],
+ minf: [],
+ moof: [],
+ moov: [],
+ mp4a: [],
+ mvex: [],
+ mvhd: [],
+ sdtp: [],
+ stbl: [],
+ stco: [],
+ stsc: [],
+ stsd: [],
+ stsz: [],
+ stts: [],
+ tfdt: [],
+ tfhd: [],
+ traf: [],
+ trak: [],
+ trun: [],
+ trex: [],
+ tkhd: [],
+ vmhd: [],
+ smhd: [],
+ '.mp3': []
+ };
+
+ for (var name in MP4.types) {
+ if (MP4.types.hasOwnProperty(name)) {
+ MP4.types[name] = [name.charCodeAt(0), name.charCodeAt(1), name.charCodeAt(2), name.charCodeAt(3)];
+ }
+ }
+
+ var constants = MP4.constants = {};
+
+ constants.FTYP = new Uint8Array([0x69, 0x73, 0x6F, 0x6D, // major_brand: isom
+ 0x0, 0x0, 0x0, 0x1, // minor_version: 0x01
+ 0x69, 0x73, 0x6F, 0x6D, // isom
+ 0x61, 0x76, 0x63, 0x31 // avc1
+ ]);
+
+ constants.STSD_PREFIX = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags
+ 0x00, 0x00, 0x00, 0x01 // entry_count
+ ]);
+
+ constants.STTS = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags
+ 0x00, 0x00, 0x00, 0x00 // entry_count
+ ]);
+
+ constants.STSC = constants.STCO = constants.STTS;
+
+ constants.STSZ = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags
+ 0x00, 0x00, 0x00, 0x00, // sample_size
+ 0x00, 0x00, 0x00, 0x00 // sample_count
+ ]);
+
+ constants.HDLR_VIDEO = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags
+ 0x00, 0x00, 0x00, 0x00, // pre_defined
+ 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide'
+ 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x69, 0x64, 0x65, 0x6F, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00 // name: VideoHandler
+ ]);
+
+ constants.HDLR_AUDIO = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags
+ 0x00, 0x00, 0x00, 0x00, // pre_defined
+ 0x73, 0x6F, 0x75, 0x6E, // handler_type: 'soun'
+ 0x00, 0x00, 0x00, 0x00, // reserved: 3 * 4 bytes
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x6F, 0x75, 0x6E, 0x64, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00 // name: SoundHandler
+ ]);
+
+ constants.DREF = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags
+ 0x00, 0x00, 0x00, 0x01, // entry_count
+ 0x00, 0x00, 0x00, 0x0C, // entry_size
+ 0x75, 0x72, 0x6C, 0x20, // type 'url '
+ 0x00, 0x00, 0x00, 0x01 // version(0) + flags
+ ]);
+
+ // Sound media header
+ constants.SMHD = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags
+ 0x00, 0x00, 0x00, 0x00 // balance(2) + reserved(2)
+ ]);
+
+ // video media header
+ constants.VMHD = new Uint8Array([0x00, 0x00, 0x00, 0x01, // version(0) + flags
+ 0x00, 0x00, // graphicsmode: 2 bytes
+ 0x00, 0x00, 0x00, 0x00, // opcolor: 3 * 2 bytes
+ 0x00, 0x00
+ ]);
+ }
+
+ // Generate a box
+
+ }, {
+ key: 'box',
+ value: function box(type) {
+ var size = 8;
+ var result = null;
+ var datas = Array.prototype.slice.call(arguments, 1);
+ var arrayCount = datas.length;
+
+ for (var i = 0; i < arrayCount; i++) {
+ size += datas[i].byteLength;
+ }
+
+ result = new Uint8Array(size);
+ result[0] = size >>> 24 & 0xFF; // size
+ result[1] = size >>> 16 & 0xFF;
+ result[2] = size >>> 8 & 0xFF;
+ result[3] = size & 0xFF;
+
+ result.set(type, 4); // type
+
+ var offset = 8;
+ for (var _i = 0; _i < arrayCount; _i++) {
+ // data body
+ result.set(datas[_i], offset);
+ offset += datas[_i].byteLength;
+ }
+
+ return result;
+ }
+
+ // emit ftyp & moov
+
+ }, {
+ key: 'generateInitSegment',
+ value: function generateInitSegment(meta) {
+ var ftyp = MP4.box(MP4.types.ftyp, MP4.constants.FTYP);
+ var moov = MP4.moov(meta);
+
+ var result = new Uint8Array(ftyp.byteLength + moov.byteLength);
+ result.set(ftyp, 0);
+ result.set(moov, ftyp.byteLength);
+ return result;
+ }
+
+ // Movie metadata box
+
+ }, {
+ key: 'moov',
+ value: function moov(meta) {
+ var mvhd = MP4.mvhd(meta.timescale, meta.duration);
+ var trak = MP4.trak(meta);
+ var mvex = MP4.mvex(meta);
+ return MP4.box(MP4.types.moov, mvhd, trak, mvex);
+ }
+
+ // Movie header box
+
+ }, {
+ key: 'mvhd',
+ value: function mvhd(timescale, duration) {
+ return MP4.box(MP4.types.mvhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags
+ 0x00, 0x00, 0x00, 0x00, // creation_time
+ 0x00, 0x00, 0x00, 0x00, // modification_time
+ timescale >>> 24 & 0xFF, // timescale: 4 bytes
+ timescale >>> 16 & 0xFF, timescale >>> 8 & 0xFF, timescale & 0xFF, duration >>> 24 & 0xFF, // duration: 4 bytes
+ duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, 0x00, 0x01, 0x00, 0x00, // Preferred rate: 1.0
+ 0x01, 0x00, 0x00, 0x00, // PreferredVolume(1.0, 2bytes) + reserved(2bytes)
+ 0x00, 0x00, 0x00, 0x00, // reserved: 4 + 4 bytes
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----
+ 0x00, 0x00, 0x00, 0x00, // ----begin pre_defined 6 * 4 bytes----
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ----end pre_defined 6 * 4 bytes----
+ 0xFF, 0xFF, 0xFF, 0xFF // next_track_ID
+ ]));
+ }
+
+ // Track box
+
+ }, {
+ key: 'trak',
+ value: function trak(meta) {
+ return MP4.box(MP4.types.trak, MP4.tkhd(meta), MP4.mdia(meta));
+ }
+
+ // Track header box
+
+ }, {
+ key: 'tkhd',
+ value: function tkhd(meta) {
+ var trackId = meta.id,
+ duration = meta.duration;
+ var width = meta.presentWidth,
+ height = meta.presentHeight;
+
+ return MP4.box(MP4.types.tkhd, new Uint8Array([0x00, 0x00, 0x00, 0x07, // version(0) + flags
+ 0x00, 0x00, 0x00, 0x00, // creation_time
+ 0x00, 0x00, 0x00, 0x00, // modification_time
+ trackId >>> 24 & 0xFF, // track_ID: 4 bytes
+ trackId >>> 16 & 0xFF, trackId >>> 8 & 0xFF, trackId & 0xFF, 0x00, 0x00, 0x00, 0x00, // reserved: 4 bytes
+ duration >>> 24 & 0xFF, // duration: 4 bytes
+ duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // layer(2bytes) + alternate_group(2bytes)
+ 0x00, 0x00, 0x00, 0x00, // volume(2bytes) + reserved(2bytes)
+ 0x00, 0x01, 0x00, 0x00, // ----begin composition matrix----
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // ----end composition matrix----
+ width >>> 8 & 0xFF, // width and height
+ width & 0xFF, 0x00, 0x00, height >>> 8 & 0xFF, height & 0xFF, 0x00, 0x00
+ ]));
+ }
+
+ // Media Box
+
+ }, {
+ key: 'mdia',
+ value: function mdia(meta) {
+ return MP4.box(MP4.types.mdia, MP4.mdhd(meta), MP4.hdlr(meta), MP4.minf(meta));
+ }
+
+ // Media header box
+
+ }, {
+ key: 'mdhd',
+ value: function mdhd(meta) {
+ var timescale = meta.timescale;
+ var duration = meta.duration;
+ return MP4.box(MP4.types.mdhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags
+ 0x00, 0x00, 0x00, 0x00, // creation_time
+ 0x00, 0x00, 0x00, 0x00, // modification_time
+ timescale >>> 24 & 0xFF, // timescale: 4 bytes
+ timescale >>> 16 & 0xFF, timescale >>> 8 & 0xFF, timescale & 0xFF, duration >>> 24 & 0xFF, // duration: 4 bytes
+ duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, 0x55, 0xC4, // language: und (undetermined)
+ 0x00, 0x00 // pre_defined = 0
+ ]));
+ }
+
+ // Media handler reference box
+
+ }, {
+ key: 'hdlr',
+ value: function hdlr(meta) {
+ var data = null;
+ if (meta.type === 'audio') {
+ data = MP4.constants.HDLR_AUDIO;
+ } else {
+ data = MP4.constants.HDLR_VIDEO;
+ }
+ return MP4.box(MP4.types.hdlr, data);
+ }
+
+ // Media infomation box
+
+ }, {
+ key: 'minf',
+ value: function minf(meta) {
+ var xmhd = null;
+ if (meta.type === 'audio') {
+ xmhd = MP4.box(MP4.types.smhd, MP4.constants.SMHD);
+ } else {
+ xmhd = MP4.box(MP4.types.vmhd, MP4.constants.VMHD);
+ }
+ return MP4.box(MP4.types.minf, xmhd, MP4.dinf(), MP4.stbl(meta));
+ }
+
+ // Data infomation box
+
+ }, {
+ key: 'dinf',
+ value: function dinf() {
+ var result = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, MP4.constants.DREF));
+ return result;
+ }
+
+ // Sample table box
+
+ }, {
+ key: 'stbl',
+ value: function stbl(meta) {
+ var result = MP4.box(MP4.types.stbl, // type: stbl
+ MP4.stsd(meta), // Sample Description Table
+ MP4.box(MP4.types.stts, MP4.constants.STTS), // Time-To-Sample
+ MP4.box(MP4.types.stsc, MP4.constants.STSC), // Sample-To-Chunk
+ MP4.box(MP4.types.stsz, MP4.constants.STSZ), // Sample size
+ MP4.box(MP4.types.stco, MP4.constants.STCO // Chunk offset
+ ));
+ return result;
+ }
+
+ // Sample description box
+
+ }, {
+ key: 'stsd',
+ value: function stsd(meta) {
+ if (meta.type === 'audio') {
+ if (meta.codec === 'mp3') {
+ return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp3(meta));
+ }
+ // else: aac -> mp4a
+ return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.mp4a(meta));
+ } else {
+ return MP4.box(MP4.types.stsd, MP4.constants.STSD_PREFIX, MP4.avc1(meta));
+ }
+ }
+ }, {
+ key: 'mp3',
+ value: function mp3(meta) {
+ var channelCount = meta.channelCount;
+ var sampleRate = meta.audioSampleRate;
+
+ var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // reserved(4)
+ 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2)
+ 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes
+ 0x00, 0x00, 0x00, 0x00, 0x00, channelCount, // channelCount(2)
+ 0x00, 0x10, // sampleSize(2)
+ 0x00, 0x00, 0x00, 0x00, // reserved(4)
+ sampleRate >>> 8 & 0xFF, // Audio sample rate
+ sampleRate & 0xFF, 0x00, 0x00
+ ]);
+
+ return MP4.box(MP4.types['.mp3'], data);
+ }
+ }, {
+ key: 'mp4a',
+ value: function mp4a(meta) {
+ var channelCount = meta.channelCount;
+ var sampleRate = meta.audioSampleRate;
+
+ var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // reserved(4)
+ 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2)
+ 0x00, 0x00, 0x00, 0x00, // reserved: 2 * 4 bytes
+ 0x00, 0x00, 0x00, 0x00, 0x00, channelCount, // channelCount(2)
+ 0x00, 0x10, // sampleSize(2)
+ 0x00, 0x00, 0x00, 0x00, // reserved(4)
+ sampleRate >>> 8 & 0xFF, // Audio sample rate
+ sampleRate & 0xFF, 0x00, 0x00
+ ]);
+
+ return MP4.box(MP4.types.mp4a, data, MP4.esds(meta));
+ }
+ }, {
+ key: 'esds',
+ value: function esds(meta) {
+ var config = meta.config || [];
+ var configSize = config.length;
+ var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version 0 + flags
+
+ 0x03, // descriptor_type
+ 0x17 + configSize, // length3
+ 0x00, 0x01, // es_id
+ 0x00, // stream_priority
+
+ 0x04, // descriptor_type
+ 0x0F + configSize, // length
+ 0x40, // codec: mpeg4_audio
+ 0x15, // stream_type: Audio
+ 0x00, 0x00, 0x00, // buffer_size
+ 0x00, 0x00, 0x00, 0x00, // maxBitrate
+ 0x00, 0x00, 0x00, 0x00, // avgBitrate
+
+ 0x05 // descriptor_type
+ ].concat([configSize]).concat(config).concat([0x06, 0x01, 0x02 // GASpecificConfig
+ ]));
+ return MP4.box(MP4.types.esds, data);
+ }
+ }, {
+ key: 'avc1',
+ value: function avc1(meta) {
+ var avcc = meta.avcc;
+ var width = meta.codecWidth,
+ height = meta.codecHeight;
+
+ var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // reserved(4)
+ 0x00, 0x00, 0x00, 0x01, // reserved(2) + data_reference_index(2)
+ 0x00, 0x00, 0x00, 0x00, // pre_defined(2) + reserved(2)
+ 0x00, 0x00, 0x00, 0x00, // pre_defined: 3 * 4 bytes
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, width >>> 8 & 0xFF, // width: 2 bytes
+ width & 0xFF, height >>> 8 & 0xFF, // height: 2 bytes
+ height & 0xFF, 0x00, 0x48, 0x00, 0x00, // horizresolution: 4 bytes
+ 0x00, 0x48, 0x00, 0x00, // vertresolution: 4 bytes
+ 0x00, 0x00, 0x00, 0x00, // reserved: 4 bytes
+ 0x00, 0x01, // frame_count
+ 0x0A, // strlen
+ 0x78, 0x71, 0x71, 0x2F, // compressorname: 32 bytes
+ 0x66, 0x6C, 0x76, 0x2E, 0x6A, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, // depth
+ 0xFF, 0xFF // pre_defined = -1
+ ]);
+ return MP4.box(MP4.types.avc1, data, MP4.box(MP4.types.avcC, avcc));
+ }
+
+ // Movie Extends box
+
+ }, {
+ key: 'mvex',
+ value: function mvex(meta) {
+ return MP4.box(MP4.types.mvex, MP4.trex(meta));
+ }
+
+ // Track Extends box
+
+ }, {
+ key: 'trex',
+ value: function trex(meta) {
+ var trackId = meta.id;
+ var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) + flags
+ trackId >>> 24 & 0xFF, // track_ID
+ trackId >>> 16 & 0xFF, trackId >>> 8 & 0xFF, trackId & 0xFF, 0x00, 0x00, 0x00, 0x01, // default_sample_description_index
+ 0x00, 0x00, 0x00, 0x00, // default_sample_duration
+ 0x00, 0x00, 0x00, 0x00, // default_sample_size
+ 0x00, 0x01, 0x00, 0x01 // default_sample_flags
+ ]);
+ return MP4.box(MP4.types.trex, data);
+ }
+
+ // Movie fragment box
+
+ }, {
+ key: 'moof',
+ value: function moof(track, baseMediaDecodeTime) {
+ return MP4.box(MP4.types.moof, MP4.mfhd(track.sequenceNumber), MP4.traf(track, baseMediaDecodeTime));
+ }
+ }, {
+ key: 'mfhd',
+ value: function mfhd(sequenceNumber) {
+ var data = new Uint8Array([0x00, 0x00, 0x00, 0x00, sequenceNumber >>> 24 & 0xFF, // sequence_number: int32
+ sequenceNumber >>> 16 & 0xFF, sequenceNumber >>> 8 & 0xFF, sequenceNumber & 0xFF
+ ]);
+ return MP4.box(MP4.types.mfhd, data);
+ }
+
+ // Track fragment box
+
+ }, {
+ key: 'traf',
+ value: function traf(track, baseMediaDecodeTime) {
+ var trackId = track.id;
+
+ // Track fragment header box
+ var tfhd = MP4.box(MP4.types.tfhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) & flags
+ trackId >>> 24 & 0xFF, // track_ID
+ trackId >>> 16 & 0xFF, trackId >>> 8 & 0xFF, trackId & 0xFF
+ ]));
+ // Track Fragment Decode Time
+ var tfdt = MP4.box(MP4.types.tfdt, new Uint8Array([0x00, 0x00, 0x00, 0x00, // version(0) & flags
+ baseMediaDecodeTime >>> 24 & 0xFF, // baseMediaDecodeTime: int32
+ baseMediaDecodeTime >>> 16 & 0xFF, baseMediaDecodeTime >>> 8 & 0xFF, baseMediaDecodeTime & 0xFF
+ ]));
+ var sdtp = MP4.sdtp(track);
+ var trun = MP4.trun(track, sdtp.byteLength + 16 + 16 + 8 + 16 + 8 + 8);
+
+ return MP4.box(MP4.types.traf, tfhd, tfdt, trun, sdtp);
+ }
+
+ // Sample Dependency Type box
+
+ }, {
+ key: 'sdtp',
+ value: function sdtp(track) {
+ var samples = track.samples || [];
+ var sampleCount = samples.length;
+ var data = new Uint8Array(4 + sampleCount);
+ // 0~4 bytes: version(0) & flags
+ for (var i = 0; i < sampleCount; i++) {
+ var flags = samples[i].flags;
+ data[i + 4] = flags.isLeading << 6 | // is_leading: 2 (bit)
+ flags.dependsOn << 4 // sample_depends_on
+ |
+ flags.isDependedOn << 2 // sample_is_depended_on
+ |
+ flags.hasRedundancy; // sample_has_redundancy
+ }
+ return MP4.box(MP4.types.sdtp, data);
+ }
+
+ // Track fragment run box
+
+ }, {
+ key: 'trun',
+ value: function trun(track, offset) {
+ var samples = track.samples || [];
+ var sampleCount = samples.length;
+ var dataSize = 12 + 16 * sampleCount;
+ var data = new Uint8Array(dataSize);
+ offset += 8 + dataSize;
+
+ data.set([0x00, 0x00, 0x0F, 0x01, // version(0) & flags
+ sampleCount >>> 24 & 0xFF, // sample_count
+ sampleCount >>> 16 & 0xFF, sampleCount >>> 8 & 0xFF, sampleCount & 0xFF, offset >>> 24 & 0xFF, // data_offset
+ offset >>> 16 & 0xFF, offset >>> 8 & 0xFF, offset & 0xFF
+ ], 0);
+
+ for (var i = 0; i < sampleCount; i++) {
+ var duration = samples[i].duration;
+ var size = samples[i].size;
+ var flags = samples[i].flags;
+ var cts = samples[i].cts;
+ data.set([duration >>> 24 & 0xFF, // sample_duration
+ duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, size >>> 24 & 0xFF, // sample_size
+ size >>> 16 & 0xFF, size >>> 8 & 0xFF, size & 0xFF, flags.isLeading << 2 | flags.dependsOn, // sample_flags
+ flags.isDependedOn << 6 | flags.hasRedundancy << 4 | flags.isNonSync, 0x00, 0x00, // sample_degradation_priority
+ cts >>> 24 & 0xFF, // sample_composition_time_offset
+ cts >>> 16 & 0xFF, cts >>> 8 & 0xFF, cts & 0xFF
+ ], 12 + 16 * i);
+ }
+ return MP4.box(MP4.types.trun, data);
+ }
+ }, {
+ key: 'mdat',
+ value: function mdat(data) {
+ return MP4.box(MP4.types.mdat, data);
+ }
+ }]);
+
+ return MP4;
+ }();
+
+ MP4.init();
+
+ exports.default = MP4;
+
+ }, {}],
+ 38: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var _logger = _dereq_('../utils/logger.js');
+
+ var _logger2 = _interopRequireDefault(_logger);
+
+ var _mp4Generator = _dereq_('./mp4-generator.js');
+
+ var _mp4Generator2 = _interopRequireDefault(_mp4Generator);
+
+ var _aacSilent = _dereq_('./aac-silent.js');
+
+ var _aacSilent2 = _interopRequireDefault(_aacSilent);
+
+ var _browser = _dereq_('../utils/browser.js');
+
+ var _browser2 = _interopRequireDefault(_browser);
+
+ var _mediaSegmentInfo = _dereq_('../core/media-segment-info.js');
+
+ var _exception = _dereq_('../utils/exception.js');
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ // Fragmented mp4 remuxer
+ var MP4Remuxer = function () {
+ function MP4Remuxer(config) {
+ _classCallCheck(this, MP4Remuxer);
+
+ this.TAG = 'MP4Remuxer';
+
+ this._config = config;
+ this._isLive = config.isLive === true ? true : false;
+
+ this._dtsBase = -1;
+ this._dtsBaseInited = false;
+ this._audioDtsBase = Infinity;
+ this._videoDtsBase = Infinity;
+ this._audioNextDts = undefined;
+ this._videoNextDts = undefined;
+ this._audioStashedLastSample = null;
+ this._videoStashedLastSample = null;
+
+ this._audioMeta = null;
+ this._videoMeta = null;
+
+ this._audioSegmentInfoList = new _mediaSegmentInfo.MediaSegmentInfoList('audio');
+ this._videoSegmentInfoList = new _mediaSegmentInfo.MediaSegmentInfoList('video');
+
+ this._onInitSegment = null;
+ this._onMediaSegment = null;
+
+ // Workaround for chrome < 50: Always force first sample as a Random Access Point in media segment
+ // see https://bugs.chromium.org/p/chromium/issues/detail?id=229412
+ this._forceFirstIDR = _browser2.default.chrome && (_browser2.default.version.major < 50 || _browser2.default.version.major === 50 && _browser2.default.version.build < 2661) ? true : false;
+
+ // Workaround for IE11/Edge: Fill silent aac frame after keyframe-seeking
+ // Make audio beginDts equals with video beginDts, in order to fix seek freeze
+ this._fillSilentAfterSeek = _browser2.default.msedge || _browser2.default.msie;
+
+ // While only FireFox supports 'audio/mp4, codecs="mp3"', use 'audio/mpeg' for chrome, safari, ...
+ this._mp3UseMpegAudio = !_browser2.default.firefox;
+
+ this._fillAudioTimestampGap = this._config.fixAudioTimestampGap;
+ }
+
+ _createClass(MP4Remuxer, [{
+ key: 'destroy',
+ value: function destroy() {
+ this._dtsBase = -1;
+ this._dtsBaseInited = false;
+ this._audioMeta = null;
+ this._videoMeta = null;
+ this._audioSegmentInfoList.clear();
+ this._audioSegmentInfoList = null;
+ this._videoSegmentInfoList.clear();
+ this._videoSegmentInfoList = null;
+ this._onInitSegment = null;
+ this._onMediaSegment = null;
+ }
+ }, {
+ key: 'bindDataSource',
+ value: function bindDataSource(producer) {
+ producer.onDataAvailable = this.remux.bind(this);
+ producer.onTrackMetadata = this._onTrackMetadataReceived.bind(this);
+ return this;
+ }
+
+ /* prototype: function onInitSegment(type: string, initSegment: ArrayBuffer): void
+ InitSegment: {
+ type: string,
+ data: ArrayBuffer,
+ codec: string,
+ container: string
+ }
+ */
+
+ }, {
+ key: 'insertDiscontinuity',
+ value: function insertDiscontinuity() {
+ this._audioNextDts = this._videoNextDts = undefined;
+ }
+ }, {
+ key: 'seek',
+ value: function seek(originalDts) {
+ this._audioStashedLastSample = null;
+ this._videoStashedLastSample = null;
+ this._videoSegmentInfoList.clear();
+ this._audioSegmentInfoList.clear();
+ }
+ }, {
+ key: 'remux',
+ value: function remux(audioTrack, videoTrack) {
+ if (!this._onMediaSegment) {
+ throw new _exception.IllegalStateException('MP4Remuxer: onMediaSegment callback must be specificed!');
+ }
+ if (!this._dtsBaseInited) {
+ this._calculateDtsBase(audioTrack, videoTrack);
+ }
+ this._remuxVideo(videoTrack);
+ this._remuxAudio(audioTrack);
+ }
+ }, {
+ key: '_onTrackMetadataReceived',
+ value: function _onTrackMetadataReceived(type, metadata) {
+ var metabox = null;
+
+ var container = 'mp4';
+ var codec = metadata.codec;
+
+ if (type === 'audio') {
+ this._audioMeta = metadata;
+ if (metadata.codec === 'mp3' && this._mp3UseMpegAudio) {
+ // 'audio/mpeg' for MP3 audio track
+ container = 'mpeg';
+ codec = '';
+ metabox = new Uint8Array();
+ } else {
+ // 'audio/mp4, codecs="codec"'
+ metabox = _mp4Generator2.default.generateInitSegment(metadata);
+ }
+ } else if (type === 'video') {
+ this._videoMeta = metadata;
+ metabox = _mp4Generator2.default.generateInitSegment(metadata);
+ } else {
+ return;
+ }
+
+ // dispatch metabox (Initialization Segment)
+ if (!this._onInitSegment) {
+ throw new _exception.IllegalStateException('MP4Remuxer: onInitSegment callback must be specified!');
+ }
+ this._onInitSegment(type, {
+ type: type,
+ data: metabox.buffer,
+ codec: codec,
+ container: type + '/' + container,
+ mediaDuration: metadata.duration // in timescale 1000 (milliseconds)
+ });
+ }
+ }, {
+ key: '_calculateDtsBase',
+ value: function _calculateDtsBase(audioTrack, videoTrack) {
+ if (this._dtsBaseInited) {
+ return;
+ }
+
+ if (audioTrack.samples && audioTrack.samples.length) {
+ this._audioDtsBase = audioTrack.samples[0].dts;
+ }
+ if (videoTrack.samples && videoTrack.samples.length) {
+ this._videoDtsBase = videoTrack.samples[0].dts;
+ }
+
+ this._dtsBase = Math.min(this._audioDtsBase, this._videoDtsBase);
+ this._dtsBaseInited = true;
+ }
+ }, {
+ key: 'flushStashedSamples',
+ value: function flushStashedSamples() {
+ var videoSample = this._videoStashedLastSample;
+ var audioSample = this._audioStashedLastSample;
+
+ var videoTrack = {
+ type: 'video',
+ id: 1,
+ sequenceNumber: 0,
+ samples: [],
+ length: 0
+ };
+
+ if (videoSample != null) {
+ videoTrack.samples.push(videoSample);
+ videoTrack.length = videoSample.length;
+ }
+
+ var audioTrack = {
+ type: 'audio',
+ id: 2,
+ sequenceNumber: 0,
+ samples: [],
+ length: 0
+ };
+
+ if (audioSample != null) {
+ audioTrack.samples.push(audioSample);
+ audioTrack.length = audioSample.length;
+ }
+
+ this._videoStashedLastSample = null;
+ this._audioStashedLastSample = null;
+
+ this._remuxVideo(videoTrack, true);
+ this._remuxAudio(audioTrack, true);
+ }
+ }, {
+ key: '_remuxAudio',
+ value: function _remuxAudio(audioTrack, force) {
+ if (this._audioMeta == null) {
+ return;
+ }
+
+ var track = audioTrack;
+ var samples = track.samples;
+ var dtsCorrection = undefined;
+ var firstDts = -1,
+ lastDts = -1,
+ lastPts = -1;
+ var refSampleDuration = this._audioMeta.refSampleDuration;
+
+ var mpegRawTrack = this._audioMeta.codec === 'mp3' && this._mp3UseMpegAudio;
+ var firstSegmentAfterSeek = this._dtsBaseInited && this._audioNextDts === undefined;
+
+ var insertPrefixSilentFrame = false;
+
+ if (!samples || samples.length === 0) {
+ return;
+ }
+ if (samples.length === 1 && !force) {
+ // If [sample count in current batch] === 1 && (force != true)
+ // Ignore and keep in demuxer's queue
+ return;
+ } // else if (force === true) do remux
+
+ var offset = 0;
+ var mdatbox = null;
+ var mdatBytes = 0;
+
+ // calculate initial mdat size
+ if (mpegRawTrack) {
+ // for raw mpeg buffer
+ offset = 0;
+ mdatBytes = track.length;
+ } else {
+ // for fmp4 mdat box
+ offset = 8; // size + type
+ mdatBytes = 8 + track.length;
+ }
+
+ var lastSample = null;
+
+ // Pop the lastSample and waiting for stash
+ if (samples.length > 1) {
+ lastSample = samples.pop();
+ mdatBytes -= lastSample.length;
+ }
+
+ // Insert [stashed lastSample in the previous batch] to the front
+ if (this._audioStashedLastSample != null) {
+ var sample = this._audioStashedLastSample;
+ this._audioStashedLastSample = null;
+ samples.unshift(sample);
+ mdatBytes += sample.length;
+ }
+
+ // Stash the lastSample of current batch, waiting for next batch
+ if (lastSample != null) {
+ this._audioStashedLastSample = lastSample;
+ }
+
+ var firstSampleOriginalDts = samples[0].dts - this._dtsBase;
+
+ // calculate dtsCorrection
+ if (this._audioNextDts) {
+ dtsCorrection = firstSampleOriginalDts - this._audioNextDts;
+ } else {
+ // this._audioNextDts == undefined
+ if (this._audioSegmentInfoList.isEmpty()) {
+ dtsCorrection = 0;
+ if (this._fillSilentAfterSeek && !this._videoSegmentInfoList.isEmpty()) {
+ if (this._audioMeta.originalCodec !== 'mp3') {
+ insertPrefixSilentFrame = true;
+ }
+ }
+ } else {
+ var _lastSample = this._audioSegmentInfoList.getLastSampleBefore(firstSampleOriginalDts);
+ if (_lastSample != null) {
+ var distance = firstSampleOriginalDts - (_lastSample.originalDts + _lastSample.duration);
+ if (distance <= 3) {
+ distance = 0;
+ }
+ var expectedDts = _lastSample.dts + _lastSample.duration + distance;
+ dtsCorrection = firstSampleOriginalDts - expectedDts;
+ } else {
+ // lastSample == null, cannot found
+ dtsCorrection = 0;
+ }
+ }
+ }
+
+ if (insertPrefixSilentFrame) {
+ // align audio segment beginDts to match with current video segment's beginDts
+ var firstSampleDts = firstSampleOriginalDts - dtsCorrection;
+ var videoSegment = this._videoSegmentInfoList.getLastSegmentBefore(firstSampleOriginalDts);
+ if (videoSegment != null && videoSegment.beginDts < firstSampleDts) {
+ var silentUnit = _aacSilent2.default.getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount);
+ if (silentUnit) {
+ var dts = videoSegment.beginDts;
+ var silentFrameDuration = firstSampleDts - videoSegment.beginDts;
+ _logger2.default.v(this.TAG, 'InsertPrefixSilentAudio: dts: ' + dts + ', duration: ' + silentFrameDuration);
+ samples.unshift({
+ unit: silentUnit,
+ dts: dts,
+ pts: dts
+ });
+ mdatBytes += silentUnit.byteLength;
+ } // silentUnit == null: Cannot generate, skip
+ } else {
+ insertPrefixSilentFrame = false;
+ }
+ }
+
+ var mp4Samples = [];
+
+ // Correct dts for each sample, and calculate sample duration. Then output to mp4Samples
+ for (var i = 0; i < samples.length; i++) {
+ var _sample = samples[i];
+ var unit = _sample.unit;
+ var originalDts = _sample.dts - this._dtsBase;
+ var _dts = originalDts - dtsCorrection;
+
+ if (firstDts === -1) {
+ firstDts = _dts;
+ }
+
+ var sampleDuration = 0;
+
+ if (i !== samples.length - 1) {
+ var nextDts = samples[i + 1].dts - this._dtsBase - dtsCorrection;
+ sampleDuration = nextDts - _dts;
+ } else {
+ // the last sample
+ if (lastSample != null) {
+ // use stashed sample's dts to calculate sample duration
+ var _nextDts = lastSample.dts - this._dtsBase - dtsCorrection;
+ sampleDuration = _nextDts - _dts;
+ } else if (mp4Samples.length >= 1) {
+ // use second last sample duration
+ sampleDuration = mp4Samples[mp4Samples.length - 1].duration;
+ } else {
+ // the only one sample, use reference sample duration
+ sampleDuration = Math.floor(refSampleDuration);
+ }
+ }
+
+ var needFillSilentFrames = false;
+ var silentFrames = null;
+
+ // Silent frame generation, if large timestamp gap detected && config.fixAudioTimestampGap
+ if (sampleDuration > refSampleDuration * 1.5 && this._audioMeta.codec !== 'mp3' && this._fillAudioTimestampGap && !_browser2.default.safari) {
+ // We need to insert silent frames to fill timestamp gap
+ needFillSilentFrames = true;
+ var delta = Math.abs(sampleDuration - refSampleDuration);
+ var frameCount = Math.ceil(delta / refSampleDuration);
+ var currentDts = _dts + refSampleDuration; // Notice: in float
+
+ _logger2.default.w(this.TAG, 'Large audio timestamp gap detected, may cause AV sync to drift. ' + 'Silent frames will be generated to avoid unsync.\n' + ('dts: ' + (_dts + sampleDuration) + ' ms, expected: ' + (_dts + Math.round(refSampleDuration)) + ' ms, ') + ('delta: ' + Math.round(delta) + ' ms, generate: ' + frameCount + ' frames'));
+
+ var _silentUnit = _aacSilent2.default.getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount);
+ if (_silentUnit == null) {
+ _logger2.default.w(this.TAG, 'Unable to generate silent frame for ' + (this._audioMeta.originalCodec + ' with ' + this._audioMeta.channelCount + ' channels, repeat last frame'));
+ // Repeat last frame
+ _silentUnit = unit;
+ }
+ silentFrames = [];
+
+ for (var j = 0; j < frameCount; j++) {
+ var intDts = Math.round(currentDts); // round to integer
+ if (silentFrames.length > 0) {
+ // Set previous frame sample duration
+ var previousFrame = silentFrames[silentFrames.length - 1];
+ previousFrame.duration = intDts - previousFrame.dts;
+ }
+ var frame = {
+ dts: intDts,
+ pts: intDts,
+ cts: 0,
+ unit: _silentUnit,
+ size: _silentUnit.byteLength,
+ duration: 0, // wait for next sample
+ originalDts: originalDts,
+ flags: {
+ isLeading: 0,
+ dependsOn: 1,
+ isDependedOn: 0,
+ hasRedundancy: 0
+ }
+ };
+ silentFrames.push(frame);
+ mdatBytes += frame.size;
+ currentDts += refSampleDuration;
+ }
+
+ // last frame: align end time to next frame dts
+ var lastFrame = silentFrames[silentFrames.length - 1];
+ lastFrame.duration = _dts + sampleDuration - lastFrame.dts;
+
+ // silentFrames.forEach((frame) => {
+ // Log.w(this.TAG, `SilentAudio: dts: ${frame.dts}, duration: ${frame.duration}`);
+ // });
+
+ // Set correct sample duration for current frame
+ sampleDuration = Math.round(refSampleDuration);
+ }
+
+ mp4Samples.push({
+ dts: _dts,
+ pts: _dts,
+ cts: 0,
+ unit: _sample.unit,
+ size: _sample.unit.byteLength,
+ duration: sampleDuration,
+ originalDts: originalDts,
+ flags: {
+ isLeading: 0,
+ dependsOn: 1,
+ isDependedOn: 0,
+ hasRedundancy: 0
+ }
+ });
+
+ if (needFillSilentFrames) {
+ // Silent frames should be inserted after wrong-duration frame
+ mp4Samples.push.apply(mp4Samples, silentFrames);
+ }
+ }
+
+ // allocate mdatbox
+ if (mpegRawTrack) {
+ // allocate for raw mpeg buffer
+ mdatbox = new Uint8Array(mdatBytes);
+ } else {
+ // allocate for fmp4 mdat box
+ mdatbox = new Uint8Array(mdatBytes);
+ // size field
+ mdatbox[0] = mdatBytes >>> 24 & 0xFF;
+ mdatbox[1] = mdatBytes >>> 16 & 0xFF;
+ mdatbox[2] = mdatBytes >>> 8 & 0xFF;
+ mdatbox[3] = mdatBytes & 0xFF;
+ // type field (fourCC)
+ mdatbox.set(_mp4Generator2.default.types.mdat, 4);
+ }
+
+ // Write samples into mdatbox
+ for (var _i = 0; _i < mp4Samples.length; _i++) {
+ var _unit = mp4Samples[_i].unit;
+ mdatbox.set(_unit, offset);
+ offset += _unit.byteLength;
+ }
+
+ var latest = mp4Samples[mp4Samples.length - 1];
+ lastDts = latest.dts + latest.duration;
+ this._audioNextDts = lastDts;
+
+ // fill media segment info & add to info list
+ var info = new _mediaSegmentInfo.MediaSegmentInfo();
+ info.beginDts = firstDts;
+ info.endDts = lastDts;
+ info.beginPts = firstDts;
+ info.endPts = lastDts;
+ info.originalBeginDts = mp4Samples[0].originalDts;
+ info.originalEndDts = latest.originalDts + latest.duration;
+ info.firstSample = new _mediaSegmentInfo.SampleInfo(mp4Samples[0].dts, mp4Samples[0].pts, mp4Samples[0].duration, mp4Samples[0].originalDts, false);
+ info.lastSample = new _mediaSegmentInfo.SampleInfo(latest.dts, latest.pts, latest.duration, latest.originalDts, false);
+ if (!this._isLive) {
+ this._audioSegmentInfoList.append(info);
+ }
+
+ track.samples = mp4Samples;
+ track.sequenceNumber++;
+
+ var moofbox = null;
+
+ if (mpegRawTrack) {
+ // Generate empty buffer, because useless for raw mpeg
+ moofbox = new Uint8Array();
+ } else {
+ // Generate moof for fmp4 segment
+ moofbox = _mp4Generator2.default.moof(track, firstDts);
+ }
+
+ track.samples = [];
+ track.length = 0;
+
+ var segment = {
+ type: 'audio',
+ data: this._mergeBoxes(moofbox, mdatbox).buffer,
+ sampleCount: mp4Samples.length,
+ info: info
+ };
+
+ if (mpegRawTrack && firstSegmentAfterSeek) {
+ // For MPEG audio stream in MSE, if seeking occurred, before appending new buffer
+ // We need explicitly set timestampOffset to the desired point in timeline for mpeg SourceBuffer.
+ segment.timestampOffset = firstDts;
+ }
+
+ this._onMediaSegment('audio', segment);
+ }
+ }, {
+ key: '_remuxVideo',
+ value: function _remuxVideo(videoTrack, force) {
+ if (this._videoMeta == null) {
+ return;
+ }
+
+ var track = videoTrack;
+ var samples = track.samples;
+ var dtsCorrection = undefined;
+ var firstDts = -1,
+ lastDts = -1;
+ var firstPts = -1,
+ lastPts = -1;
+
+ if (!samples || samples.length === 0) {
+ return;
+ }
+ if (samples.length === 1 && !force) {
+ // If [sample count in current batch] === 1 && (force != true)
+ // Ignore and keep in demuxer's queue
+ return;
+ } // else if (force === true) do remux
+
+ var offset = 8;
+ var mdatbox = null;
+ var mdatBytes = 8 + videoTrack.length;
+
+ var lastSample = null;
+
+ // Pop the lastSample and waiting for stash
+ if (samples.length > 1) {
+ lastSample = samples.pop();
+ mdatBytes -= lastSample.length;
+ }
+
+ // Insert [stashed lastSample in the previous batch] to the front
+ if (this._videoStashedLastSample != null) {
+ var sample = this._videoStashedLastSample;
+ this._videoStashedLastSample = null;
+ samples.unshift(sample);
+ mdatBytes += sample.length;
+ }
+
+ // Stash the lastSample of current batch, waiting for next batch
+ if (lastSample != null) {
+ this._videoStashedLastSample = lastSample;
+ }
+
+ var firstSampleOriginalDts = samples[0].dts - this._dtsBase;
+
+ // calculate dtsCorrection
+ if (this._videoNextDts) {
+ dtsCorrection = firstSampleOriginalDts - this._videoNextDts;
+ } else {
+ // this._videoNextDts == undefined
+ if (this._videoSegmentInfoList.isEmpty()) {
+ dtsCorrection = 0;
+ } else {
+ var _lastSample2 = this._videoSegmentInfoList.getLastSampleBefore(firstSampleOriginalDts);
+ if (_lastSample2 != null) {
+ var distance = firstSampleOriginalDts - (_lastSample2.originalDts + _lastSample2.duration);
+ if (distance <= 3) {
+ distance = 0;
+ }
+ var expectedDts = _lastSample2.dts + _lastSample2.duration + distance;
+ dtsCorrection = firstSampleOriginalDts - expectedDts;
+ } else {
+ // lastSample == null, cannot found
+ dtsCorrection = 0;
+ }
+ }
+ }
+
+ var info = new _mediaSegmentInfo.MediaSegmentInfo();
+ var mp4Samples = [];
+
+ // Correct dts for each sample, and calculate sample duration. Then output to mp4Samples
+ for (var i = 0; i < samples.length; i++) {
+ var _sample2 = samples[i];
+ var originalDts = _sample2.dts - this._dtsBase;
+ var isKeyframe = _sample2.isKeyframe;
+ var dts = originalDts - dtsCorrection;
+ var cts = _sample2.cts;
+ var pts = dts + cts;
+
+ if (firstDts === -1) {
+ firstDts = dts;
+ firstPts = pts;
+ }
+
+ var sampleDuration = 0;
+
+ if (i !== samples.length - 1) {
+ var nextDts = samples[i + 1].dts - this._dtsBase - dtsCorrection;
+ sampleDuration = nextDts - dts;
+ } else {
+ // the last sample
+ if (lastSample != null) {
+ // use stashed sample's dts to calculate sample duration
+ var _nextDts2 = lastSample.dts - this._dtsBase - dtsCorrection;
+ sampleDuration = _nextDts2 - dts;
+ } else if (mp4Samples.length >= 1) {
+ // use second last sample duration
+ sampleDuration = mp4Samples[mp4Samples.length - 1].duration;
+ } else {
+ // the only one sample, use reference sample duration
+ sampleDuration = Math.floor(this._videoMeta.refSampleDuration);
+ }
+ }
+
+ if (isKeyframe) {
+ var syncPoint = new _mediaSegmentInfo.SampleInfo(dts, pts, sampleDuration, _sample2.dts, true);
+ syncPoint.fileposition = _sample2.fileposition;
+ info.appendSyncPoint(syncPoint);
+ }
+
+ mp4Samples.push({
+ dts: dts,
+ pts: pts,
+ cts: cts,
+ units: _sample2.units,
+ size: _sample2.length,
+ isKeyframe: isKeyframe,
+ duration: sampleDuration,
+ originalDts: originalDts,
+ flags: {
+ isLeading: 0,
+ dependsOn: isKeyframe ? 2 : 1,
+ isDependedOn: isKeyframe ? 1 : 0,
+ hasRedundancy: 0,
+ isNonSync: isKeyframe ? 0 : 1
+ }
+ });
+ }
+
+ // allocate mdatbox
+ mdatbox = new Uint8Array(mdatBytes);
+ mdatbox[0] = mdatBytes >>> 24 & 0xFF;
+ mdatbox[1] = mdatBytes >>> 16 & 0xFF;
+ mdatbox[2] = mdatBytes >>> 8 & 0xFF;
+ mdatbox[3] = mdatBytes & 0xFF;
+ mdatbox.set(_mp4Generator2.default.types.mdat, 4);
+
+ // Write samples into mdatbox
+ for (var _i2 = 0; _i2 < mp4Samples.length; _i2++) {
+ var units = mp4Samples[_i2].units;
+ while (units.length) {
+ var unit = units.shift();
+ var data = unit.data;
+ mdatbox.set(data, offset);
+ offset += data.byteLength;
+ }
+ }
+
+ var latest = mp4Samples[mp4Samples.length - 1];
+ lastDts = latest.dts + latest.duration;
+ lastPts = latest.pts + latest.duration;
+ this._videoNextDts = lastDts;
+
+ // fill media segment info & add to info list
+ info.beginDts = firstDts;
+ info.endDts = lastDts;
+ info.beginPts = firstPts;
+ info.endPts = lastPts;
+ info.originalBeginDts = mp4Samples[0].originalDts;
+ info.originalEndDts = latest.originalDts + latest.duration;
+ info.firstSample = new _mediaSegmentInfo.SampleInfo(mp4Samples[0].dts, mp4Samples[0].pts, mp4Samples[0].duration, mp4Samples[0].originalDts, mp4Samples[0].isKeyframe);
+ info.lastSample = new _mediaSegmentInfo.SampleInfo(latest.dts, latest.pts, latest.duration, latest.originalDts, latest.isKeyframe);
+ if (!this._isLive) {
+ this._videoSegmentInfoList.append(info);
+ }
+
+ track.samples = mp4Samples;
+ track.sequenceNumber++;
+
+ // workaround for chrome < 50: force first sample as a random access point
+ // see https://bugs.chromium.org/p/chromium/issues/detail?id=229412
+ if (this._forceFirstIDR) {
+ var flags = mp4Samples[0].flags;
+ flags.dependsOn = 2;
+ flags.isNonSync = 0;
+ }
+
+ var moofbox = _mp4Generator2.default.moof(track, firstDts);
+ track.samples = [];
+ track.length = 0;
+
+ this._onMediaSegment('video', {
+ type: 'video',
+ data: this._mergeBoxes(moofbox, mdatbox).buffer,
+ sampleCount: mp4Samples.length,
+ info: info
+ });
+ }
+ }, {
+ key: '_mergeBoxes',
+ value: function _mergeBoxes(moof, mdat) {
+ var result = new Uint8Array(moof.byteLength + mdat.byteLength);
+ result.set(moof, 0);
+ result.set(mdat, moof.byteLength);
+ return result;
+ }
+ }, {
+ key: 'onInitSegment',
+ get: function get() {
+ return this._onInitSegment;
+ },
+ set: function set(callback) {
+ this._onInitSegment = callback;
+ }
+
+ /* prototype: function onMediaSegment(type: string, mediaSegment: MediaSegment): void
+ MediaSegment: {
+ type: string,
+ data: ArrayBuffer,
+ sampleCount: int32
+ info: MediaSegmentInfo
+ }
+ */
+
+ }, {
+ key: 'onMediaSegment',
+ get: function get() {
+ return this._onMediaSegment;
+ },
+ set: function set(callback) {
+ this._onMediaSegment = callback;
+ }
+ }]);
+
+ return MP4Remuxer;
+ }();
+
+ exports.default = MP4Remuxer;
+
+ }, {
+ "../core/media-segment-info.js": 8,
+ "../utils/browser.js": 39,
+ "../utils/exception.js": 40,
+ "../utils/logger.js": 41,
+ "./aac-silent.js": 36,
+ "./mp4-generator.js": 37
+ }],
+ 39: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var Browser = {};
+
+ function detect() {
+ // modified from jquery-browser-plugin
+
+ var ua = self.navigator.userAgent.toLowerCase();
+
+ var match = /(edge)\/([\w.]+)/.exec(ua) || /(opr)[\/]([\w.]+)/.exec(ua) || /(chrome)[ \/]([\w.]+)/.exec(ua) || /(iemobile)[\/]([\w.]+)/.exec(ua) || /(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(ua) || /(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(ua) || /(webkit)[ \/]([\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || /(msie) ([\w.]+)/.exec(ua) || ua.indexOf('trident') >= 0 && /(rv)(?::| )([\w.]+)/.exec(ua) || ua.indexOf('compatible') < 0 && /(firefox)[ \/]([\w.]+)/.exec(ua) || [];
+
+ var platform_match = /(ipad)/.exec(ua) || /(ipod)/.exec(ua) || /(windows phone)/.exec(ua) || /(iphone)/.exec(ua) || /(kindle)/.exec(ua) || /(android)/.exec(ua) || /(windows)/.exec(ua) || /(mac)/.exec(ua) || /(linux)/.exec(ua) || /(cros)/.exec(ua) || [];
+
+ var matched = {
+ browser: match[5] || match[3] || match[1] || '',
+ version: match[2] || match[4] || '0',
+ majorVersion: match[4] || match[2] || '0',
+ platform: platform_match[0] || ''
+ };
+
+ var browser = {};
+ if (matched.browser) {
+ browser[matched.browser] = true;
+
+ var versionArray = matched.majorVersion.split('.');
+ browser.version = {
+ major: parseInt(matched.majorVersion, 10),
+ string: matched.version
+ };
+ if (versionArray.length > 1) {
+ browser.version.minor = parseInt(versionArray[1], 10);
+ }
+ if (versionArray.length > 2) {
+ browser.version.build = parseInt(versionArray[2], 10);
+ }
+ }
+
+ if (matched.platform) {
+ browser[matched.platform] = true;
+ }
+
+ if (browser.chrome || browser.opr || browser.safari) {
+ browser.webkit = true;
+ }
+
+ // MSIE. IE11 has 'rv' identifer
+ if (browser.rv || browser.iemobile) {
+ if (browser.rv) {
+ delete browser.rv;
+ }
+ var msie = 'msie';
+ matched.browser = msie;
+ browser[msie] = true;
+ }
+
+ // Microsoft Edge
+ if (browser.edge) {
+ delete browser.edge;
+ var msedge = 'msedge';
+ matched.browser = msedge;
+ browser[msedge] = true;
+ }
+
+ // Opera 15+
+ if (browser.opr) {
+ var opera = 'opera';
+ matched.browser = opera;
+ browser[opera] = true;
+ }
+
+ // Stock android browsers are marked as Safari
+ if (browser.safari && browser.android) {
+ var android = 'android';
+ matched.browser = android;
+ browser[android] = true;
+ }
+
+ browser.name = matched.browser;
+ browser.platform = matched.platform;
+
+ for (var key in Browser) {
+ if (Browser.hasOwnProperty(key)) {
+ delete Browser[key];
+ }
+ }
+ Object.assign(Browser, browser);
+ }
+
+ detect();
+
+ exports.default = Browser;
+
+ }, {}],
+ 40: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+
+ function _possibleConstructorReturn(self, call) {
+ if (!self) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+ return call && (typeof call === "object" || typeof call === "function") ? call : self;
+ }
+
+ function _inherits(subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
+ }
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var RuntimeException = exports.RuntimeException = function () {
+ function RuntimeException(message) {
+ _classCallCheck(this, RuntimeException);
+
+ this._message = message;
+ }
+
+ _createClass(RuntimeException, [{
+ key: 'toString',
+ value: function toString() {
+ return this.name + ': ' + this.message;
+ }
+ }, {
+ key: 'name',
+ get: function get() {
+ return 'RuntimeException';
+ }
+ }, {
+ key: 'message',
+ get: function get() {
+ return this._message;
+ }
+ }]);
+
+ return RuntimeException;
+ }();
+
+ var IllegalStateException = exports.IllegalStateException = function (_RuntimeException) {
+ _inherits(IllegalStateException, _RuntimeException);
+
+ function IllegalStateException(message) {
+ _classCallCheck(this, IllegalStateException);
+
+ return _possibleConstructorReturn(this, (IllegalStateException.__proto__ || Object.getPrototypeOf(IllegalStateException)).call(this, message));
+ }
+
+ _createClass(IllegalStateException, [{
+ key: 'name',
+ get: function get() {
+ return 'IllegalStateException';
+ }
+ }]);
+
+ return IllegalStateException;
+ }(RuntimeException);
+
+ var InvalidArgumentException = exports.InvalidArgumentException = function (_RuntimeException2) {
+ _inherits(InvalidArgumentException, _RuntimeException2);
+
+ function InvalidArgumentException(message) {
+ _classCallCheck(this, InvalidArgumentException);
+
+ return _possibleConstructorReturn(this, (InvalidArgumentException.__proto__ || Object.getPrototypeOf(InvalidArgumentException)).call(this, message));
+ }
+
+ _createClass(InvalidArgumentException, [{
+ key: 'name',
+ get: function get() {
+ return 'InvalidArgumentException';
+ }
+ }]);
+
+ return InvalidArgumentException;
+ }(RuntimeException);
+
+ var NotImplementedException = exports.NotImplementedException = function (_RuntimeException3) {
+ _inherits(NotImplementedException, _RuntimeException3);
+
+ function NotImplementedException(message) {
+ _classCallCheck(this, NotImplementedException);
+
+ return _possibleConstructorReturn(this, (NotImplementedException.__proto__ || Object.getPrototypeOf(NotImplementedException)).call(this, message));
+ }
+
+ _createClass(NotImplementedException, [{
+ key: 'name',
+ get: function get() {
+ return 'NotImplementedException';
+ }
+ }]);
+
+ return NotImplementedException;
+ }(RuntimeException);
+
+ }, {}],
+ 41: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var _events = _dereq_('events');
+
+ var _events2 = _interopRequireDefault(_events);
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ var Log = function () {
+ function Log() {
+ _classCallCheck(this, Log);
+ }
+
+ _createClass(Log, null, [{
+ key: 'e',
+ value: function e(tag, msg) {
+ if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;
+
+ var str = '[' + tag + '] > ' + msg;
+
+ if (Log.ENABLE_CALLBACK) {
+ Log.emitter.emit('log', 'error', str);
+ }
+
+ if (!Log.ENABLE_ERROR) {
+ return;
+ }
+ if (console.error) {
+ console.error(str);
+ } else if (console.warn) {
+ console.warn(str);
+ } else {
+ console.log(str);
+ }
+ }
+ }, {
+ key: 'i',
+ value: function i(tag, msg) {
+ if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;
+
+ var str = '[' + tag + '] > ' + msg;
+
+ if (Log.ENABLE_CALLBACK) {
+ Log.emitter.emit('log', 'info', str);
+ }
+
+ if (!Log.ENABLE_INFO) {
+ return;
+ }
+
+ if (console.info) {
+ console.info(str);
+ } else {
+ console.log(str);
+ }
+ }
+ }, {
+ key: 'w',
+ value: function w(tag, msg) {
+ if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;
+
+ var str = '[' + tag + '] > ' + msg;
+
+ if (Log.ENABLE_CALLBACK) {
+ Log.emitter.emit('log', 'warn', str);
+ }
+
+ if (!Log.ENABLE_WARN) {
+ return;
+ }
+
+ if (console.warn) {
+ console.warn(str);
+ } else {
+ console.log(str);
+ }
+ }
+ }, {
+ key: 'd',
+ value: function d(tag, msg) {
+ if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;
+
+ var str = '[' + tag + '] > ' + msg;
+
+ if (Log.ENABLE_CALLBACK) {
+ Log.emitter.emit('log', 'debug', str);
+ }
+
+ if (!Log.ENABLE_DEBUG) {
+ return;
+ }
+
+ if (console.debug) {
+ console.debug(str);
+ } else {
+ console.log(str);
+ }
+ }
+ }, {
+ key: 'v',
+ value: function v(tag, msg) {
+ if (!tag || Log.FORCE_GLOBAL_TAG) tag = Log.GLOBAL_TAG;
+
+ var str = '[' + tag + '] > ' + msg;
+
+ if (Log.ENABLE_CALLBACK) {
+ Log.emitter.emit('log', 'verbose', str);
+ }
+
+ if (!Log.ENABLE_VERBOSE) {
+ return;
+ }
+
+ console.log(str);
+ }
+ }]);
+
+ return Log;
+ }();
+
+ Log.GLOBAL_TAG = 'flv.js';
+ Log.FORCE_GLOBAL_TAG = false;
+ Log.ENABLE_ERROR = true;
+ Log.ENABLE_INFO = true;
+ Log.ENABLE_WARN = true;
+ Log.ENABLE_DEBUG = true;
+ Log.ENABLE_VERBOSE = true;
+
+ Log.ENABLE_CALLBACK = false;
+
+ Log.emitter = new _events2.default();
+
+ exports.default = Log;
+
+ }, {
+ "events": 2
+ }],
+ 42: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var _events = _dereq_('events');
+
+ var _events2 = _interopRequireDefault(_events);
+
+ var _logger = _dereq_('./logger.js');
+
+ var _logger2 = _interopRequireDefault(_logger);
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ var LoggingControl = function () {
+ function LoggingControl() {
+ _classCallCheck(this, LoggingControl);
+ }
+
+ _createClass(LoggingControl, null, [{
+ key: 'getConfig',
+ value: function getConfig() {
+ return {
+ globalTag: _logger2.default.GLOBAL_TAG,
+ forceGlobalTag: _logger2.default.FORCE_GLOBAL_TAG,
+ enableVerbose: _logger2.default.ENABLE_VERBOSE,
+ enableDebug: _logger2.default.ENABLE_DEBUG,
+ enableInfo: _logger2.default.ENABLE_INFO,
+ enableWarn: _logger2.default.ENABLE_WARN,
+ enableError: _logger2.default.ENABLE_ERROR,
+ enableCallback: _logger2.default.ENABLE_CALLBACK
+ };
+ }
+ }, {
+ key: 'applyConfig',
+ value: function applyConfig(config) {
+ _logger2.default.GLOBAL_TAG = config.globalTag;
+ _logger2.default.FORCE_GLOBAL_TAG = config.forceGlobalTag;
+ _logger2.default.ENABLE_VERBOSE = config.enableVerbose;
+ _logger2.default.ENABLE_DEBUG = config.enableDebug;
+ _logger2.default.ENABLE_INFO = config.enableInfo;
+ _logger2.default.ENABLE_WARN = config.enableWarn;
+ _logger2.default.ENABLE_ERROR = config.enableError;
+ _logger2.default.ENABLE_CALLBACK = config.enableCallback;
+ }
+ }, {
+ key: '_notifyChange',
+ value: function _notifyChange() {
+ var emitter = LoggingControl.emitter;
+
+ if (emitter.listenerCount('change') > 0) {
+ var config = LoggingControl.getConfig();
+ emitter.emit('change', config);
+ }
+ }
+ }, {
+ key: 'registerListener',
+ value: function registerListener(listener) {
+ LoggingControl.emitter.addListener('change', listener);
+ }
+ }, {
+ key: 'removeListener',
+ value: function removeListener(listener) {
+ LoggingControl.emitter.removeListener('change', listener);
+ }
+ }, {
+ key: 'addLogListener',
+ value: function addLogListener(listener) {
+ _logger2.default.emitter.addListener('log', listener);
+ if (_logger2.default.emitter.listenerCount('log') > 0) {
+ _logger2.default.ENABLE_CALLBACK = true;
+ LoggingControl._notifyChange();
+ }
+ }
+ }, {
+ key: 'removeLogListener',
+ value: function removeLogListener(listener) {
+ _logger2.default.emitter.removeListener('log', listener);
+ if (_logger2.default.emitter.listenerCount('log') === 0) {
+ _logger2.default.ENABLE_CALLBACK = false;
+ LoggingControl._notifyChange();
+ }
+ }
+ }, {
+ key: 'forceGlobalTag',
+ get: function get() {
+ return _logger2.default.FORCE_GLOBAL_TAG;
+ },
+ set: function set(enable) {
+ _logger2.default.FORCE_GLOBAL_TAG = enable;
+ LoggingControl._notifyChange();
+ }
+ }, {
+ key: 'globalTag',
+ get: function get() {
+ return _logger2.default.GLOBAL_TAG;
+ },
+ set: function set(tag) {
+ _logger2.default.GLOBAL_TAG = tag;
+ LoggingControl._notifyChange();
+ }
+ }, {
+ key: 'enableAll',
+ get: function get() {
+ return _logger2.default.ENABLE_VERBOSE && _logger2.default.ENABLE_DEBUG && _logger2.default.ENABLE_INFO && _logger2.default.ENABLE_WARN && _logger2.default.ENABLE_ERROR;
+ },
+ set: function set(enable) {
+ _logger2.default.ENABLE_VERBOSE = enable;
+ _logger2.default.ENABLE_DEBUG = enable;
+ _logger2.default.ENABLE_INFO = enable;
+ _logger2.default.ENABLE_WARN = enable;
+ _logger2.default.ENABLE_ERROR = enable;
+ LoggingControl._notifyChange();
+ }
+ }, {
+ key: 'enableDebug',
+ get: function get() {
+ return _logger2.default.ENABLE_DEBUG;
+ },
+ set: function set(enable) {
+ _logger2.default.ENABLE_DEBUG = enable;
+ LoggingControl._notifyChange();
+ }
+ }, {
+ key: 'enableVerbose',
+ get: function get() {
+ return _logger2.default.ENABLE_VERBOSE;
+ },
+ set: function set(enable) {
+ _logger2.default.ENABLE_VERBOSE = enable;
+ LoggingControl._notifyChange();
+ }
+ }, {
+ key: 'enableInfo',
+ get: function get() {
+ return _logger2.default.ENABLE_INFO;
+ },
+ set: function set(enable) {
+ _logger2.default.ENABLE_INFO = enable;
+ LoggingControl._notifyChange();
+ }
+ }, {
+ key: 'enableWarn',
+ get: function get() {
+ return _logger2.default.ENABLE_WARN;
+ },
+ set: function set(enable) {
+ _logger2.default.ENABLE_WARN = enable;
+ LoggingControl._notifyChange();
+ }
+ }, {
+ key: 'enableError',
+ get: function get() {
+ return _logger2.default.ENABLE_ERROR;
+ },
+ set: function set(enable) {
+ _logger2.default.ENABLE_ERROR = enable;
+ LoggingControl._notifyChange();
+ }
+ }]);
+
+ return LoggingControl;
+ }();
+
+ LoggingControl.emitter = new _events2.default();
+
+ exports.default = LoggingControl;
+
+ }, {
+ "./logger.js": 41,
+ "events": 2
+ }],
+ 43: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _createClass = function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+ }();
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ var Polyfill = function () {
+ function Polyfill() {
+ _classCallCheck(this, Polyfill);
+ }
+
+ _createClass(Polyfill, null, [{
+ key: 'install',
+ value: function install() {
+ // ES6 Object.setPrototypeOf
+ Object.setPrototypeOf = Object.setPrototypeOf || function (obj, proto) {
+ obj.__proto__ = proto;
+ return obj;
+ };
+
+ // ES6 Object.assign
+ Object.assign = Object.assign || function (target) {
+ if (target === undefined || target === null) {
+ throw new TypeError('Cannot convert undefined or null to object');
+ }
+
+ var output = Object(target);
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+ if (source !== undefined && source !== null) {
+ for (var key in source) {
+ if (source.hasOwnProperty(key)) {
+ output[key] = source[key];
+ }
+ }
+ }
+ }
+ return output;
+ };
+
+ // ES6 Promise (missing support in IE11)
+ if (typeof self.Promise !== 'function') {
+ _dereq_('es6-promise').polyfill();
+ }
+ }
+ }]);
+
+ return Polyfill;
+ }();
+
+ Polyfill.install();
+
+ exports.default = Polyfill;
+
+ }, {
+ "es6-promise": 1
+ }],
+ 44: [function (_dereq_, module, exports) {
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ /*
+ * Copyright (C) 2016 Bilibili. All Rights Reserved.
+ *
+ * This file is derived from C++ project libWinTF8 (https://github.com/m13253/libWinTF8)
+ * @author zheng qian <xqq@xqq.im>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ function checkContinuation(uint8array, start, checkLength) {
+ var array = uint8array;
+ if (start + checkLength < array.length) {
+ while (checkLength--) {
+ if ((array[++start] & 0xC0) !== 0x80) return false;
+ }
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ function decodeUTF8(uint8array) {
+ var out = [];
+ var input = uint8array;
+ var i = 0;
+ var length = uint8array.length;
+
+ while (i < length) {
+ if (input[i] < 0x80) {
+ out.push(String.fromCharCode(input[i]));
+ ++i;
+ continue;
+ } else if (input[i] < 0xC0) {
+ // fallthrough
+ } else if (input[i] < 0xE0) {
+ if (checkContinuation(input, i, 1)) {
+ var ucs4 = (input[i] & 0x1F) << 6 | input[i + 1] & 0x3F;
+ if (ucs4 >= 0x80) {
+ out.push(String.fromCharCode(ucs4 & 0xFFFF));
+ i += 2;
+ continue;
+ }
+ }
+ } else if (input[i] < 0xF0) {
+ if (checkContinuation(input, i, 2)) {
+ var _ucs = (input[i] & 0xF) << 12 | (input[i + 1] & 0x3F) << 6 | input[i + 2] & 0x3F;
+ if (_ucs >= 0x800 && (_ucs & 0xF800) !== 0xD800) {
+ out.push(String.fromCharCode(_ucs & 0xFFFF));
+ i += 3;
+ continue;
+ }
+ }
+ } else if (input[i] < 0xF8) {
+ if (checkContinuation(input, i, 3)) {
+ var _ucs2 = (input[i] & 0x7) << 18 | (input[i + 1] & 0x3F) << 12 | (input[i + 2] & 0x3F) << 6 | input[i + 3] & 0x3F;
+ if (_ucs2 > 0x10000 && _ucs2 < 0x110000) {
+ _ucs2 -= 0x10000;
+ out.push(String.fromCharCode(_ucs2 >>> 10 | 0xD800));
+ out.push(String.fromCharCode(_ucs2 & 0x3FF | 0xDC00));
+ i += 4;
+ continue;
+ }
+ }
+ }
+ out.push(String.fromCharCode(0xFFFD));
+ ++i;
+ }
+
+ return out.join('');
+ }
+
+ exports.default = decodeUTF8;
+
+ }, {}]
+ }, {}, [21])(21)
+});
+
+//# sourceMappingURL=flv.js.map
\ No newline at end of file
diff --git a/bigScreen/public/index.html b/bigScreen/public/index.html
new file mode 100644
index 0000000..c1c3264
--- /dev/null
+++ b/bigScreen/public/index.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="">
+ <head>
+ <meta charset="utf-8" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="viewport" content="width=device-width,initial-scale=1.0" />
+ <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
+ <title>涓婃捣涓尝鐩戞祴骞冲彴</title>
+ </head>
+ <body>
+ <noscript>
+ <strong
+ >We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work
+ properly without JavaScript enabled. Please enable it to
+ continue.</strong
+ >
+ </noscript>
+ <div id="app"></div>
+ <script type="text/javascript" src="./configIP.js"></script>
+ <script>
+ console.log(window)
+ </script>
+
+ <!-- built files will be auto injected -->
+ </body>
+ <script
+ type="text/javascript"
+ src="http://api.map.baidu.com/api?v=3.0&ak=003EurM0nat1YfowgMZPIBpDtGjbGOri"
+ ></script>
+ <!-- <script src="https://cdn.bootcss.com/flv.js/1.5.0/flv.min.js"></script> -->
+ <!-- <script src="./ol.js"></script> -->
+ <script src="./flv.js"></script>
+ <script src="../kriging.js"></script>
+ <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
+ <script src="http://api.map.baidu.com/library/Heatmap/2.0/src/Heatmap_min.js"></script>
+
+
+
+ <!-- <link href="./ol.css" rel="stylesheet" />
+ <script src="./ol.js"></script>
+ <script src="./data.js"></script>
+ <script src="./kriging.js"></script>
+ <script type="text/javascript" src="./launchtower.js"></script>
+ <script type="text/javascript" src="./shshape.js"></script> -->
+ <!-- <script src="/socket.io/socket.io.js"></script> -->
+
+ <!-- <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.0&type=webgl&ak=003EurM0nat1YfowgMZPIBpDtGjbGOri"></script> -->
+</html>
diff --git a/bigScreen/src/App.vue b/bigScreen/src/App.vue
new file mode 100644
index 0000000..00a6613
--- /dev/null
+++ b/bigScreen/src/App.vue
@@ -0,0 +1,685 @@
+<template>
+ <div id="app">
+ <router-view
+ @showRePlay="showRePlay"
+ @playVideo="playVideo"
+ @joinRecord="joinRecord"
+ @startPlay="startPlay"
+ @stopPlay="stopPlay"
+ v-loading="loading"
+ />
+ <el-dialog
+ :title="rePlayMonitorpointName + ' ' + '鍥炴斁鍒楄〃'"
+ :visible.sync="showRePlayVisible"
+ width="80%"
+ @close="closeAllReplay"
+ >
+ <div class="rePlayTile">
+ <div style="width: 30%; display: flex">
+ <span style="width: 50px; line-height: 28px">棰戠巼:</span>
+ <el-input
+ placeholder="璇疯緭鍏ラ鐜�"
+ v-model="rePlayFrequency"
+ size="mini"
+ >
+ </el-input>
+ </div>
+
+ <div style="width: 30%; display: flex">
+ <span style="width: 100px; line-height: 28px">褰曢煶鏂瑰紡:</span>
+ <el-select
+ v-model="isUnderWayValue"
+ placeholder="璇烽�夋嫨褰曢煶鏂瑰紡"
+ size="mini"
+ >
+ <el-option label="瀹氭椂褰曞埗" value="0"> </el-option>
+ <el-option label="鐩戝惉褰曞埗" value="3"> </el-option>
+ <el-option label="閲囨牱褰曞埗" value="4"> </el-option>
+ </el-select>
+ </div>
+
+ <div style="width: 30%">
+ <el-date-picker
+ v-model="rePlayTimeArr"
+ type="datetimerange"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ size="mini"
+ >
+ </el-date-picker>
+ </div>
+ </div>
+ <el-table
+ :data="rePlayTable"
+ style="width: 100%; margin-top: 30px"
+ :isKey="isKey"
+ v-loading="rePlayLoading"
+ :height="rePlayTableH"
+ >
+ <el-table-column prop="frequencyValue" label="棰戠巼"> </el-table-column>
+ <el-table-column prop="starttime" label="寮�濮嬫椂闂�">
+ <template slot-scope="scope">
+ <div>
+ {{ dateFormatter(scope.row.starttime) }}
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="stoptime" label="缁撴潫鏃堕棿">
+ <template slot-scope="scope">
+ <div>
+ {{ dateFormatter(scope.row.stoptime) }}
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="rssi" label="鍦哄己"> </el-table-column>
+ <el-table-column prop="assessvalue" label="鎵嬪姩璇勫垎"></el-table-column>
+ <el-table-column prop="auto_assessvalue" label="鑷姩璇勫垎">
+ </el-table-column>
+ <el-table-column prop="" label="鎿嶄綔">
+ <template slot-scope="scope">
+ <div>
+ <el-button
+ size="mini"
+ type="primary"
+ @click="startRePlayVideo(scope.row)"
+ >杩涜鍥炴斁</el-button
+ >
+ </div>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <div style="padding: 0 20px; margin-top: 10px">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="rePlayPageno"
+ :page-sizes="[10, 20, 30, 50]"
+ :page-size="rePlayPagesize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="rePlayTotalCount"
+ >
+ </el-pagination>
+ </div>
+ </el-dialog>
+ <el-dialog :visible.sync="rePlayRadioVisible" @close="closeReplay">
+ <div>
+ <video
+ id="rePlayVideo"
+ ref="rePlayVideo"
+ src=""
+ controls
+ preload
+ width="100%"
+ ></video>
+ </div>
+ </el-dialog>
+
+ <video
+ ref="videoElement"
+ id="videoElement"
+ controls
+ width="0"
+ height="0"
+ v-show="false"
+ >
+ xxx
+ </video>
+ </div>
+</template>
+
+<script>
+export default {
+ watch: {
+ isUnderWayValue: {
+ handler(n, o) {
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ this.timer = setTimeout(() => {
+ this.rePlayStartTime = this.dateFormatter(this.rePlayTimeArr[0]);
+ this.rePlayEndTime = this.dateFormatter(this.rePlayTimeArr[1]);
+ this.getReplayInfo();
+ }, 500);
+ },
+ },
+ rePlayFrequency: {
+ handler(n, o) {
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ this.timer = setTimeout(() => {
+ this.rePlayStartTime = this.dateFormatter(this.rePlayTimeArr[0]);
+ this.rePlayEndTime = this.dateFormatter(this.rePlayTimeArr[1]);
+ this.getReplayInfo();
+ }, 500);
+ },
+ },
+ rePlayTimeArr: {
+ handler(n, o) {
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ this.timer = setTimeout(() => {
+ this.rePlayStartTime = this.dateFormatter(this.rePlayTimeArr[0]);
+ this.rePlayEndTime = this.dateFormatter(this.rePlayTimeArr[1]);
+ this.getReplayInfo();
+ }, 500);
+ },
+ deep: true,
+ },
+ },
+ data() {
+ return {
+ loading: false,
+ isUnderWayValue: "0",
+ timer: null,
+ isKey: false,
+ player: null,
+ recordingtime: null,
+ rtsp: null,
+ showRePlayVisible: false,
+ rePlayMonitorpointName: "",
+ rePlayMonitorpointId: "",
+ rePlayPagesize: 10,
+ rePlayPageno: 1,
+ rePlayFrequency: "",
+ rePlayEndTime: "",
+ rePlayStartTime: "",
+ rePlayTable: [],
+ rePlayTimeArr: [],
+ rePlayTotalCount: 100,
+ rePlayLoading: false,
+ rePlayVideo: null,
+ rePlayRadioVisible: false,
+ rePlayTableH: 0,
+ };
+ },
+ mounted() {
+ this.rePlayTableH = window.innerHeight - 200 + "px";
+ },
+ methods: {
+ playVideo() {},
+ closeAllReplay() {
+ this.rePlayFrequency = "";
+ this.rePlayTimeArr = [];
+ this.isUnderWayValue = 0;
+ },
+ //鏄剧ず鍥炴斁鐣岄潰
+ showRePlay(data) {
+ this.rePlayMonitorpointId = data.monitorpointId;
+ this.rePlayMonitorpointName = data.monitorpointName;
+ this.getReplayInfo();
+ this.showRePlayVisible = true;
+ },
+
+ //鑾峰彇鍥炴斁鍒楄〃
+ getReplayInfo() {
+ this.rePlayLoading = true;
+ let param = {
+ bid: "getRecordList",
+ isUnderWay: Number(this.isUnderWayValue),
+ monitorpointId: this.rePlayMonitorpointId,
+ start_time: this.rePlayStartTime,
+ end_time: this.rePlayEndTime,
+ frequency: this.rePlayFrequency,
+ pagesize: this.rePlayPagesize,
+ pageno: this.rePlayPageno,
+ };
+
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ this.rePlayTable = res.data.data[0];
+ this.rePlayTotalCount = res.data.data[1][0].counter;
+ this.isKey = !this.isKey;
+ this.rePlayLoading = false;
+ });
+ },
+
+ //鍒嗛〉鏀瑰彉鏃�
+ handleSizeChange(size) {
+ this.rePlayPagesize = size;
+ this.getReplayInfo();
+ },
+ handleCurrentChange(page) {
+ this.rePlayPageno = page;
+ this.getReplayInfo();
+ },
+
+ //鑾峰彇鍥炴斁鍦板潃
+ startRePlayVideo(data) {
+ let param = new URLSearchParams();
+ param.append("method", "mutipleReview");
+ param.append("instruct", 1);
+ param.append("playType", 1);
+ param.append("hls", 1);
+ param.append("key", 123456);
+ param.append("monitorpointId", this.rePlayMonitorpointId);
+ param.append("frequencyValue", data.frequencyValue);
+ param.append("startTime", this.dateFormatter(data.starttime));
+ param.append("endTime", this.dateFormatter(data.stoptime));
+
+ this.$post(window.equipmentURL + "FRP/NetRequest.do", param).then(
+ (res) => {
+ if (res.success == "true") {
+ //鏄剧ず鎾斁鍣�
+ this.rePlayRadioVisible = true;
+ setTimeout(() => {
+ this.playReplay(res.url);
+ }, 1000);
+ } else {
+ this.$message.error(res.msg);
+ }
+ }
+ );
+ },
+
+ //寮�濮嬪洖鏀�
+ playReplay(url) {
+ this.rePlayVideo = document.getElementById("rePlayVideo");
+ if (Hls.isSupported()) {
+ var hls = new Hls();
+ hls.loadSource(url);
+ hls.attachMedia(this.rePlayVideo);
+ hls.on(Hls.Events.MANIFEST_PARSED, function () {
+ this.rePlayVideo.play();
+ });
+ } else if (
+ this.rePlayVideo.canPlayType("application/vnd.apple.mpegurl")
+ ) {
+ this.rePlayVideo.src = url;
+ this.rePlayVideo.addEventListener("loadedmetadata", function () {
+ this.rePlayVideo.play();
+ });
+ }
+ },
+
+ //鍏抽棴鎾斁鍣�
+ closeReplay() {
+ if (this.rePlayVideo) {
+ this.rePlayVideo.pause();
+ this.rePlayVideo = null;
+ }
+ },
+
+ //鏍煎紡鍖栨椂闂�
+ dateFormatter(date) {
+ if (date) {
+ let time = new Date(date);
+ var year = time.getFullYear();
+ var month = time.getMonth() + 1;
+ var date = time.getDate();
+ var hour = time.getHours();
+ var minute = time.getMinutes();
+ var second = time.getSeconds();
+ return (
+ this.add0(year) +
+ "-" +
+ this.add0(month) +
+ "-" +
+ this.add0(date) +
+ " " +
+ this.add0(hour) +
+ ":" +
+ this.add0(minute) +
+ ":" +
+ this.add0(second)
+ );
+ } else {
+ return "";
+ }
+ },
+
+ add0(val) {
+ return val < 10 ? "0" + val : val;
+ },
+
+ //鍔犲叆褰曞埗
+ joinRecord(recordData) {
+ console.log(recordData);
+ this.$prompt("璇疯緭鍏ユ椂闂�(鍒嗛挓)", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ inputPattern:
+ /^([1-9]|([1-9][0-9])|([1-2][0-9][0-9])|([3][0-5][0-9])|([0]{1}))$|^[3][6][0]$/,
+ inputErrorMessage: "璇疯緭鍏�1鍒�360鐨勬暣鏁�",
+ })
+ .then(({ value }) => {
+ this.loading = true;
+ let param = {
+ bid: "checkChannel",
+ channelId: 3,
+ monitorpointId: recordData.monitorpointId,
+ };
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ console.log(res);
+ if (
+ Number(res.data.data[0][0].frequencyValue) ===
+ Number(recordData.frequencyValue)
+ ) {
+ this.loading = false;
+ } else {
+ if (res.data.data[0][0].frequencyValue) {
+ this.$confirm(
+ `鏄惁鍋滄褰曞埗${res.data.data[0][0].frequencyValue},骞跺皢${recordData.frequencyValue}鍔犲叆褰曞埗`,
+ "鎻愮ず",
+ {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ }
+ )
+ .then(() => {
+ console.log(value);
+ this.addRecording(recordData, value);
+ })
+ .catch(() => {
+ this.$message({
+ type: "info",
+ message: "宸插彇娑�",
+ });
+ });
+ } else {
+ console.log(value);
+ this.addRecording(recordData, value);
+ }
+ }
+ });
+ })
+ .catch(() => {
+ this.loading = false;
+
+ this.$message({
+ type: "info",
+ message: "鍙栨秷杈撳叆",
+ });
+ });
+ },
+ addRecording(recordData, value) {
+ console.log("123");
+ let param = new URLSearchParams();
+ param.append("method", "record");
+ param.append("key", 111111);
+ param.append("recordTimeLength", value);
+ param.append("monitorpointId", recordData.monitorpointId);
+ param.append("frequencyValue", recordData.frequencyValue);
+ param.append("isUnderWay", 0);
+ let url = `${window.equipmentURL}/FRP/TNewrecordtask.do?method=record&monitorpointId=${recordData.monitorpointId}&frequencyValue=${recordData.frequencyValue}`;
+ this.$getJSON(window.equipmentURL + "FRP/TNewrecordtask.do", param).then(
+ (res) => {
+ console.log(res);
+ // this.$emit("hideLoading");
+ let param1 = {
+ bid: "setChannelRecord",
+ monitorpointId: recordData.monitorpointId,
+ frequency: recordData.frequencyValue,
+ userid: JSON.parse(sessionStorage.getItem("userName")).account,
+ requesturl: url,
+ success: res[0].success.toString(),
+ msg: res[0].msg,
+ recordminitus: 180,
+ };
+
+ this.$post(window.backstageURL + "dataservice/dealData", param1).then(
+ (res1) => {}
+ );
+
+ if (res[0].success) {
+ this.loading = false;
+ this.$message.success(res[0].msg);
+ // this.getCollection();
+ // this.getFrequency(this.showInfo);
+ } else {
+ this.loading = false;
+ this.$message.error(res[0].msg);
+ }
+ }
+ );
+ },
+
+ //寮�濮嬫敹鍚�
+ startPlay(playData) {
+ this.loading = true;
+ if (this.player) {
+ this.player.pause();
+ this.player.unload();
+ this.player.detachMediaElement();
+ this.player.destroy();
+ this.player = null;
+ }
+ let param = {
+ bid: "checkChannel",
+ channelId: 2,
+ monitorpointId: playData.monitorpointId,
+ };
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res1) => {
+ if (
+ res1.data.data[0][0].frequencyValue &&
+ res1.data.data[0][0].frequencyValue != playData.frequencyValue
+ ) {
+ this.$confirm(`鏄惁鏆傚仠鍓綍閫氶亾1鍒嗛挓锛岄殢鍚庢仮澶峘, "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ })
+ .then(() => {
+ if (this.player) {
+ if (this.rtsp) {
+ this.recordingtime = new Date();
+ this.isplay = true;
+ this.player.play();
+ this.loading = false;
+ } else {
+ this.loading = false;
+
+ this.$message.error("鏃犻煶棰戞枃浠�");
+ }
+ } else {
+ this.getPalyUrl(
+ playData.monitorpointId,
+ playData.frequencyValue
+ );
+ }
+ })
+ .catch(() => {
+ this.$message({
+ type: "info",
+ message: "宸插彇娑�",
+ });
+ });
+ } else {
+ if (this.player) {
+ if (this.rtsp) {
+ this.isplay = true;
+ this.player.play();
+ } else {
+ this.$message.error("鏃犻煶棰戞枃浠�");
+ this.loading = false;
+ }
+ } else {
+ this.getPalyUrl(playData.monitorpointId, playData.frequencyValue);
+ }
+ }
+ });
+ },
+
+ getPalyUrl(monitorpointId, frequencyValue) {
+ console.log(monitorpointId);
+ console.log(frequencyValue);
+ let param = new URLSearchParams();
+ param.append("method", "playLiveNew");
+ param.append("instruct", 1);
+ param.append("playType", 0);
+ param.append("hls", 0);
+ param.append("key", 123456);
+ param.append("monitorpointId", monitorpointId);
+ param.append("frequencyValue", frequencyValue);
+
+ let url = `${window.equipmentURL}FRP/ScanSignal.do?method=playLiveNew&instruct=1&playType=0&hls=0&key=123456&monitorpointId=${monitorpointId}&frequencyValue=${frequencyValue}`;
+ this.$getJSON(window.equipmentURL + "FRP/ScanSignal.do", param).then(
+ (res) => {
+ console.log(res);
+ let par = new URLSearchParams();
+ par.append("method", "record");
+ par.append("key", 111111);
+ par.append("recordTimeLength", 1);
+ par.append("monitorpointId", monitorpointId);
+ par.append("frequencyValue", frequencyValue);
+ par.append("isUnderWay", 3);
+
+ let url = `${window.equipmentURL}FRP/TNewrecordtask.do?method=record&monitorpointId=${monitorpointId}&frequencyValue=${frequencyValue}`;
+ this.$getJSON(
+ window.equipmentURL + "FRP/TNewrecordtask.do",
+ par
+ ).then((re) => {
+ console.log(re);
+ let par1 = {
+ bid: "setTempRecord",
+ monitorpointId: monitorpointId,
+ frequency: frequencyValue,
+ userid: this.userid,
+ requesturl: url,
+ success: re[0].success.toString(),
+ msg: re[0].msg,
+ recordminitus: 1,
+ };
+
+ this.$post(window.backstageURL + "dataservice/dealData", par1).then(
+ (re1) => {}
+ );
+
+ if (re[0].success) {
+ this.$message.success(re[0].msg);
+ } else {
+ this.$message.error(re[0].msg);
+ }
+ });
+
+ this.$message.warning(res.success);
+
+ let flvurl = "";
+ if (res.url) {
+ flvurl = res.url;
+ }
+
+ let param1 = {
+ bid: "setMonitoringRecord",
+ monitorpointId: monitorpointId,
+ frequency: frequencyValue,
+ userid: this.userid,
+ requesturl: url,
+ success: res.success,
+ msg: res.msg,
+ flvurl: flvurl,
+ recordminitus: 1,
+ };
+
+ this.$getJSON(
+ window.backstageURL + "dataservice/recordMonitorOpt",
+ param1
+ ).then((res1) => {});
+
+ if (res.url) {
+ this.rtsp = res.url;
+
+ let video = document.getElementById("videoElement");
+
+ if (flvjs.isSupported()) {
+ this.player = flvjs.createPlayer(
+ {
+ type: "flv",
+ isLive: true,
+ fluid: true,
+ url: this.rtsp,
+ },
+ {
+ enableStashBuffer: false,
+ fixAudioTimestampGap: false,
+ isLive: true,
+ }
+ );
+
+ this.player.attachMediaElement(video);
+
+ this.player.load(); //鍔犺浇
+ this.loading = false;
+
+ if (this.rtsp) {
+ this.isplay = true;
+ this.recordingtime = new Date();
+ this.player.play();
+ } else {
+ this.$message.error("鏃犻煶棰戞枃浠�");
+ }
+ }
+ }
+ }
+ );
+ },
+
+ //鍋滄鎾斁
+ stopPlay() {
+ console.log("!@#");
+ console.log(this.player);
+
+ if (this.player) {
+ this.player.pause();
+ this.player.unload();
+ this.player.detachMediaElement();
+ this.player.destroy();
+ this.player = null;
+ }
+ },
+ },
+ beforeDestroy() {
+ // let param = {
+ // bid: "stopTempRecord",
+ // frequency: this.showFrequencyValue,
+ // monitorpointId: this.showInfo.monitorpointId,
+ // };
+ // this.$getJSON(window.backstageURL +
+ // "dataservice/getNoTokenData",
+ // param
+ // ).then((res) => {});
+ if (this.player) {
+ this.player.pause();
+ this.player.unload();
+ this.player.detachMediaElement();
+ this.player.destroy();
+ this.player = null;
+ }
+ },
+};
+</script>
+
+<style lang="scss">
+#app {
+ font-family: Avenir, Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ text-align: center;
+ color: #2c3e50;
+}
+
+html,
+body,
+#app {
+ height: 100%;
+}
+
+.rePlayTile {
+ padding: 0 20px;
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+}
+</style>
diff --git a/bigScreen/src/api/index.js b/bigScreen/src/api/index.js
new file mode 100644
index 0000000..12e57ac
--- /dev/null
+++ b/bigScreen/src/api/index.js
@@ -0,0 +1,10 @@
+// import request from '@/utils/request.js';
+
+// //鐧诲綍
+// export function getAllPoint(data){
+// return request({
+// url:'/TMonitorpointInfo.do',
+// method:'POST',
+// data
+// })
+// }
\ No newline at end of file
diff --git a/bigScreen/src/assets/1.png b/bigScreen/src/assets/1.png
new file mode 100644
index 0000000..c0807fb
--- /dev/null
+++ b/bigScreen/src/assets/1.png
Binary files differ
diff --git a/bigScreen/src/assets/2.png b/bigScreen/src/assets/2.png
new file mode 100644
index 0000000..37a9b00
--- /dev/null
+++ b/bigScreen/src/assets/2.png
Binary files differ
diff --git a/bigScreen/src/assets/3.png b/bigScreen/src/assets/3.png
new file mode 100644
index 0000000..175f1ef
--- /dev/null
+++ b/bigScreen/src/assets/3.png
Binary files differ
diff --git a/bigScreen/src/assets/4.png b/bigScreen/src/assets/4.png
new file mode 100644
index 0000000..84ecbe0
--- /dev/null
+++ b/bigScreen/src/assets/4.png
Binary files differ
diff --git a/bigScreen/src/assets/5.png b/bigScreen/src/assets/5.png
new file mode 100644
index 0000000..5f98ce7
--- /dev/null
+++ b/bigScreen/src/assets/5.png
Binary files differ
diff --git a/bigScreen/src/assets/bad.png b/bigScreen/src/assets/bad.png
new file mode 100644
index 0000000..2c8849a
--- /dev/null
+++ b/bigScreen/src/assets/bad.png
Binary files differ
diff --git a/bigScreen/src/assets/diamond.png b/bigScreen/src/assets/diamond.png
new file mode 100644
index 0000000..7ea5a2b
--- /dev/null
+++ b/bigScreen/src/assets/diamond.png
Binary files differ
diff --git a/bigScreen/src/assets/fashedianDark.png b/bigScreen/src/assets/fashedianDark.png
new file mode 100644
index 0000000..3587b83
--- /dev/null
+++ b/bigScreen/src/assets/fashedianDark.png
Binary files differ
diff --git a/bigScreen/src/assets/fashedianLight.jpg b/bigScreen/src/assets/fashedianLight.jpg
new file mode 100644
index 0000000..3288bb6
--- /dev/null
+++ b/bigScreen/src/assets/fashedianLight.jpg
Binary files differ
diff --git a/bigScreen/src/assets/legal.png b/bigScreen/src/assets/legal.png
new file mode 100644
index 0000000..951fb02
--- /dev/null
+++ b/bigScreen/src/assets/legal.png
Binary files differ
diff --git a/bigScreen/src/assets/logo.png b/bigScreen/src/assets/logo.png
new file mode 100644
index 0000000..f3d2503
--- /dev/null
+++ b/bigScreen/src/assets/logo.png
Binary files differ
diff --git a/bigScreen/src/assets/love.png b/bigScreen/src/assets/love.png
new file mode 100644
index 0000000..6e6457a
--- /dev/null
+++ b/bigScreen/src/assets/love.png
Binary files differ
diff --git a/bigScreen/src/assets/shouyinjiDark.png b/bigScreen/src/assets/shouyinjiDark.png
new file mode 100644
index 0000000..f0dec77
--- /dev/null
+++ b/bigScreen/src/assets/shouyinjiDark.png
Binary files differ
diff --git a/bigScreen/src/assets/shouyinjiLight.jpg b/bigScreen/src/assets/shouyinjiLight.jpg
new file mode 100644
index 0000000..fcacd46
--- /dev/null
+++ b/bigScreen/src/assets/shouyinjiLight.jpg
Binary files differ
diff --git a/bigScreen/src/assets/shouyinjiLight1.jpg b/bigScreen/src/assets/shouyinjiLight1.jpg
new file mode 100644
index 0000000..a0e56e3
--- /dev/null
+++ b/bigScreen/src/assets/shouyinjiLight1.jpg
Binary files differ
diff --git a/bigScreen/src/assets/t2/1.png b/bigScreen/src/assets/t2/1.png
new file mode 100644
index 0000000..3dfaafd
--- /dev/null
+++ b/bigScreen/src/assets/t2/1.png
Binary files differ
diff --git a/bigScreen/src/assets/t2/2.png b/bigScreen/src/assets/t2/2.png
new file mode 100644
index 0000000..009cca1
--- /dev/null
+++ b/bigScreen/src/assets/t2/2.png
Binary files differ
diff --git a/bigScreen/src/assets/t2/3.png b/bigScreen/src/assets/t2/3.png
new file mode 100644
index 0000000..272edc0
--- /dev/null
+++ b/bigScreen/src/assets/t2/3.png
Binary files differ
diff --git a/bigScreen/src/assets/t2/4.png b/bigScreen/src/assets/t2/4.png
new file mode 100644
index 0000000..1b744fe
--- /dev/null
+++ b/bigScreen/src/assets/t2/4.png
Binary files differ
diff --git a/bigScreen/src/assets/t2/5.png b/bigScreen/src/assets/t2/5.png
new file mode 100644
index 0000000..dd1f73c
--- /dev/null
+++ b/bigScreen/src/assets/t2/5.png
Binary files differ
diff --git a/bigScreen/src/assets/t2/wx.png b/bigScreen/src/assets/t2/wx.png
new file mode 100644
index 0000000..6c40b7c
--- /dev/null
+++ b/bigScreen/src/assets/t2/wx.png
Binary files differ
diff --git a/bigScreen/src/assets/tmp/1.png b/bigScreen/src/assets/tmp/1.png
new file mode 100644
index 0000000..4acb8dd
--- /dev/null
+++ b/bigScreen/src/assets/tmp/1.png
Binary files differ
diff --git a/bigScreen/src/assets/tmp/2.png b/bigScreen/src/assets/tmp/2.png
new file mode 100644
index 0000000..8cc9b21
--- /dev/null
+++ b/bigScreen/src/assets/tmp/2.png
Binary files differ
diff --git a/bigScreen/src/assets/tmp/3.png b/bigScreen/src/assets/tmp/3.png
new file mode 100644
index 0000000..d48e63e
--- /dev/null
+++ b/bigScreen/src/assets/tmp/3.png
Binary files differ
diff --git a/bigScreen/src/assets/tmp/4.png b/bigScreen/src/assets/tmp/4.png
new file mode 100644
index 0000000..9cdbc90
--- /dev/null
+++ b/bigScreen/src/assets/tmp/4.png
Binary files differ
diff --git a/bigScreen/src/assets/tmp/5.png b/bigScreen/src/assets/tmp/5.png
new file mode 100644
index 0000000..9ce0e13
--- /dev/null
+++ b/bigScreen/src/assets/tmp/5.png
Binary files differ
diff --git a/bigScreen/src/assets/tmp/wx.png b/bigScreen/src/assets/tmp/wx.png
new file mode 100644
index 0000000..4b3a1f0
--- /dev/null
+++ b/bigScreen/src/assets/tmp/wx.png
Binary files differ
diff --git a/bigScreen/src/assets/unLove.png b/bigScreen/src/assets/unLove.png
new file mode 100644
index 0000000..74da3f3
--- /dev/null
+++ b/bigScreen/src/assets/unLove.png
Binary files differ
diff --git a/bigScreen/src/assets/wx.png b/bigScreen/src/assets/wx.png
new file mode 100644
index 0000000..edeed94
--- /dev/null
+++ b/bigScreen/src/assets/wx.png
Binary files differ
diff --git a/bigScreen/src/common/base.scss b/bigScreen/src/common/base.scss
new file mode 100644
index 0000000..0a1bc4b
--- /dev/null
+++ b/bigScreen/src/common/base.scss
@@ -0,0 +1,196 @@
+//css榛樿鏍峰紡鍒濆鍖栧ぇ鍏�
+html,
+body,
+div,
+span,
+applet,
+object,
+iframe,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+p,
+blockquote,
+pre,
+a,
+abbr,
+acronym,
+address,
+big,
+cite,
+code,
+del,
+dfn,
+em,
+img,
+ins,
+kbd,
+q,
+s,
+samp,
+small,
+strike,
+strong,
+sub,
+sup,
+tt,
+var,
+b,
+u,
+i,
+center,
+dl,
+dt,
+dd,
+ol,
+ul,
+li,
+fieldset,
+form,
+label,
+legend,
+table,
+caption,
+tbody,
+tfoot,
+thead,
+tr,
+th,
+td,
+article,
+aside,
+canvas,
+details,
+embed,
+figure,
+figcaption,
+footer,
+header,
+hgroup,
+menu,
+nav,
+output,
+ruby,
+section,
+summary,
+time,
+mark,
+audio,
+video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+
+/* HTML5 display-role reset for older browsers */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+menu,
+nav,
+section {
+ display: block;
+}
+
+body {
+ line-height: 1;
+}
+
+ol,
+ul {
+ list-style: none;
+}
+
+blockquote,
+q {
+ quotes: none;
+}
+
+blockquote:before,
+blockquote:after,
+q:before,
+q:after {
+ content: "";
+ content: none;
+}
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+html {
+ font-size: 62.5%;
+ color: #222;
+}
+
+::selection {
+ background-color: #b3d4fc;
+ text-shadow: none;
+}
+
+ul {
+ margin: 0;
+ padding: 0;
+}
+
+li {
+ list-style: none;
+}
+.clearfix:before,
+.clearfix:after {
+ content: " ";
+ display: table;
+}
+
+.clearfix:after {
+ clear: both;
+}
+/* ===============
+ 鑷畾涔夐〉闈㈡牱寮�
+ =============== */
+body {
+ font: 1.2rem "simhei", Arial, Helvetica, sans-serif;
+ line-height: 1.5;
+ background-color: #f7f7f7;
+}
+
+a {
+ color: #666;
+ text-decoration: none;
+}
+
+a:hover,
+a:active {
+ color: #0ae;
+ text-decoration: underline;
+}
+/*鍏叡绫�*/
+.fl {
+ float: left;
+}
+.fr {
+ float: right;
+}
+.al {
+ text-align: left;
+}
+.ac {
+ text-align: center;
+}
+.ar {
+ text-align: right;
+}
+.hide {
+ display: none;
+}
diff --git a/bigScreen/src/components/SvgIcon/index.vue b/bigScreen/src/components/SvgIcon/index.vue
new file mode 100644
index 0000000..6025594
--- /dev/null
+++ b/bigScreen/src/components/SvgIcon/index.vue
@@ -0,0 +1,43 @@
+<template>
+ <svg :class="svgClass" aria-hidden="true" v-on="$listeners">
+ <use :xlink:href="iconName" />
+ </svg>
+</template>
+
+<script>
+export default {
+ name: "SvgIcon",
+ props: {
+ iconClass: {
+ type: String,
+ required: true,
+ },
+ className: {
+ type: String,
+ default: "",
+ },
+ },
+ computed: {
+ iconName() {
+ return `#icon-${this.iconClass}`;
+ },
+ svgClass() {
+ if (this.className) {
+ return "svg-icon " + this.className;
+ } else {
+ return "svg-icon";
+ }
+ },
+ },
+};
+</script>
+
+<style scoped>
+.svg-icon {
+ width: 1em;
+ height: 1em;
+ vertical-align: -0.15em;
+ fill: currentColor;
+ overflow: hidden;
+}
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/components/dropdowns/DropDown.vue b/bigScreen/src/components/dropdowns/DropDown.vue
new file mode 100644
index 0000000..527a3df
--- /dev/null
+++ b/bigScreen/src/components/dropdowns/DropDown.vue
@@ -0,0 +1,32 @@
+<template>
+ <el-dropdown @command="handleCommand">
+ <span class="el-dropdown-link">
+ 鍏朵粬鎿嶄綔<i class="el-icon-arrow-down el-icon--right"></i>
+ </span>
+ <el-dropdown-menu slot="dropdown">
+ <el-dropdown-item
+ v-for="(dropInfo, key) in dropOption"
+ :key="key"
+ :command="dropInfo"
+ :value="dropInfo"
+ >{{ dropInfo.item }}</el-dropdown-item
+ >
+ </el-dropdown-menu>
+ </el-dropdown>
+</template>
+
+<script>
+export default {
+ data() {
+ return {};
+ },
+ mounted() {},
+ watch: {},
+ props: ["dropOption"],
+ methods: {
+ handleCommand(command) {
+ this.$emit("handleAct", command);
+ },
+ },
+};
+</script>
diff --git a/bigScreen/src/components/pageNations/Pagnations.vue b/bigScreen/src/components/pageNations/Pagnations.vue
new file mode 100644
index 0000000..5bce85f
--- /dev/null
+++ b/bigScreen/src/components/pageNations/Pagnations.vue
@@ -0,0 +1,77 @@
+<template>
+ <el-pagination
+ style="text-align: center"
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="page"
+ :page-sizes="size_list"
+ :page-size="size"
+ background
+ :pager-count="pagerCount"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total"
+ >
+ </el-pagination>
+</template>
+
+<script>
+export default {
+ data() {
+ return {
+ size_list: [10, 20, 30, 40],
+ total: 0,
+ page: 1,
+ size: 10,
+ pagerCount: 5,
+ };
+ },
+ created() {
+ this.getTotalsize();
+ },
+ props: ["totalCountOrURL", "params"],
+ watch: {
+ totalCountOrURL() {
+ this.getTotalsize();
+ },
+ params() {
+ this.getTotalsize();
+ },
+ },
+ methods: {
+ getTotalsize() {
+ if (typeof this.totalCountOrURL == "number") {
+ // 涓簄umber琛ㄧず鍓嶅彴鍒嗛〉 鍊煎嵆涓烘�绘暟 涓嶉渶瑕佷粠鍚庡彴鏌ヨ
+ this.total = this.totalCountOrURL;
+ } else {
+ // 鍙傛暟鑻ユ病鏈夊垵濮嬪寲 鍒欎笉鍚戝悗鍙板彂閫佽姹� (搴旈伩鍏嶅弬鏁版湰韬氨涓簄ull鐨勬儏鍐�)
+ for (let p in this.params) {
+ if (!this.params[p]) {
+ return;
+ }
+ }
+ this.$getJSON(this.totalCountOrURL, this.params).then((res) => {
+ this.total = res.data[0].count;
+ this.$emit("totalCount", this.total);
+ });
+ }
+ },
+ handleSizeChange(a) {
+ this.size = a;
+ if (this.page > Math.ceil(this.total / this.size)) {
+ this.page = Math.ceil(this.total / this.size);
+ }
+ this.$emit("change", {
+ page: this.page,
+ size: this.size,
+ });
+ },
+ handleCurrentChange(a) {
+ this.page = a;
+ this.$emit("change", {
+ page: this.page,
+ size: this.size,
+ });
+ },
+ },
+};
+</script>
\ No newline at end of file
diff --git a/bigScreen/src/components/pageNations/SmallPagnations.vue b/bigScreen/src/components/pageNations/SmallPagnations.vue
new file mode 100644
index 0000000..62b21ea
--- /dev/null
+++ b/bigScreen/src/components/pageNations/SmallPagnations.vue
@@ -0,0 +1,77 @@
+<template>
+ <el-pagination
+ style="text-align: center"
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="page"
+ :page-sizes="size_list"
+ :page-size="size"
+ :pager-count="pagerCount"
+ small
+ background
+ layout="total, prev, pager, next"
+ :total="total"
+ ></el-pagination>
+</template>
+
+<script>
+export default {
+ data() {
+ return {
+ size_list: [10, 20, 30, 40],
+ total: 0,
+ page: 1,
+ size: 10,
+ pagerCount: 5,
+ };
+ },
+ created() {
+ this.getTotalsize();
+ },
+ props: ["totalCountOrURL", "params"],
+ watch: {
+ totalCountOrURL() {
+ this.getTotalsize();
+ },
+ params() {
+ this.getTotalsize();
+ },
+ },
+ methods: {
+ getTotalsize() {
+ if (typeof this.totalCountOrURL == "number") {
+ // 涓簄umber琛ㄧず鍓嶅彴鍒嗛〉 鍊煎嵆涓烘�绘暟 涓嶉渶瑕佷粠鍚庡彴鏌ヨ
+ this.total = this.totalCountOrURL;
+ } else {
+ // 鍙傛暟鑻ユ病鏈夊垵濮嬪寲 鍒欎笉鍚戝悗鍙板彂閫佽姹� (搴旈伩鍏嶅弬鏁版湰韬氨涓簄ull鐨勬儏鍐�)
+ for (let p in this.params) {
+ if (!this.params[p]) {
+ return;
+ }
+ }
+ this.$getJSON(this.totalCountOrURL, this.params).then((res) => {
+ this.total = res.data[0].count;
+ this.$emit("totalCount", this.total);
+ });
+ }
+ },
+ handleSizeChange(a) {
+ this.size = a;
+ if (this.page > Math.ceil(this.total / this.size)) {
+ this.page = Math.ceil(this.total / this.size);
+ }
+ this.$emit("change", {
+ page: this.page,
+ size: this.size,
+ });
+ },
+ handleCurrentChange(a) {
+ this.page = a;
+ this.$emit("change", {
+ page: this.page,
+ size: this.size,
+ });
+ },
+ },
+};
+</script>
\ No newline at end of file
diff --git a/bigScreen/src/components/searchs/Search.vue b/bigScreen/src/components/searchs/Search.vue
new file mode 100644
index 0000000..094e528
--- /dev/null
+++ b/bigScreen/src/components/searchs/Search.vue
@@ -0,0 +1,199 @@
+
+<template>
+ <el-form :inline="true" size="mini">
+ <el-form-item
+ v-for="(filterInfo, key) in filter"
+ :key="key"
+ :label="filterInfo.text"
+ >
+ <!--鍗曢�夋-->
+ <el-radio-group
+ v-model="returnValue[key]"
+ v-if="filterInfo.type == 'radioGroup'"
+ :style="`width:${filterInfo.width};`"
+ >
+ <el-radio-button
+ :label="option.id"
+ v-for="(option, index) in filterInfo.options"
+ :key="index"
+ >{{ option.name }}</el-radio-button
+ >
+ </el-radio-group>
+
+ <!--鎼滅储绫诲瀷涓鸿緭鍏ユ-->
+ <el-input
+ v-else-if="filterInfo.type == 'input'"
+ v-model="returnValue[key]"
+ :placeholder="filterInfo.placeholder"
+ :style="`width:${filterInfo.width};`"
+ >
+ </el-input>
+
+ <!--鎼滅储绫诲瀷杈撳叆妗嗚繙绋嬫悳绱㈡湇鍔$鏁版嵁-->
+ <el-autocomplete
+ v-else-if="filterInfo.type == 'autocomplete'"
+ v-model="returnValue[key]"
+ :placeholder="filterInfo.placeholder"
+ :fetch-suggestions="querySearchAsync"
+ :trigger-on-focus="true"
+ :style="`width:${filterInfo.width};`"
+ >
+ </el-autocomplete>
+ <!--鎼滅储绫诲瀷涓烘棩鏈熸垨鏃ユ湡鏃堕棿-->
+ <el-date-picker
+ v-else-if="
+ filterInfo.type == 'date' ||
+ filterInfo.type == 'datetime' ||
+ filterInfo.type == 'month' ||
+ filterInfo.type == 'year'
+ "
+ :format="
+ filterInfo.type == 'date'
+ ? 'yyyy-MM-dd'
+ : filterInfo.type == 'datetime'
+ ? 'yyyy-MM-dd HH:mm:ss'
+ : filterInfo.type == 'month'
+ ? 'yyyy-MM'
+ : 'yyyy'
+ "
+ v-model="returnValue[key]"
+ :type="filterInfo.type"
+ :style="`width:${filterInfo.width};`"
+ @change="pickerChange(filterInfo, key, returnValue[key])"
+ :placeholder="filterInfo.placeholder"
+ >
+ </el-date-picker>
+
+ <!--鎼滅储绫诲瀷涓烘棩鏈熻寖鍥存垨鏃ユ湡鏃堕棿鑼冨洿-->
+ <el-date-picker
+ v-else-if="
+ filterInfo.type == 'daterange' || filterInfo.type == 'datetimerange'
+ "
+ v-model="returnValue[key]"
+ :type="filterInfo.type"
+ range-separator="-"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ @change="pickerRangeChange(filterInfo, key, returnValue[key])"
+ :style="`width:${filterInfo.width};`"
+ :placeholder="filterInfo.placeholder"
+ >
+ </el-date-picker>
+
+ <!--鎼滅储绫诲瀷涓洪�夋嫨鍣�-->
+ <el-select
+ v-else-if="filterInfo.type == 'select'"
+ v-model="returnValue[key]"
+ clearable
+ :multiple="filterInfo.multiple"
+ :collapse-tags="filterInfo.multiple"
+ :placeholder="filterInfo.placeholder"
+ :style="`width:${filterInfo.width};`"
+ >
+ <el-option
+ v-for="(option, index) in filterInfo.options"
+ :key="index"
+ :label="option.name"
+ :value="option.id"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" @click="handleSearch"
+ >鏌ヨ</el-button
+ >
+ <el-button type="info" icon="el-icon-delete" @click="handleClear"
+ >娓呯┖鏌ヨ</el-button
+ >
+ </el-form-item>
+ </el-form>
+</template>
+<script>
+export default {
+ data() {
+ return {
+ returnValue: {},
+ };
+ },
+ watch: {},
+ props: ["filter"],
+ created() {
+ this.handleSearch();
+ },
+ methods: {
+ pickerChange(info, key, value) {
+ switch (info.type) {
+ case "date":
+ this.returnValue[key] = this.format(value, "yyyy-MM-dd");
+ break;
+ case "month":
+ this.returnValue[key] = this.format(value, "yyyy-MM");
+ break;
+ case "year":
+ this.returnValue[key] = this.format(value, "yyyy");
+ break;
+ case "datetime":
+ this.returnValue[key] = this.format(value, "yyyy-MM-dd hh:mm:ss");
+ break;
+ }
+ },
+ pickerRangeChange(info, key, value) {
+ switch (info.type) {
+ case "daterange":
+ for (let i in value) {
+ this.returnValue[key][i] = this.format(value[i], "yyyy-MM-dd");
+ }
+ break;
+ case "datetimerange":
+ for (let i in value) {
+ this.returnValue[key][i] = this.format(
+ value[i],
+ "yyyy-MM-dd hh:mm:ss"
+ );
+ }
+ break;
+ }
+ },
+ handleSearch() {
+ let options = [];
+ for (let key in this.returnValue) {
+ if (typeof this.filter[key] != "undefined") {
+ let value = this.returnValue[key];
+ if (value != "" && value != []) {
+ options.push({
+ type: this.filter[key].sql_type,
+ name: key,
+ value: this.returnValue[key],
+ });
+ }
+ }
+ }
+ this.$emit("handleSearch", options);
+ },
+ handleClear() {
+ let options = [];
+ for (let key in this.returnValue) {
+ if (typeof this.filter[key] != "undefined") {
+ if (typeof this.returnValue[key] == "object") {
+ this.returnValue[key] = [];
+ } else if (typeof this.filter[key].default != "undefined") {
+ this.returnValue[key] = this.filter[key].default;
+ options.push({
+ type: this.filter[key].sql_type,
+ name: key,
+ value: this.returnValue[key],
+ });
+ } else {
+ this.returnValue[key] = "";
+ }
+ } else {
+ continue;
+ }
+ }
+ this.$emit("handleSearch", options);
+ },
+ },
+};
+</script>
\ No newline at end of file
diff --git a/bigScreen/src/icons/index.js b/bigScreen/src/icons/index.js
new file mode 100644
index 0000000..fd8d553
--- /dev/null
+++ b/bigScreen/src/icons/index.js
@@ -0,0 +1,9 @@
+import Vue from 'vue'
+import SvgIcon from '@/components/SvgIcon'// svg缁勪欢
+
+// register globally
+Vue.component('svg-icon', SvgIcon)
+
+const req = require.context('./svg', false, /\.svg$/)
+const requireAll = requireContext => requireContext.keys().map(requireContext)
+requireAll(req)
\ No newline at end of file
diff --git a/bigScreen/src/icons/svg/add.svg b/bigScreen/src/icons/svg/add.svg
new file mode 100644
index 0000000..3cd3e7e
--- /dev/null
+++ b/bigScreen/src/icons/svg/add.svg
@@ -0,0 +1 @@
+<svg t="1628651250117" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2833" width="32" height="32"><path d="M512 74.867566m-50.620396 0a50.620396 50.620396 0 1 0 101.240792 0 50.620396 50.620396 0 1 0-101.240792 0Z" fill="#FFFFFF" p-id="2834"></path><path d="M967.583568 817.16506a36.041722 36.041722 0 0 0-36.041722 36.041722c0 53.65762-35.636759 98.912255-77.85417 98.912255H170.312324c-42.217411 0-77.85417-45.305255-77.85417-98.912255a36.041722 36.041722 0 0 0-72.083444 0c0 94.255178 67.274507 170.995699 149.937614 170.9957h683.375352c82.663107 0 149.937614-76.740521 149.937614-170.9957a36.092343 36.092343 0 0 0-36.041722-36.041722z" fill="#FFFFFF" p-id="2835"></path><path d="M485.120569 890.260913a37.864057 37.864057 0 0 0 53.657621 0l143.205101-143.154482a37.965297 37.965297 0 1 0-53.70824-53.70824l-78.410994 78.360373V302.60873a37.965297 37.965297 0 0 0-75.930595 0v469.200455L395.573088 693.448811a37.965297 37.965297 0 1 0-53.708241 53.708241l143.255722 143.103861z" fill="#FFFFFF" p-id="2836"></path></svg>
\ No newline at end of file
diff --git a/bigScreen/src/icons/svg/recordAdd.svg b/bigScreen/src/icons/svg/recordAdd.svg
new file mode 100644
index 0000000..ea7e62a
--- /dev/null
+++ b/bigScreen/src/icons/svg/recordAdd.svg
@@ -0,0 +1 @@
+<svg t="1628652034151" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4034" width="32" height="32"><path d="M448 448H192v128h256v256h128V576h256V448H576V192H448v256z m64 576A512 512 0 1 1 512 0a512 512 0 0 1 0 1024z" fill="#FFFFFF" p-id="4035"></path></svg>
\ No newline at end of file
diff --git a/bigScreen/src/icons/svg/recordAddBlack.svg b/bigScreen/src/icons/svg/recordAddBlack.svg
new file mode 100644
index 0000000..ad9adc2
--- /dev/null
+++ b/bigScreen/src/icons/svg/recordAddBlack.svg
@@ -0,0 +1 @@
+<svg t="1628652034151" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4034" width="32" height="32"><path d="M448 448H192v128h256v256h128V576h256V448H576V192H448v256z m64 576A512 512 0 1 1 512 0a512 512 0 0 1 0 1024z" fill="#000000" p-id="4035"></path></svg>
\ No newline at end of file
diff --git a/bigScreen/src/icons/svg/stop.svg b/bigScreen/src/icons/svg/stop.svg
new file mode 100644
index 0000000..fc004cd
--- /dev/null
+++ b/bigScreen/src/icons/svg/stop.svg
@@ -0,0 +1 @@
+<svg t="1628651957394" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3839" width="32" height="32"><path d="M320 192v106.432c-97.28 61.12-161.792 167.68-161.792 289.024 0 189.632 157.632 343.36 352 343.36 194.432 0 352-153.728 352-343.36 0-119.808-62.848-225.28-158.208-286.72V192c151.36 70.144 256 220.608 256 394.944C960 828.352 759.424 1024 512 1024s-448-195.648-448-437.056C64 412.608 168.64 262.144 320 192z m128-192h128v448H448V0z" fill="#FFFFFF" p-id="3840"></path></svg>
\ No newline at end of file
diff --git a/bigScreen/src/icons/svg/stopBlack.svg b/bigScreen/src/icons/svg/stopBlack.svg
new file mode 100644
index 0000000..e67059e
--- /dev/null
+++ b/bigScreen/src/icons/svg/stopBlack.svg
@@ -0,0 +1 @@
+<svg t="1628651957394" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3839" width="32" height="32"><path d="M320 192v106.432c-97.28 61.12-161.792 167.68-161.792 289.024 0 189.632 157.632 343.36 352 343.36 194.432 0 352-153.728 352-343.36 0-119.808-62.848-225.28-158.208-286.72V192c151.36 70.144 256 220.608 256 394.944C960 828.352 759.424 1024 512 1024s-448-195.648-448-437.056C64 412.608 168.64 262.144 320 192z m128-192h128v448H448V0z" fill="#000000" p-id="3840"></path></svg>
\ No newline at end of file
diff --git a/bigScreen/src/icons/svg/task.svg b/bigScreen/src/icons/svg/task.svg
new file mode 100644
index 0000000..d61c74a
--- /dev/null
+++ b/bigScreen/src/icons/svg/task.svg
@@ -0,0 +1 @@
+<svg t="1628649797377" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1232" width="32" height="32"><path d="M437.251671 942.206295h-291.510462c-40.033044 0-72.480462-32.457347-72.480462-72.480463V144.950996c0-40.033044 32.447418-72.480462 72.480462-72.480463h652.294375c40.033044 0 72.480462 32.447418 72.480462 72.480463v248.022185c26.092966 11.447942 49.942017 26.529835 72.480462 43.567708V144.950996c0-80.046231-64.904765-144.950996-144.960924-144.950996H145.751138c-80.05616 0-144.960925 64.894836-144.960924 144.950996v724.774836c0 80.05616 64.904765 144.960925 144.950995 144.960925h364.348363a365.348196 365.348196 0 0 1-72.837901-72.480462z m0 0" fill="#FFFFFF" p-id="1233"></path><path d="M742.324916 476.782438c-151.1168 0-273.608781 122.50191-273.608781 273.608781s122.50191 273.608781 273.608781 273.608781 273.608781-122.50191 273.608781-273.608781-122.50191-273.608781-273.608781-273.608781z m0 478.678845c-113.278027 0-205.099851-91.831753-205.099851-205.09985s91.831753-205.099851 205.099851-205.099851S947.434695 637.093335 947.434695 750.361433c-0.009929 113.268098-91.831753 205.099851-205.109779 205.09985z m0 0" fill="#FFFFFF" p-id="1234"></path><path d="M857.380203 725.489712h-77.732813v-38.861442c0-21.466131-17.40524-38.871371-38.871372-38.871371-21.466131 0-38.871371 17.395311-38.871371 38.871371v77.732814c0 21.466131 17.40524 38.871371 38.871371 38.871371H857.380203c21.466131 0 38.861442-17.40524 38.861443-38.871371 0-21.466131-17.40524-38.871371-38.861443-38.871372zM457.595845 180.138771a38.643008 38.643008 0 0 0-54.648283 0L273.445827 309.640507l-51.848353-51.848353c-14.575523-14.575523-38.20614-14.575523-52.771734 0-14.575523 14.575523-14.575523 38.20614 0 52.781663l72.361316 72.371245c1.638257 2.79993 2.948863 5.679291 5.371498 8.082068 8.082068 8.002637 18.656272 11.428084 29.071615 11.03093a37.401904 37.401904 0 0 0 26.500049-10.961428c0.863808-0.853879 1.241104-1.946051 1.946051-2.958792L457.595845 234.707623a38.575492 38.575492 0 0 0 11.318867-27.284426c0-10.236624-4.07082-20.046309-11.318867-27.284426z m127.714546 66.543022c-21.466131 0-38.871371 17.395311-38.871371 38.861442s17.40524 38.871371 38.871371 38.871371h233.198441c21.466131 0 38.861442-17.395311 38.861442-38.871371 0-21.466131-17.395311-38.861442-38.861442-38.861442H585.310391zM402.957491 452.198654L273.445827 581.710319l-51.848353-51.848353c-14.575523-14.565594-38.20614-14.565594-52.771734 0-14.575523 14.575523-14.575523 38.20614 0 52.781663l72.361316 72.371245c1.638257 2.79993 2.948863 5.679291 5.371498 8.082068 8.082068 8.002637 18.656272 11.428084 29.071615 11.040859a37.401904 37.401904 0 0 0 26.500049-10.961429c0.863808-0.853879 1.241104-1.946051 1.946051-2.948862l153.519576-153.450075c13.294704-15.349972 12.460682-38.37493-1.916264-52.732018-14.367018-14.357089-37.391975-15.161324-52.72209-1.846763z m0 0" fill="#FFFFFF" p-id="1235"></path></svg>
\ No newline at end of file
diff --git a/bigScreen/src/main.js b/bigScreen/src/main.js
new file mode 100644
index 0000000..6785515
--- /dev/null
+++ b/bigScreen/src/main.js
@@ -0,0 +1,58 @@
+import Vue from "vue";
+import App from "./App.vue";
+import router from "./router";
+import store from "./store";
+import "./common/base.scss";
+
+import ElementUI from "element-ui";
+import "element-ui/lib/theme-chalk/index.css";
+import VCharts from "v-charts";
+import echarts from "echarts";
+
+import VideoPlayer from "vue-video-player";
+import VueSocketIO from "vue-socket.io";
+//import css
+import "vue-beauty/package/style/vue-beauty.min.css";
+
+//import components
+import vueBeauty from "vue-beauty";
+
+import '@/icons' // icon
+
+import html2canvas from 'html2canvas';
+import './utils/directives.js'
+Vue.use(html2canvas);
+
+Vue.use(
+ new VueSocketIO({
+ debug: true,
+ connection: "ws://wiibox.xicp.io:3030",
+ })
+);
+
+
+Vue.use(vueBeauty);
+
+Vue.use(VideoPlayer);
+
+Vue.prototype.$echarts = echarts;
+
+import { getJSON, post, patch, put, getDS, DSpost } from "./utils/request";
+
+Vue.prototype.$getDS = getDS;
+Vue.prototype.$post = post;
+Vue.prototype.$DSpost = DSpost;
+Vue.prototype.$getJSON = getJSON;
+Vue.prototype.$patch = patch;
+Vue.prototype.$put = put;
+
+Vue.use(ElementUI);
+Vue.use(VCharts);
+
+Vue.config.productionTip = false;
+
+new Vue({
+ router,
+ store,
+ render: (h) => h(App),
+}).$mount("#app");
diff --git a/bigScreen/src/router/index.js b/bigScreen/src/router/index.js
new file mode 100644
index 0000000..bd9455b
--- /dev/null
+++ b/bigScreen/src/router/index.js
@@ -0,0 +1,51 @@
+import Vue from "vue";
+import VueRouter from "vue-router";
+import homePage from "../views/homePage.vue";
+
+Vue.use(VueRouter);
+
+const routes = [
+ {
+ path: "/",
+ name: "homePage",
+ component: homePage,
+ },
+ {
+ path: "/collectionDetails",
+ name: "collectionDetails",
+ component: () => import('@/views/collectionDetails/index'),
+ },
+ {
+ path: "/lookAllDetails",
+ name: "lookAllDetails",
+ component: () => import('@/views/collectionDetails/lookAllDetails'),
+ },
+ {
+ path: "/monitoringPointManage",
+ name: "monitoringPointManage",
+ component: () => import('@/views/monitoringPointManage/index'),
+ },
+ {
+ path: "/assessment",
+ name: "assessment",
+ component: () => import('@/views/assessment/index'),
+ },
+ {
+ path: "/whiteList",
+ name: "whiteList",
+ component: () => import('@/views/whiteList/index'),
+ },
+ {
+ path: "/recordSearch",
+ name: "recordSearch",
+ component: () => import('@/views/recordSearch/index'),
+ },
+];
+
+const router = new VueRouter({
+ // mode: "history",
+ base: process.env.BASE_URL,
+ routes,
+});
+
+export default router;
diff --git a/bigScreen/src/store/index.js b/bigScreen/src/store/index.js
new file mode 100644
index 0000000..ba2f84a
--- /dev/null
+++ b/bigScreen/src/store/index.js
@@ -0,0 +1,11 @@
+import Vue from "vue";
+import Vuex from "vuex";
+
+Vue.use(Vuex);
+
+export default new Vuex.Store({
+ state: {},
+ mutations: {},
+ actions: {},
+ modules: {},
+});
diff --git a/bigScreen/src/try.js b/bigScreen/src/try.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/bigScreen/src/try.js
diff --git a/bigScreen/src/utils/Geoutils.js b/bigScreen/src/utils/Geoutils.js
new file mode 100644
index 0000000..51a88f7
--- /dev/null
+++ b/bigScreen/src/utils/Geoutils.js
@@ -0,0 +1,66 @@
+export function isPointInCircle(point, circle = {}) {
+ //妫�鏌ョ被鍨嬫槸鍚︽纭�
+ if (!(point instanceof BMap.Point) || !(circle instanceof BMap.Circle)) {
+ return false
+ }
+
+ //point涓庡渾蹇冭窛绂诲皬浜庡渾褰㈠崐寰勶紝鍒欑偣鍦ㄥ渾鍐咃紝鍚﹀垯鍦ㄥ渾澶�
+ var c = circle.getCenter()
+ var r = circle.getRadius()
+
+ var dis = getDistance(point, c)
+ if (dis <= r) {
+ return true
+ } else {
+ return false
+ }
+}
+
+function getDistance(point1, point2) {
+ var EARTHRADIUS = 6370996.81
+ //鍒ゆ柇绫诲瀷
+ if (!(point1 instanceof BMap.Point) || !(point2 instanceof BMap.Point)) {
+ return 0
+ }
+
+ point1.lng = _getLoop(point1.lng, -180, 180)
+ point1.lat = _getRange(point1.lat, -74, 74)
+ point2.lng = _getLoop(point2.lng, -180, 180)
+ point2.lat = _getRange(point2.lat, -74, 74)
+
+ var x1, x2, y1, y2
+ x1 = degreeToRad(point1.lng)
+ y1 = degreeToRad(point1.lat)
+ x2 = degreeToRad(point2.lng)
+ y2 = degreeToRad(point2.lat)
+
+ return (
+ EARTHRADIUS *
+ Math.acos(
+ Math.sin(y1) * Math.sin(y2) +
+ Math.cos(y1) * Math.cos(y2) * Math.cos(x2 - x1)
+ )
+ )
+}
+function _getLoop(v, a, b) {
+ while (v > b) {
+ v -= b - a
+ }
+ while (v < a) {
+ v += b - a
+ }
+ return v
+}
+function _getRange(v, a, b) {
+ if (a != null) {
+ v = Math.max(v, a)
+ }
+ if (b != null) {
+ v = Math.min(v, b)
+ }
+ return v
+}
+
+function degreeToRad(degree) {
+ return (Math.PI * degree) / 180
+}
diff --git a/bigScreen/src/utils/chartCustomer.js b/bigScreen/src/utils/chartCustomer.js
new file mode 100644
index 0000000..3045233
--- /dev/null
+++ b/bigScreen/src/utils/chartCustomer.js
@@ -0,0 +1,684 @@
+export let colors = [
+ '#43FD87',
+ '#F6EE55',
+ '#1296DB',
+ '#DC24F6',
+ '#F64D3B',
+ '#FF9F7F',
+ '#FB7293',
+ '#E062AE',
+ '#E690D1',
+ '#E7BCF3',
+ '#9D96F5',
+ '#8378EA',
+ '#96BFFF'
+]
+export let resultColor = [
+ { name: '鐧藉悕鍗�', color: '#14E75F' },
+ { name: '姹熻嫃鐢靛彴', color: '#8A8A8A' },
+ { name: '娴欐睙鐢靛彴', color: '#8A8A8A' },
+ { name: '璇姤', color: '#DC24F6' },
+ { name: '闈炴硶鐢靛彴', color: '#E4DA11' }
+]
+export let originalColor = [
+ { id:1,name: '鍚堟硶鐢靛彴', color: '#43FD87' },
+ { id:2,name: '鍖哄煙闈炴硶', color: '#F6EE55' },
+ { id:3,name: '鏃堕棿闈炴硶', color: '#1296DB' },
+ { id:4,name: '棰戠巼闈炴硶', color: '#DC24F6' },
+ { id:5,name: '鍐呭闈炴硶', color: '#F64D3B' }
+]
+let xAxisLine = {
+ axisLabel: {
+ interval: 0,
+ formatter: function (value) {
+ var ret = '' //鎷兼帴鍔燶n杩斿洖鐨勭被鐩」
+ var maxLength = 2 //姣忛」鏄剧ず鏂囧瓧涓暟
+ var valLength = value.length //X杞寸被鐩」鐨勬枃瀛椾釜鏁�
+ var rowN = Math.ceil(valLength / maxLength) //绫荤洰椤归渶瑕佹崲琛岀殑琛屾暟
+ if (rowN > 1) {
+ //濡傛灉绫荤洰椤圭殑鏂囧瓧澶т簬3,
+ for (var i = 0; i < rowN; i++) {
+ var temp = '' //姣忔鎴彇鐨勫瓧绗︿覆
+ var start = i * maxLength //寮�濮嬫埅鍙栫殑浣嶇疆
+ var end = start + maxLength //缁撴潫鎴彇鐨勪綅缃�
+ //杩欓噷涔熷彲浠ュ姞涓�涓槸鍚︽槸鏈�鍚庝竴琛岀殑鍒ゆ柇锛屼絾鏄笉鍔犱篃娌℃湁褰卞搷锛�
+ temp = value.substring(start, end) + '\n'
+ ret += temp //鍑�熸渶缁堢殑瀛楃涓�
+ }
+ return ret
+ } else {
+ return value
+ }
+ }
+ }
+}
+let tooltip = {
+ axisPointer: {
+ type: 'shadow',
+ shadowStyle: {
+ color: 'rgba(222,222,227,0.3)'
+ }
+ },
+ textStyle: {
+ color: '#5C5C5C'
+ },
+ padding: 10,
+ backgroundColor: 'rgba(255,255,255,0.8)',
+ extraCssText: 'box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);'
+}
+let yAxis = {
+ minInterval: '1',
+ axisLine: {
+ show: false,
+ lineStyle: {
+ color: 'rgba(255,255,255,0.5)'
+ }
+ },
+ axisLabel: {
+ interval: 0,
+ fontSize: 10
+ },
+ splitLine: {
+ show: false
+ }
+}
+let xAxis = {
+ axisLine: {
+ show: false,
+ lineStyle: {
+ color: 'rgba(255,255,255,0.5)'
+ }
+ },
+ nameTextStyle: {
+ fontSize: 10
+ },
+ axisLabel: {
+ interval: 0,
+ fontSize: 10
+ }
+}
+
+let stepA = [
+ {
+ offset: 0,
+ color: '#02F7CC'
+ },
+ {
+ offset: 0.5,
+ color: '#15BFCD'
+ },
+ {
+ offset: 1,
+ color: '#2987CF'
+ }
+]
+let stepB = [
+ {
+ offset: 0,
+ color: '#f27121'
+ },
+ {
+ offset: 0.7,
+ color: '#e94057'
+ },
+ {
+ offset: 1,
+ color: '#8a2387'
+ }
+]
+let stepC = [
+ {
+ offset: 0,
+ color: '#00bf8f'
+ },
+ {
+ offset: 1,
+ color: '#001510'
+ }
+]
+let stepD = [
+ {
+ offset: 0,
+ color: '#43c6ac'
+ },
+ {
+ offset: 1,
+ color: '#191654'
+ }
+]
+let stepE = [
+ {
+ offset: 0,
+ color: '#141e30'
+ },
+ {
+ offset: 1,
+ color: '#243b55'
+ }
+]
+let stepF = [
+ {
+ offset: 0,
+ color: '#6a9113'
+ },
+ {
+ offset: 1,
+ color: '#141517'
+ }
+]
+let stepG = [
+ {
+ offset: 0,
+ color: '#02F7CC'
+ },
+ {
+ offset: 0.5,
+ color: '#15BFCD'
+ },
+ {
+ offset: 1,
+ color: '#2987CF'
+ }
+]
+export let chart_word = {
+ tooltip: tooltip,
+ grid: {
+ left: 10,
+ top: 10,
+ right: 10,
+ bottom: 10
+ },
+}
+export let lineExtend = {
+ legend: {
+ show: false
+ },
+ grid: {
+ left: 10,
+ top: 10,
+ right: 20,
+ bottom: 0
+ },
+ yAxis: {
+ axisLine: {
+ show: true,
+ lineStyle: {
+ color: 'rgba(255,255,255,0.5)'
+ }
+ },
+ splitLine: {
+ show: false
+ }
+ },
+ xAxis: {
+ axisLine: {
+ show: true,
+ lineStyle: {
+ color: 'rgba(255,255,255,0.5)'
+ }
+ },
+ nameTextStyle: {
+ fontSize: 10
+ },
+ axisLabel: {
+ interval: 0,
+ fontSize: 10
+ }
+ },
+ series: {
+ smooth: false,
+ lineStyle: {
+ normal: {
+ type: 'solid',
+ color: 'rgb(39,140,206)'
+ }
+ },
+ itemStyle: {
+ normal: {
+ color: '#3AA1FF'
+ }
+ },
+ areaStyle: {
+ normal: {
+ color: {
+ type: 'linear',
+ x: 0,
+ y: 0,
+ x2: 0,
+ y2: 1,
+ colorStops: [
+ {
+ offset: 0,
+ color: 'rgba(39,140,206,1)' // 0% 澶勭殑棰滆壊
+ },
+ {
+ offset: 0.7,
+ color: 'rgba(18,198,205,0.7)' // 50% 澶勭殑棰滆壊
+ },
+ {
+ offset: 1,
+ color: 'rgba(1,249,204,0.4)' // 100% 澶勭殑棰滆壊
+ }
+ ],
+ globalCoord: false // 缂虹渷涓� false
+ }
+ }
+ }
+ }
+}
+
+export let barG = {
+ tooltip: tooltip,
+ grid: {
+ left: 10,
+ top: 20,
+ right: 10,
+ bottom: 0
+ },
+ yAxis: {
+ minInterval: '1'
+ //show: false
+ },
+ xAxis: {
+ show: true,
+ axisLine: {
+ lineStyle: {
+ //color: "#fff"
+ }
+ },
+ nameTextStyle: {
+ fontSize: 10
+ },
+ axisLabel: {
+ interval: 0,
+ fontSize: 10
+ }
+ },
+ series: {
+ barWidth: '60%',
+ label: {
+ normal: {
+ show: true,
+ position: 'top',
+ color: '#FFF'
+ }
+ },
+ itemStyle: {
+ barBorderRadius: [5, 5, 0, 0],
+ shadowColor: 'rgba(0, 0, 0, 0.5)',
+ shadowBlur: 10,
+ color: {
+ type: 'linear',
+ x: 0,
+ y: 0,
+ x2: 0,
+ y2: 1,
+ colorStops: stepG,
+ global: false // 缂虹渷涓� false
+ }
+ }
+ }
+}
+
+export let chart_a = {
+ tooltip: tooltip,
+ grid: {
+ left: 10,
+ top: 10,
+ right: 10,
+ bottom: 40
+ },
+ yAxis: yAxis,
+ xAxis: {
+ show: true,
+ axisLine: {
+ lineStyle: {
+ color: "#fff"
+ }
+ },
+ nameTextStyle: {
+ fontSize: 8
+ },
+ axisLabel: {
+ rotate:45,
+ interval: 0,
+ fontSize: 8
+ }
+ },
+ series: {
+ barWidth: '60%',
+ label: {
+ normal: {
+ show: true,
+ position: 'top',
+ color: '#FFF'
+ }
+ },
+ itemStyle: {
+ barBorderRadius: [5, 5, 0, 0],
+ shadowColor: 'rgba(0, 0, 0, 0.5)',
+ shadowBlur: 10,
+ color: {
+ type: 'linear',
+ x: 0,
+ y: 0,
+ x2: 0,
+ y2: 1,
+ colorStops: stepG,
+ global: false // 缂虹渷涓� false
+ }
+ }
+ }
+}
+
+export let chart_b = {
+ tooltip: tooltip,
+ grid: {
+ left: 10,
+ top: 10,
+ right: 10,
+ bottom: 40
+ },
+ yAxis: yAxis,
+ xAxis: {
+ show: true,
+ axisLine: {
+ lineStyle: {
+ color: "#fff"
+ }
+ },
+ nameTextStyle: {
+ fontSize: 8
+ },
+ axisLabel: {
+ rotate:45,
+ interval: 0,
+ fontSize: 8
+ }
+ },
+ series: {
+ barWidth: '60%',
+ label: {
+ normal: {
+ show: true,
+ position: 'top',
+ color: '#FFF'
+ }
+ },
+ areaStyle:{},
+ itemStyle: {
+ shadowColor: 'rgba(0, 0, 0, 0.5)',
+ shadowBlur: 10,
+ color: {
+ type: 'linear',
+ x: 0,
+ y: 0,
+ x2: 0,
+ y2: 1,
+ colorStops: stepB,
+ global: false // 缂虹渷涓� false
+ }
+ }
+ }
+}
+
+export let HeatMap = {
+ tooltip: tooltip,
+ grid: {
+ left: 4,
+ top: 0,
+ right: 10,
+ bottom: 0
+ },
+ yAxis: {
+ minInterval: '1',
+ axisLine: {
+ show: false,
+ lineStyle: {
+ //color: 'rgba(255,255,255,0.5)'
+ }
+ },
+ axisLabel: {
+ interval: 0,
+ fontSize: 8
+ },
+ splitLine: {
+ show: false
+ }
+ },
+ xAxis: {
+ position:'top',
+ axisLine: {
+ show: false,
+ lineStyle: {
+ //color: 'rgba(255,255,255,0.5)'
+ }
+ },
+ nameTextStyle: {
+ fontSize: 8
+ },
+ axisLabel: {
+ show:false,
+ interval: 0,
+ formatter: function (value) {
+ return value.substring(0, 3) + '\n' + value.substring(3)
+ }
+ }
+ },
+ series: {
+ label: {
+ normal: {
+ show: true,
+ //color: '#FFF',
+ fontSize: 10
+ }
+ },
+ itemStyle: {
+ barBorderRadius: [5, 5, 0, 0],
+ shadowColor: 'rgba(0, 0, 0, 0.5)',
+ shadowBlur: 2
+ }
+ }
+}
+
+export let barC = {
+ tooltip: tooltip,
+ grid: {
+ left: 10,
+ top: 20,
+ right: 20,
+ bottom: 0
+ },
+ yAxis: yAxis,
+ xAxis: xAxis,
+ series: {
+ barWidth: '60%',
+ label: {
+ normal: {
+ show: true,
+ position: 'top',
+ color: '#FFF'
+ }
+ },
+ itemStyle: {
+ barBorderRadius: [5, 5, 0, 0],
+ shadowColor: 'rgba(0, 0, 0, 0.5)',
+ shadowBlur: 10,
+ color: {
+ type: 'linear',
+ x: 0,
+ y: 0,
+ x2: 0,
+ y2: 1,
+ colorStops: stepC,
+ global: false // 缂虹渷涓� false
+ }
+ }
+ }
+}
+
+export let barD = {
+ tooltip: tooltip,
+ grid: {
+ left: 10,
+ top: 20,
+ right: 20,
+ bottom: 0
+ },
+ yAxis: yAxis,
+ xAxis: xAxis,
+ series: {
+ barWidth: '60%',
+ label: {
+ normal: {
+ show: true,
+ position: 'top',
+ color: '#FFF'
+ }
+ },
+ itemStyle: {
+ barBorderRadius: [5, 5, 0, 0],
+ shadowColor: 'rgba(0, 0, 0, 0.5)',
+ shadowBlur: 10,
+ color: {
+ type: 'linear',
+ x: 0,
+ y: 0,
+ x2: 0,
+ y2: 1,
+ colorStops: stepD,
+ global: false // 缂虹渷涓� false
+ }
+ }
+ }
+}
+
+export let barE = {
+ tooltip: tooltip,
+ grid: {
+ left: 10,
+ top: 20,
+ right: 20,
+ bottom: 0
+ },
+ yAxis: yAxis,
+ xAxis: xAxis,
+ series: {
+ barWidth: '60%',
+ label: {
+ normal: {
+ show: true,
+ position: 'top',
+ color: '#FFF'
+ }
+ },
+ itemStyle: {
+ barBorderRadius: [5, 5, 0, 0],
+ shadowColor: 'rgba(0, 0, 0, 0.5)',
+ shadowBlur: 10,
+ color: {
+ type: 'linear',
+ x: 0,
+ y: 0,
+ x2: 0,
+ y2: 1,
+ colorStops: stepE,
+ global: false // 缂虹渷涓� false
+ }
+ }
+ }
+}
+
+export let barF = {
+ tooltip: tooltip,
+ grid: {
+ left: 10,
+ top: 20,
+ right: 20,
+ bottom: 0
+ },
+ yAxis: yAxis,
+ xAxis: xAxis,
+ series: {
+ barWidth: '60%',
+ large: true,
+ label: {
+ normal: {
+ show: true,
+ position: 'top',
+ color: '#FFF'
+ }
+ },
+ itemStyle: {
+ barBorderRadius: [5, 5, 0, 0],
+ shadowColor: 'rgba(0, 0, 0, 0.5)',
+ shadowBlur: 10,
+ color: {
+ type: 'linear',
+ x: 0,
+ y: 0,
+ x2: 0,
+ y2: 1,
+ colorStops: stepF,
+ global: false // 缂虹渷涓� false
+ }
+ }
+ }
+}
+
+export let barH = {
+ tooltip: {
+ axisPointer: {
+ type: 'shadow',
+ shadowStyle: {
+ color: 'rgba(222,222,227,0.3)'
+ }
+ },
+ textStyle: {
+ color: '#5C5C5C'
+ },
+ padding: 10,
+ backgroundColor: 'rgba(255,255,255,0.8)',
+ extraCssText: 'box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);'
+ },
+ grid: {
+ left: 20,
+ top: 40,
+ right: 20,
+ bottom: 40
+ },
+ yAxis: {
+ minInterval: '1'
+ //show: false
+ },
+ xAxis: {
+ show: true,
+ axisLine: {
+ lineStyle: {
+ //color: "#fff"
+ }
+ },
+ nameTextStyle: {
+ fontSize: 10
+ },
+ axisLabel: {
+ interval: 0,
+ fontSize: 10
+ }
+ },
+ series: {
+ barGap: '100%',
+ label: {
+ normal: {
+ show: true,
+ position: 'top'
+ //color: '#FFF'
+ }
+ },
+ itemStyle: {
+ barBorderRadius: [5, 5, 0, 0],
+ shadowColor: 'rgba(0, 0, 0, 0.5)',
+ shadowBlur: 10
+ }
+ }
+}
diff --git a/bigScreen/src/utils/common_map.json b/bigScreen/src/utils/common_map.json
new file mode 100644
index 0000000..e3ce202
--- /dev/null
+++ b/bigScreen/src/utils/common_map.json
@@ -0,0 +1,1400 @@
+[{
+ "featureType": "land",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#091220ff"
+ }
+}, {
+ "featureType": "water",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#113549ff"
+ }
+}, {
+ "featureType": "green",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#0e1b30ff"
+ }
+}, {
+ "featureType": "building",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "building",
+ "elementType": "geometry.topfill",
+ "stylers": {
+ "color": "#113549ff"
+ }
+}, {
+ "featureType": "building",
+ "elementType": "geometry.sidefill",
+ "stylers": {
+ "color": "#143e56ff"
+ }
+}, {
+ "featureType": "building",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#dadada00"
+ }
+}, {
+ "featureType": "subwaystation",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "color": "#113549B2"
+ }
+}, {
+ "featureType": "education",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "medical",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "scenicspots",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "weight": 4
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#fed66900"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "arterial",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "weight": 2
+ }
+}, {
+ "featureType": "arterial",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "arterial",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffeebb00"
+ }
+}, {
+ "featureType": "arterial",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "arterial",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "arterial",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "local",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "weight": 1
+ }
+}, {
+ "featureType": "local",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "local",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "local",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "local",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#979c9aff"
+ }
+}, {
+ "featureType": "local",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "railway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "subway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "weight": 1
+ }
+}, {
+ "featureType": "subway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#d8d8d8ff"
+ }
+}, {
+ "featureType": "subway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "subway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "subway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#979c9aff"
+ }
+}, {
+ "featureType": "subway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "continent",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "continent",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "continent",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "continent",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "city",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "city",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "city",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "city",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "town",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "town",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "town",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#454d50ff"
+ }
+}, {
+ "featureType": "town",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "road",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "poilabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "districtlabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "road",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "road",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "road",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "district",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "poilabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "poilabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "poilabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "manmade",
+ "elementType": "geometry",
+ "stylers": {
+ "color": "#12223dff",
+ "visibility": "off"
+ }
+}, {
+ "featureType": "districtlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "entertainment",
+ "elementType": "geometry",
+ "stylers": {
+ "color": "#12223dff",
+ "visibility": "off"
+ }
+}, {
+ "featureType": "shopping",
+ "elementType": "geometry",
+ "stylers": {
+ "color": "#12223dff",
+ "visibility": "off"
+ }
+}, {
+ "featureType": "nationalway",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,10",
+ "level": "6"
+ }
+}, {
+ "featureType": "nationalway",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,10",
+ "level": "7"
+ }
+}, {
+ "featureType": "nationalway",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,10",
+ "level": "8"
+ }
+}, {
+ "featureType": "nationalway",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,10",
+ "level": "9"
+ }
+}, {
+ "featureType": "nationalway",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,10",
+ "level": "10"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,10",
+ "level": "6"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,10",
+ "level": "7"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,10",
+ "level": "8"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,10",
+ "level": "9"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,10",
+ "level": "10"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,10",
+ "level": "6"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,10",
+ "level": "7"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,10",
+ "level": "8"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,10",
+ "level": "9"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,10",
+ "level": "10"
+ }
+}, {
+ "featureType": "cityhighway",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,9",
+ "level": "6"
+ }
+}, {
+ "featureType": "cityhighway",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,9",
+ "level": "7"
+ }
+}, {
+ "featureType": "cityhighway",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,9",
+ "level": "8"
+ }
+}, {
+ "featureType": "cityhighway",
+ "stylers": {
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,9",
+ "level": "9"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,9",
+ "level": "6"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,9",
+ "level": "7"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,9",
+ "level": "8"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,9",
+ "level": "9"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,9",
+ "level": "6"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,9",
+ "level": "7"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,9",
+ "level": "8"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6,9",
+ "level": "9"
+ }
+}, {
+ "featureType": "subwaylabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "subwaylabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "tertiarywaysign",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "tertiarywaysign",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "provincialwaysign",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "provincialwaysign",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "nationalwaysign",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "nationalwaysign",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "highwaysign",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "highwaysign",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "village",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "district",
+ "elementType": "labels.text",
+ "stylers": {
+ "fontsize": 20
+ }
+}, {
+ "featureType": "district",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "district",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "country",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "country",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "water",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "water",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "tertiaryway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "tertiaryway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff10"
+ }
+}, {
+ "featureType": "provincialway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "provincialway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "labels.text",
+ "stylers": {
+ "fontsize": 20
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "labels.text",
+ "stylers": {
+ "fontsize": 20
+ }
+}, {
+ "featureType": "provincialway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "provincialway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "provincialway",
+ "elementType": "labels.text",
+ "stylers": {
+ "fontsize": 20
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "labels.text",
+ "stylers": {
+ "fontsize": 20
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "estate",
+ "elementType": "geometry",
+ "stylers": {
+ "color": "#12223dff",
+ "visibility": "off"
+ }
+}, {
+ "featureType": "tertiaryway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "tertiaryway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "fourlevelway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "fourlevelway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "scenicspotsway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "scenicspotsway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "universityway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "universityway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "vacationway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "vacationway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "fourlevelway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "fourlevelway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+}, {
+ "featureType": "fourlevelway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "transportationlabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "transportationlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "transportationlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "transportationlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "educationlabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "educationlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "educationlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "educationlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "transportation",
+ "elementType": "geometry",
+ "stylers": {
+ "color": "#113549ff",
+ "visibility": "off"
+ }
+}, {
+ "featureType": "airportlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "airportlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "scenicspotslabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "scenicspotslabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "medicallabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "medicallabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "medicallabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "scenicspotslabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "airportlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "entertainmentlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "entertainmentlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "entertainmentlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "estatelabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "estatelabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "estatelabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "businesstowerlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "businesstowerlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "businesstowerlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "companylabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "companylabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "companylabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "governmentlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "governmentlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "governmentlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "restaurantlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "restaurantlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "restaurantlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "hotellabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "hotellabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "hotellabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "shoppinglabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "shoppinglabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "shoppinglabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "lifeservicelabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "lifeservicelabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "lifeservicelabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "carservicelabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "carservicelabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "carservicelabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "financelabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "financelabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "financelabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "otherlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "otherlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "otherlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "manmade",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "manmade",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "transportation",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "transportation",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "education",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "education",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "medical",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "medical",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "scenicspots",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+}, {
+ "featureType": "scenicspots",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "education",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "medical",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "transportation",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "scenicspots",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "playground",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "parkinglot",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "manmade",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "estatelabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "businesstowerlabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "companylabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "restaurantlabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "hotellabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "shoppinglabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "lifeservicelabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "financelabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "background",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on"
+ }
+}]
\ No newline at end of file
diff --git a/bigScreen/src/utils/custom_map_config.json b/bigScreen/src/utils/custom_map_config.json
new file mode 100644
index 0000000..887e334
--- /dev/null
+++ b/bigScreen/src/utils/custom_map_config.json
@@ -0,0 +1,449 @@
+[
+ {
+ "featureType": "land",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#091220ff"
+ }
+ },
+ {
+ "featureType": "water",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#113549ff"
+ }
+ },
+ {
+ "featureType": "green",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#0e1b30ff"
+ }
+ },
+ {
+ "featureType": "building",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on"
+ }
+ },
+ {
+ "featureType": "subwaystation",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#113549B2"
+ }
+ },
+ {
+ "featureType": "education",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "color": "#12223dff"
+ }
+ },
+ {
+ "featureType": "medical",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#12223dff"
+ }
+ },
+ {
+ "featureType": "scenicspots",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#12223dff"
+ }
+ },
+ {
+ "featureType": "highway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "weight": "4"
+ }
+ },
+ {
+ "featureType": "highway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ },
+ {
+ "featureType": "highway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#fed66900"
+ }
+ },
+ {
+ "featureType": "highway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ },
+ {
+ "featureType": "highway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ },
+ {
+ "featureType": "highway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ },
+ {
+ "featureType": "highway",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "on"
+ }
+ },
+ {
+ "featureType": "arterial",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "weight": "2"
+ }
+ },
+ {
+ "featureType": "local",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "weight": "1"
+ }
+ },
+ {
+ "featureType": "railway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "weight": "1"
+ }
+ },
+ {
+ "featureType": "subway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "weight": "1"
+ }
+ },
+ {
+ "featureType": "continent",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ },
+ {
+ "featureType": "continent",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "on"
+ }
+ },
+ {
+ "featureType": "continent",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ },
+ {
+ "featureType": "continent",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ },
+ {
+ "featureType": "city",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+ },
+ {
+ "featureType": "city",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ },
+ {
+ "featureType": "city",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#2dc4bbff"
+ }
+ },
+ {
+ "featureType": "city",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ },
+ {
+ "featureType": "town",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+ },
+ {
+ "featureType": "road",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#12223dff"
+ }
+ },
+ {
+ "featureType": "poilabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ },
+ {
+ "featureType": "districtlabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+ },
+ {
+ "featureType": "road",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on"
+ }
+ },
+ {
+ "featureType": "road",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+ },
+ {
+ "featureType": "road",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+ },
+ {
+ "featureType": "district",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+ },
+ {
+ "featureType": "highway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "highway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "highway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "highway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "9",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "highway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "10",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "highway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "highway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "highway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "highway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "9",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "highway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "10",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "nationalway",
+ "stylers": {
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "nationalway",
+ "stylers": {
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "nationalway",
+ "stylers": {
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "nationalway",
+ "stylers": {
+ "level": "9",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "nationalway",
+ "stylers": {
+ "level": "10",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "9",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ },
+ {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "10",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-10"
+ }
+ }
+]
\ No newline at end of file
diff --git a/bigScreen/src/utils/custom_map_light.json b/bigScreen/src/utils/custom_map_light.json
new file mode 100644
index 0000000..fd8126d
--- /dev/null
+++ b/bigScreen/src/utils/custom_map_light.json
@@ -0,0 +1,1049 @@
+[{
+ "featureType": "water",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#ccd6d7ff"
+ }
+}, {
+ "featureType": "green",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#dee5e5ff"
+ }
+}, {
+ "featureType": "building",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "building",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#d1dbdbff"
+ }
+}, {
+ "featureType": "building",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#aab6b6ff"
+ }
+}, {
+ "featureType": "subwaystation",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "color": "#888fa0ff"
+ }
+}, {
+ "featureType": "education",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#e1e7e7ff"
+ }
+}, {
+ "featureType": "medical",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#d1dbdbff"
+ }
+}, {
+ "featureType": "scenicspots",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "color": "#d1dbdbff"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "weight": "4"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#cacfcfff"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#999999ff"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "arterial",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "weight": "2"
+ }
+}, {
+ "featureType": "arterial",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#fbfffeff"
+ }
+}, {
+ "featureType": "arterial",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#cacfcfff"
+ }
+}, {
+ "featureType": "arterial",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "arterial",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#999999ff"
+ }
+}, {
+ "featureType": "arterial",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "local",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "on",
+ "weight": "1"
+ }
+}, {
+ "featureType": "local",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#fbfffeff"
+ }
+}, {
+ "featureType": "local",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#cacfcfff"
+ }
+}, {
+ "featureType": "local",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "local",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#999999ff"
+ }
+}, {
+ "featureType": "local",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "railway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "weight": "1"
+ }
+}, {
+ "featureType": "railway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#9494941a"
+ }
+}, {
+ "featureType": "railway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#ffffff1a"
+ }
+}, {
+ "featureType": "subway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "weight": "1"
+ }
+}, {
+ "featureType": "subway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#f36c0cff"
+ }
+}, {
+ "featureType": "subway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#f36c0cff"
+ }
+}, {
+ "featureType": "subway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "subway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#979c9aff"
+ }
+}, {
+ "featureType": "subway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "continent",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "continent",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "continent",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#333333ff"
+ }
+}, {
+ "featureType": "continent",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "city",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "city",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "city",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#454d50ff"
+ }
+}, {
+ "featureType": "city",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "town",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "town",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "town",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#454d50ff"
+ }
+}, {
+ "featureType": "town",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "road",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "road",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#fbfffeff"
+ }
+}, {
+ "featureType": "poilabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "districtlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "poilabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#999999ff"
+ }
+}, {
+ "featureType": "districtlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#888fa0ff"
+ }
+}, {
+ "featureType": "transportation",
+ "elementType": "geometry",
+ "stylers": {
+ "color": "#d1dbdbff"
+ }
+}, {
+ "featureType": "companylabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "restaurantlabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "lifeservicelabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "carservicelabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "financelabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "otherlabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "village",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "district",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "land",
+ "elementType": "geometry",
+ "stylers": {
+ "color": "#edf3f3ff"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#cacfcfff"
+ }
+}, {
+ "featureType": "provincialway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#cacfcfff"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#cacfcfff"
+ }
+}, {
+ "featureType": "road",
+ "elementType": "geometry.stroke",
+ "stylers": {
+ "color": "#cacfcfff"
+ }
+}, {
+ "featureType": "subwaylabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "subwaylabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "tertiarywaysign",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "tertiarywaysign",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "provincialwaysign",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "provincialwaysign",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "nationalwaysign",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "nationalwaysign",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "highwaysign",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "highwaysign",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#fbfffeff"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#999999ff"
+ }
+}, {
+ "featureType": "provincialway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#999999ff"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#999999ff"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "highway",
+ "stylers": {
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "highway",
+ "stylers": {
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "highway",
+ "stylers": {
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "highway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "nationalway",
+ "stylers": {
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "nationalway",
+ "stylers": {
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "nationalway",
+ "stylers": {
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "nationalway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "provincialway",
+ "stylers": {
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "8-8"
+ }
+}, {
+ "featureType": "provincialway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "8-8"
+ }
+}, {
+ "featureType": "provincialway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "8-8"
+ }
+}, {
+ "featureType": "cityhighway",
+ "stylers": {
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "cityhighway",
+ "stylers": {
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "cityhighway",
+ "stylers": {
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "geometry",
+ "stylers": {
+ "visibility": "off",
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "6",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "7",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off",
+ "level": "8",
+ "curZoomRegionId": "0",
+ "curZoomRegion": "6-8"
+ }
+}, {
+ "featureType": "cityhighway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#fbfffeff"
+ }
+}, {
+ "featureType": "water",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#8f5a33ff"
+ }
+}, {
+ "featureType": "water",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "country",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#8f5a33ff"
+ }
+}, {
+ "featureType": "country",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "country",
+ "elementType": "labels.text",
+ "stylers": {
+ "fontsize": "28"
+ }
+}, {
+ "featureType": "manmade",
+ "elementType": "geometry",
+ "stylers": {
+ "color": "#dfe7e7ff"
+ }
+}, {
+ "featureType": "provincialway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#fbfffeff"
+ }
+}, {
+ "featureType": "tertiaryway",
+ "elementType": "geometry.fill",
+ "stylers": {
+ "color": "#fbfffeff"
+ }
+}, {
+ "featureType": "manmade",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#999999ff"
+ }
+}, {
+ "featureType": "manmade",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "scenicspots",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#999999ff"
+ }
+}, {
+ "featureType": "scenicspots",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "airportlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#999999ff"
+ }
+}, {
+ "featureType": "airportlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "scenicspotslabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#999999ff"
+ }
+}, {
+ "featureType": "scenicspotslabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "educationlabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#999999ff"
+ }
+}, {
+ "featureType": "educationlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "medicallabel",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#999999ff"
+ }
+}, {
+ "featureType": "medicallabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "companylabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "restaurantlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "hotellabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "hotellabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "shoppinglabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "shoppinglabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "lifeservicelabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "carservicelabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "transportationlabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "transportationlabel",
+ "elementType": "labels",
+ "stylers": {
+ "visibility": "on"
+ }
+}, {
+ "featureType": "financelabel",
+ "elementType": "labels.icon",
+ "stylers": {
+ "visibility": "off"
+ }
+}, {
+ "featureType": "entertainment",
+ "elementType": "geometry",
+ "stylers": {
+ "color": "#d1dbdbff"
+ }
+}, {
+ "featureType": "estate",
+ "elementType": "geometry",
+ "stylers": {
+ "color": "#d1dbdbff"
+ }
+}, {
+ "featureType": "shopping",
+ "elementType": "geometry",
+ "stylers": {
+ "color": "#d1dbdbff"
+ }
+}, {
+ "featureType": "education",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#999999ff"
+ }
+}, {
+ "featureType": "education",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "medical",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#999999ff"
+ }
+}, {
+ "featureType": "medical",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "transportation",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#999999ff"
+ }
+}, {
+ "featureType": "transportation",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffffff"
+ }
+}, {
+ "featureType": "districtlabel",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "district",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#21212100"
+ }
+}, {
+ "featureType": "village",
+ "elementType": "labels.text.stroke",
+ "stylers": {
+ "color": "#ffffff00"
+ }
+}, {
+ "featureType": "village",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "weight": "40"
+ }
+}, {
+ "featureType": "subwaylabel",
+ "elementType": "labels.text",
+ "stylers": {
+ "fontsize": "16"
+ }
+}, {
+ "featureType": "district",
+ "elementType": "labels.text.fill",
+ "stylers": {
+ "color": "#212121ff",
+ "weight": "10"
+ }
+}]
\ No newline at end of file
diff --git a/bigScreen/src/utils/custom_map_visiblity.js b/bigScreen/src/utils/custom_map_visiblity.js
new file mode 100644
index 0000000..cb755ad
--- /dev/null
+++ b/bigScreen/src/utils/custom_map_visiblity.js
@@ -0,0 +1,1409 @@
+let styleJson = [
+ {
+ featureType: 'land',
+ elementType: 'geometry',
+ stylers: {
+ color: '#1d1c24ff'
+ }
+ },
+ {
+ featureType: 'manmade',
+ elementType: 'geometry',
+ stylers: {
+ color: '#242f3eff'
+ }
+ },
+ {
+ featureType: 'water',
+ elementType: 'geometry',
+ stylers: {
+ color: '#5d718dff'
+ }
+ },
+ {
+ featureType: 'road',
+ elementType: 'geometry.fill',
+ stylers: {
+ color: '#2d2c34ff'
+ }
+ },
+ {
+ featureType: 'road',
+ elementType: 'geometry.stroke',
+ stylers: {
+ color: '#2a2830ff'
+ }
+ },
+ {
+ featureType: 'districtlabel',
+ elementType: 'labels.text.fill',
+ stylers: {
+ color: '#596c88ff',
+ weight: '10'
+ }
+ },
+ {
+ featureType: 'districtlabel',
+ elementType: 'labels.text.stroke',
+ stylers: {
+ color: '#596c8800'
+ }
+ },
+ {
+ featureType: 'poilabel',
+ elementType: 'labels.text.fill',
+ stylers: {
+ color: '#576a87ff',
+ weight: '10'
+ }
+ },
+ {
+ featureType: 'poilabel',
+ elementType: 'labels.text.stroke',
+ stylers: {
+ color: '#576a8700',
+ weight: '0.8'
+ }
+ },
+ {
+ featureType: 'subway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'on',
+ weight: "1"
+
+ }
+ },
+ {
+ featureType: 'railway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'on'
+ }
+ },
+ {
+ featureType: 'poilabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'subwaylabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'on'
+ }
+ },
+ {
+ featureType: 'subwaylabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'on'
+ }
+ },
+ {
+ featureType: 'tertiarywaysign',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'tertiarywaysign',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'provincialwaysign',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'provincialwaysign',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'nationalwaysign',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'nationalwaysign',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'highwaysign',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'highwaysign',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'green',
+ elementType: 'geometry',
+ stylers: {
+ color: '#080405ff'
+ }
+ },
+ {
+ featureType: 'nationalwaysign',
+ elementType: 'labels.text.fill',
+ stylers: {
+ color: '#d0021bff'
+ }
+ },
+ {
+ featureType: 'nationalwaysign',
+ elementType: 'labels.text.stroke',
+ stylers: {
+ color: '#ffffffff'
+ }
+ },
+ {
+ featureType: 'city',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'on'
+ }
+ },
+ {
+ featureType: 'city',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'city',
+ elementType: 'labels.text.fill',
+ stylers: {
+ color: '#576a87ff'
+ }
+ },
+ {
+ featureType: 'city',
+ elementType: 'labels.text.stroke',
+ stylers: {
+ color: '#576a8700'
+ }
+ },
+ {
+ featureType: 'water',
+ elementType: 'labels.text.fill',
+ stylers: {
+ color: '#435673ff',
+ weight: '10'
+ }
+ },
+ {
+ featureType: 'water',
+ elementType: 'labels.text.stroke',
+ stylers: {
+ color: '#242f3eff',
+ weight: '0.4'
+ }
+ },
+ {
+ featureType: 'local',
+ elementType: 'geometry.fill',
+ stylers: {
+ color: '#38414eff'
+ }
+ },
+ {
+ featureType: 'local',
+ elementType: 'geometry.stroke',
+ stylers: {
+ color: '#ffffff00'
+ }
+ },
+ {
+ featureType: 'fourlevelway',
+ elementType: 'geometry.fill',
+ stylers: {
+ color: '#38414eff'
+ }
+ },
+ {
+ featureType: 'fourlevelway',
+ elementType: 'geometry.stroke',
+ stylers: {
+ color: '#ffffff00'
+ }
+ },
+ {
+ featureType: 'tertiaryway',
+ elementType: 'geometry.fill',
+ stylers: {
+ color: '#38414eff'
+ }
+ },
+ {
+ featureType: 'tertiaryway',
+ elementType: 'geometry.stroke',
+ stylers: {
+ color: '#ffffff00'
+ }
+ },
+ {
+ featureType: 'tertiaryway',
+ elementType: 'labels.text.fill',
+ stylers: {
+ color: '#759879ff'
+ }
+ },
+ {
+ featureType: 'fourlevelway',
+ elementType: 'labels.text.fill',
+ stylers: {
+ color: '#759879ff'
+ }
+ },
+ {
+ featureType: 'highway',
+ elementType: 'labels.text.fill',
+ stylers: {
+ color: '#546884ff',
+ weight: '10'
+ }
+ },
+ {
+ featureType: 'highway',
+ elementType: 'geometry.fill',
+ stylers: {
+ color: '#2d2c34ff'
+ }
+ },
+ {
+ featureType: 'highway',
+ elementType: 'geometry.stroke',
+ stylers: {
+ color: '#2d2c34ff'
+ }
+ },
+ {
+ featureType: 'provincialway',
+ elementType: 'geometry.fill',
+ stylers: {
+ color: '#2d2c34ff'
+ }
+ },
+ {
+ featureType: 'provincialway',
+ elementType: 'geometry.stroke',
+ stylers: {
+ color: '#2d2c34ff'
+ }
+ },
+ {
+ featureType: 'tertiaryway',
+ elementType: 'labels.text.stroke',
+ stylers: {
+ color: '#1a2e1cff'
+ }
+ },
+ {
+ featureType: 'fourlevelway',
+ elementType: 'labels.text.stroke',
+ stylers: {
+ color: '#1a2e1cff'
+ }
+ },
+ {
+ featureType: 'highway',
+ elementType: 'labels.text.stroke',
+ stylers: {
+ color: '#546884ff'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ elementType: 'labels.text.stroke',
+ stylers: {
+ color: '#546884ff',
+ weight: '0.4'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ elementType: 'labels.text.fill',
+ stylers: {
+ color: '#546884ff',
+ weight: '10'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ elementType: 'geometry.fill',
+ stylers: {
+ color: '#2d2c34ff'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ elementType: 'geometry.stroke',
+ stylers: {
+ color: '#2d2c34ff'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ elementType: 'geometry.fill',
+ stylers: {
+ color: '#2d2c34ff'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ elementType: 'geometry.stroke',
+ stylers: {
+ color: '#2d2c34ff'
+ }
+ },
+ {
+ featureType: 'arterial',
+ elementType: 'geometry.fill',
+ stylers: {
+ color: '#9e7d60ff'
+ }
+ },
+ {
+ featureType: 'arterial',
+ elementType: 'geometry.stroke',
+ stylers: {
+ color: '#554631fa'
+ }
+ },
+ {
+ featureType: 'medicallabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'medicallabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'entertainmentlabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'entertainmentlabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'estatelabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'estatelabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'businesstowerlabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'businesstowerlabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'companylabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'companylabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'governmentlabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'governmentlabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'restaurantlabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'restaurantlabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'hotellabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'hotellabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'shoppinglabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'shoppinglabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'lifeservicelabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'lifeservicelabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'carservicelabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'carservicelabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'financelabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'financelabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'otherlabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'otherlabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'airportlabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'on'
+ }
+ },
+ {
+ featureType: 'airportlabel',
+ elementType: 'labels.text.fill',
+ stylers: {
+ color: '#576a87ff',
+ weight: '10'
+ }
+ },
+ {
+ featureType: 'airportlabel',
+ elementType: 'labels.text.stroke',
+ stylers: {
+ color: '#576a8700',
+ weight: '0.8'
+ }
+ },
+ {
+ featureType: 'airportlabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'highway',
+ stylers: {
+ level: '6',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'highway',
+ stylers: {
+ level: '7',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'highway',
+ stylers: {
+ level: '8',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'highway',
+ stylers: {
+ level: '9',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'highway',
+ stylers: {
+ level: '10',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'highway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '6',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'highway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '7',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'highway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '8',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'highway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '9',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'highway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '10',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ stylers: {
+ level: '6',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ stylers: {
+ level: '7',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ stylers: {
+ level: '8',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ stylers: {
+ level: '9',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ stylers: {
+ level: '10',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '6',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '7',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '8',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '9',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '10',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '6',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '7',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '8',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '9',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '10',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'highway',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '6',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'highway',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '7',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'highway',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '8',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'highway',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '9',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'highway',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '10',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'provincialway',
+ stylers: {
+ level: '8',
+ curZoomRegionId: '0',
+ curZoomRegion: '8-9'
+ }
+ },
+ {
+ featureType: 'provincialway',
+ stylers: {
+ level: '9',
+ curZoomRegionId: '0',
+ curZoomRegion: '8-9'
+ }
+ },
+ {
+ featureType: 'provincialway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '8',
+ curZoomRegionId: '0',
+ curZoomRegion: '8-9'
+ }
+ },
+ {
+ featureType: 'provincialway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '9',
+ curZoomRegionId: '0',
+ curZoomRegion: '8-9'
+ }
+ },
+ {
+ featureType: 'provincialway',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '8',
+ curZoomRegionId: '0',
+ curZoomRegion: '8-9'
+ }
+ },
+ {
+ featureType: 'provincialway',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '9',
+ curZoomRegionId: '0',
+ curZoomRegion: '8-9'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ stylers: {
+ level: '6',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ stylers: {
+ level: '7',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ stylers: {
+ level: '8',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ stylers: {
+ level: '9',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ stylers: {
+ level: '10',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '6',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '7',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '8',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '9',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '10',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '6',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '7',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '8',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '9',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '10',
+ curZoomRegionId: '0',
+ curZoomRegion: '6-10'
+ }
+ },
+ {
+ featureType: 'arterial',
+ stylers: {
+ level: '9',
+ curZoomRegionId: '0',
+ curZoomRegion: '9-10'
+ }
+ },
+ {
+ featureType: 'arterial',
+ stylers: {
+ level: '10',
+ curZoomRegionId: '0',
+ curZoomRegion: '9-10'
+ }
+ },
+ {
+ featureType: 'arterial',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '9',
+ curZoomRegionId: '0',
+ curZoomRegion: '9-10'
+ }
+ },
+ {
+ featureType: 'arterial',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off',
+ level: '10',
+ curZoomRegionId: '0',
+ curZoomRegion: '9-10'
+ }
+ },
+ {
+ featureType: 'arterial',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '9',
+ curZoomRegionId: '0',
+ curZoomRegion: '9-10'
+ }
+ },
+ {
+ featureType: 'arterial',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off',
+ level: '10',
+ curZoomRegionId: '0',
+ curZoomRegion: '9-10'
+ }
+ },
+ {
+ featureType: 'building',
+ elementType: 'geometry.fill',
+ stylers: {
+ color: '#2a3341ff'
+ }
+ },
+ {
+ featureType: 'building',
+ elementType: 'geometry.stroke',
+ stylers: {
+ color: '#1a212eff'
+ }
+ },
+ {
+ featureType: 'road',
+ elementType: 'labels.text.fill',
+ stylers: {
+ color: '#546884ff',
+ weight: '10'
+ }
+ },
+ {
+ featureType: 'road',
+ elementType: 'labels.text.stroke',
+ stylers: {
+ color: '#546884ff',
+ weight: '0.4'
+ }
+ },
+ {
+ featureType: 'provincialway',
+ elementType: 'labels.text.fill',
+ stylers: {
+ color: '#546884ff',
+ weight: '10'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ elementType: 'labels.text.fill',
+ stylers: {
+ color: '#546884ff',
+ weight: '10'
+ }
+ },
+ {
+ featureType: 'arterial',
+ elementType: 'labels.text.fill',
+ stylers: {
+ color: '#546884ff'
+ }
+ },
+ {
+ featureType: 'provincialway',
+ elementType: 'labels.text.stroke',
+ stylers: {
+ color: '#546884ff',
+ weight: '0.2'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ elementType: 'labels.text.stroke',
+ stylers: {
+ color: '#546884ff',
+ weight: '0.2'
+ }
+ },
+ {
+ featureType: 'arterial',
+ elementType: 'labels.text.stroke',
+ stylers: {
+ color: '#546884ff',
+ weight: '0.4'
+ }
+ },
+ {
+ featureType: 'local',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'manmade',
+ elementType: 'labels.text.fill',
+ stylers: {
+ color: '#d69563ff'
+ }
+ },
+ {
+ featureType: 'manmade',
+ elementType: 'labels.text.stroke',
+ stylers: {
+ color: '#17263cff'
+ }
+ },
+ {
+ featureType: 'subwaystation',
+ elementType: 'geometry',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'transportationlabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'transportationlabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'estate',
+ elementType: 'geometry',
+ stylers: {
+ color: '#2a3341ff'
+ }
+ },
+ {
+ featureType: 'water',
+ elementType: 'labels.text',
+ stylers: {
+ fontsize: '13'
+ }
+ },
+ {
+ featureType: 'road',
+ elementType: 'labels.text',
+ stylers: {
+ fontsize: '13'
+ }
+ },
+ {
+ featureType: 'highway',
+ elementType: 'labels.text',
+ stylers: {
+ fontsize: '13'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ elementType: 'labels.text',
+ stylers: {
+ fontsize: '13'
+ }
+ },
+ {
+ featureType: 'nationalway',
+ elementType: 'geometry',
+ stylers: {
+ weight: '1.5'
+ }
+ },
+ {
+ featureType: 'provincialway',
+ elementType: 'labels.text',
+ stylers: {
+ fontsize: '13'
+ }
+ },
+ {
+ featureType: 'provincialway',
+ elementType: 'geometry',
+ stylers: {
+ weight: '1.6'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ elementType: 'geometry',
+ stylers: {
+ weight: '1.4'
+ }
+ },
+ {
+ featureType: 'cityhighway',
+ elementType: 'labels.text',
+ stylers: {
+ fontsize: '13'
+ }
+ },
+ {
+ featureType: 'arterial',
+ elementType: 'labels.text',
+ stylers: {
+ fontsize: '13'
+ }
+ },
+ {
+ featureType: 'arterial',
+ elementType: 'geometry',
+ stylers: {
+ weight: '2.5'
+ }
+ },
+ {
+ featureType: 'districtlabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'on'
+ }
+ },
+ {
+ featureType: 'districtlabel',
+ elementType: 'labels.text',
+ stylers: {
+ fontsize: '30'
+ }
+ },
+ {
+ featureType: 'airportlabel',
+ elementType: 'labels.text',
+ stylers: {
+ fontsize: '25'
+ }
+ },
+ {
+ featureType: 'poilabel',
+ elementType: 'labels.text',
+ stylers: {
+ fontsize: '25'
+ }
+ },
+ {
+ featureType: 'scenicspotslabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'scenicspotslabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'educationlabel',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'educationlabel',
+ elementType: 'labels.icon',
+ stylers: {
+ visibility: 'off'
+ }
+ },
+ {
+ featureType: 'continent',
+ elementType: 'labels',
+ stylers: {
+ visibility: 'off'
+ }
+ }
+]
+
+export default styleJson
diff --git a/bigScreen/src/utils/directives.js b/bigScreen/src/utils/directives.js
new file mode 100644
index 0000000..9a563a3
--- /dev/null
+++ b/bigScreen/src/utils/directives.js
@@ -0,0 +1,179 @@
+import Vue from "vue";
+
+// 鑷畾涔夊厓绱犲疄鐜板脊妗嗘嫋鎷絒閲嶇偣]
+Vue.directive("draw", {
+ inserted: function (el, binding, vNode) {
+ el.setAttribute("style", "position: fixed; z-index: 9999");
+ },
+
+ bind: function (el, bindding, vNode) {
+ el.setAttribute("draggable", true);
+
+ let left, top, width, height;
+
+ el._dragstart = function (event) {
+ event.stopPropagation();
+
+ left = event.clientX - el.offsetLeft;
+
+ top = event.clientY - el.offsetTop;
+
+ width = el.offsetWidth;
+
+ height = el.offsetHeight;
+ };
+
+ el._checkPosition = function () {
+ // 闃叉琚嫋鍑鸿竟鐣�
+
+ const width = el.offsetWidth;
+
+ const height = el.offsetHeight;
+
+ let left = Math.min(el.offsetLeft, document.body.clientWidth - width);
+
+ left = Math.max(0, left);
+
+ let top = Math.min(el.offsetTop, document.body.clientHeight - height);
+
+ top = Math.max(0, top);
+
+ el.style.left = left + "px";
+
+ el.style.top = top + "px";
+
+ el.style.width = width + "px";
+
+ el.style.height = height + "px";
+ };
+
+ el._dragEnd = function (event) {
+ event.stopPropagation();
+
+ left = event.clientX - left;
+
+ top = event.clientY - top;
+
+ el.style.left = left + "px";
+
+ el.style.top = top + "px";
+
+ el.style.width = width + "px";
+
+ el.style.height = height + "px";
+
+ el._checkPosition();
+ };
+
+ el._documentAllowDraop = function (event) {
+ event.preventDefault();
+ };
+
+ document.body.addEventListener("dragover", el._documentAllowDraop);
+
+ el.addEventListener("dragstart", el._dragstart);
+
+ el.addEventListener("dragend", el._dragEnd);
+
+ window.addEventListener("resize", el._checkPosition);
+ },
+
+ unbind: function (el, bindding, vNode) {
+ document.body.removeEventListener("dragover", el._documentAllowDraop);
+
+ el.removeEventListener("dragstart", el._dragstart);
+
+ el.removeEventListener("dragend", el._dragEnd);
+
+ window.removeEventListener("resize", el._checkPosition);
+
+ delete el._documentAllowDraop;
+
+ delete el._dragstart;
+
+ delete el._dragEnd;
+
+ delete el._checkPosition;
+ },
+});
+
+// v-dialogDrag: 寮圭獥鎷栨嫿
+
+Vue.directive("dialogDrag", {
+ bind(el, binding, vnode, oldVnode) {
+ const dialogHeaderEl = el.querySelector(".el-dialog__header");
+
+ const dragDom = el.querySelector(".el-dialog");
+
+ dialogHeaderEl.style.cursor = "move"; // 鑾峰彇鍘熸湁灞炴�� ie dom鍏冪礌.currentStyle 鐏嫄璋锋瓕 window.getComputedStyle(dom鍏冪礌, null);
+
+ const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null);
+
+ dialogHeaderEl.onmousedown = (e) => {
+ // 榧犳爣鎸変笅锛岃绠楀綋鍓嶅厓绱犺窛绂诲彲瑙嗗尯鐨勮窛绂�
+
+ const disX = e.clientX - dialogHeaderEl.offsetLeft;
+
+ const disY = e.clientY - dialogHeaderEl.offsetTop; // 鑾峰彇鍒扮殑鍊煎甫px 姝e垯鍖归厤鏇挎崲
+
+ let styL, styT; // 娉ㄦ剰鍦╥e涓� 绗竴娆¤幏鍙栧埌鐨勫�间负缁勪欢鑷甫50% 绉诲姩涔嬪悗璧嬪�间负px
+
+ if (sty.left.includes("%")) {
+ styL =
+ +document.body.clientWidth * (+sty.left.replace(/\%/g, "") / 100);
+
+ styT =
+ +document.body.clientHeight * (+sty.top.replace(/\%/g, "") / 100);
+ } else {
+ styL = +sty.left.replace(/\px/g, "");
+
+ styT = +sty.top.replace(/\px/g, "");
+ }
+
+ document.onmousemove = function (e) {
+ // 閫氳繃浜嬩欢濮旀墭锛岃绠楃Щ鍔ㄧ殑璺濈
+
+ const l = e.clientX - disX;
+
+ const t = e.clientY - disY; // 绉诲姩褰撳墠鍏冪礌
+
+ dragDom.style.left = `${l + styL}px`;
+
+ dragDom.style.top = `${t + styT}px`; // 灏嗘鏃剁殑浣嶇疆浼犲嚭鍘� // binding.value({x:e.pageX,y:e.pageY})
+ };
+
+ document.onmouseup = function (e) {
+ document.onmousemove = null;
+ document.onmouseup = null;
+ };
+ };
+ },
+});
+
+// v-dialogDragWidth: 寮圭獥瀹藉害鎷栧ぇ 鎷栧皬
+
+Vue.directive("dialogDragWidth", {
+ bind(el, binding, vnode, oldVnode) {
+ const dragDom = binding.value.$el.querySelector(".el-dialog");
+
+ el.onmousedown = (e) => {
+ // 榧犳爣鎸変笅锛岃绠楀綋鍓嶅厓绱犺窛绂诲彲瑙嗗尯鐨勮窛绂�
+
+ const disX = e.clientX - el.offsetLeft;
+
+ document.onmousemove = function (e) {
+ e.preventDefault(); // 绉诲姩鏃剁鐢ㄩ粯璁や簨浠� // 閫氳繃浜嬩欢濮旀墭锛岃绠楃Щ鍔ㄧ殑璺濈
+
+ const l = e.clientX - disX;
+
+ dragDom.style.width = `${l}px`;
+ };
+
+ document.onmouseup = function (e) {
+ document.onmousemove = null;
+
+ document.onmouseup = null;
+ };
+ };
+ },
+});
\ No newline at end of file
diff --git a/bigScreen/src/utils/district_boundary.js b/bigScreen/src/utils/district_boundary.js
new file mode 100644
index 0000000..8dc85ec
--- /dev/null
+++ b/bigScreen/src/utils/district_boundary.js
@@ -0,0 +1,5361 @@
+锘縱ar district_boundary_qingpu = [
+ [
+ [121.085518000355, 31.2937180003855],
+ [121.087574999886, 31.2910190000269],
+ [121.088964000089, 31.2916929996323],
+ [121.088469999791, 31.2900250000538],
+ [121.089640999832, 31.2901319995922],
+ [121.090779000151, 31.2888190001968],
+ [121.093740000001, 31.2806609999053],
+ [121.093436000371, 31.279198999934],
+ [121.094182999746, 31.2780710000766],
+ [121.098558000052, 31.2759280001771],
+ [121.100825000274, 31.2754729998791],
+ [121.101190000019, 31.2768610000352],
+ [121.099227000326, 31.2765720001977],
+ [121.099201000026, 31.2771479997804],
+ [121.102049000061, 31.2785279995676],
+ [121.110376000052, 31.2870929997422],
+ [121.113100999811, 31.2875130002248],
+ [121.114674000405, 31.2869450001117],
+ [121.116487000375, 31.2879770000386],
+ [121.120407000383, 31.2862399999761],
+ [121.119718000086, 31.2849370001425],
+ [121.122604000075, 31.2830419999884],
+ [121.126450000267, 31.2819469998542],
+ [121.127078999596, 31.2832050003105],
+ [121.129589000232, 31.2821019998075],
+ [121.12909099975, 31.2807319995821],
+ [121.130575999883, 31.2802079996995],
+ [121.131266000226, 31.281487000225],
+ [121.133440999802, 31.280597999698],
+ [121.133008999666, 31.2794449995871],
+ [121.135112000419, 31.278784999728],
+ [121.136401999653, 31.2785279995676],
+ [121.136814999812, 31.2796279999323],
+ [121.138297999853, 31.2795190003017],
+ [121.138413999806, 31.277325999895],
+ [121.145823999778, 31.2773079999643],
+ [121.149174999627, 31.2785180000058],
+ [121.149557000155, 31.2747980002276],
+ [121.14721299998, 31.2695069999481],
+ [121.148219999653, 31.2693639996489],
+ [121.148315999584, 31.2686000003898],
+ [121.150981000173, 31.2680290001383],
+ [121.152846999889, 31.2723679996835],
+ [121.154678999836, 31.2718829998007],
+ [121.156502000267, 31.2695170004093],
+ [121.158072999869, 31.2710659998961],
+ [121.163125999965, 31.2658450001467],
+ [121.163507999595, 31.2615320000019],
+ [121.16585199977, 31.261037999704],
+ [121.164905000166, 31.2594599997792],
+ [121.163958999708, 31.2595060001019],
+ [121.164409999822, 31.258108000384],
+ [121.165495000394, 31.2583770001984],
+ [121.166893000112, 31.2568459997431],
+ [121.169731999732, 31.2587830000355],
+ [121.17225700016, 31.256530999606],
+ [121.173333000318, 31.2581509996689],
+ [121.174279999922, 31.2577910001546],
+ [121.17351699981, 31.2566190000668],
+ [121.174505999552, 31.2566190000668],
+ [121.174826999966, 31.2553560002792],
+ [121.177032000027, 31.2563480001601],
+ [121.179739999901, 31.2540959997307],
+ [121.181944999962, 31.2542759999375],
+ [121.184608999606, 31.2569360002962],
+ [121.188532999798, 31.2555819999094],
+ [121.188889000027, 31.2534169998947],
+ [121.191779000201, 31.2531910002645],
+ [121.191596999902, 31.2553560002792],
+ [121.190693999628, 31.25585199977],
+ [121.192447000429, 31.2567099997667],
+ [121.192855000358, 31.2556719995632],
+ [121.195380999933, 31.2572040000646],
+ [121.196144000046, 31.2567099997667],
+ [121.197906000362, 31.2580159997386],
+ [121.198669999621, 31.2577900001085],
+ [121.198401999852, 31.2590980001726],
+ [121.201907999655, 31.2620349998155],
+ [121.204017999831, 31.259467000102],
+ [121.205362999803, 31.2599960002153],
+ [121.204815999759, 31.2611500003723],
+ [121.2059610004, 31.2632880000412],
+ [121.207254999818, 31.262020000023],
+ [121.208139000115, 31.2628579999968],
+ [121.208850999674, 31.2624520001597],
+ [121.208165999561, 31.2618189997471],
+ [121.209589999579, 31.2588500004272],
+ [121.209737000063, 31.2563409998373],
+ [121.212879000166, 31.2574040002945],
+ [121.213138999565, 31.2554269999561],
+ [121.214101999907, 31.2552230004412],
+ [121.214119999838, 31.2577089999704],
+ [121.216836000081, 31.2582909998299],
+ [121.215769000339, 31.2594070000331],
+ [121.219422999772, 31.2610290001883],
+ [121.219092999842, 31.2625270000211],
+ [121.220230000114, 31.263843999601],
+ [121.220560000044, 31.263032999973],
+ [121.22476899989, 31.2637180000857],
+ [121.224647999705, 31.264704999736],
+ [121.230749999613, 31.2647029996438],
+ [121.233265999626, 31.2640960004301],
+ [121.237822000185, 31.2613780000947],
+ [121.242153000261, 31.2618050000008],
+ [121.242334999661, 31.2604569998907],
+ [121.245121000434, 31.2609520002347],
+ [121.246761999667, 31.260410999568],
+ [121.246553999967, 31.2619840001615],
+ [121.247541999664, 31.2619599999541],
+ [121.247584999848, 31.2607709999817],
+ [121.249756000139, 31.2606980002126],
+ [121.24927000021, 31.2597010001011],
+ [121.246536000036, 31.2585100000366],
+ [121.242881999705, 31.2552940001181],
+ [121.242144999892, 31.2535630003322],
+ [121.243784999978, 31.2532369996878],
+ [121.24253499989, 31.2529869998502],
+ [121.241485000033, 31.2508389997201],
+ [121.237248999842, 31.2493630000025],
+ [121.237562999933, 31.2482439996609],
+ [121.236858999843, 31.2481230003762],
+ [121.236201000076, 31.245823999578],
+ [121.236997999958, 31.2447599999741],
+ [121.235505000355, 31.2430819999344],
+ [121.236964000189, 31.2422399997762],
+ [121.24349099991, 31.2429360003961],
+ [121.244366999837, 31.2393389999949],
+ [121.245269000064, 31.2385539997673],
+ [121.246648999852, 31.2402159999685],
+ [121.248366999937, 31.2389849998579],
+ [121.249634999955, 31.2366110000976],
+ [121.24945199961, 31.235045999873],
+ [121.252732999828, 31.2327249998589],
+ [121.253583000355, 31.2288890001273],
+ [121.252160000384, 31.2283470003139],
+ [121.254042999985, 31.2238780001696],
+ [121.253019000427, 31.2222349999453],
+ [121.254684999913, 31.2200000002998],
+ [121.255249999888, 31.2201730001839],
+ [121.256785999674, 31.2171080000342],
+ [121.254971999658, 31.2148039999047],
+ [121.259416000448, 31.2109450000118],
+ [121.260249000191, 31.208758999928],
+ [121.25862599999, 31.2077270000011],
+ [121.260352999591, 31.2053429997796],
+ [121.262287999791, 31.2052869998952],
+ [121.272946000258, 31.1955980000477],
+ [121.279585999794, 31.1964089996757],
+ [121.281381999879, 31.1973499999026],
+ [121.286651000044, 31.2015070000481],
+ [121.287891999716, 31.2030439998807],
+ [121.287969999716, 31.2045219996906],
+ [121.289306000172, 31.2041590000379],
+ [121.290183000145, 31.2051659997111],
+ [121.29286499972, 31.2035400002708],
+ [121.294800999966, 31.2005079998444],
+ [121.295989999939, 31.2001789999609],
+ [121.295877000123, 31.1991619998265],
+ [121.297178999911, 31.1988519999199],
+ [121.296988000096, 31.1978670003618],
+ [121.299321999811, 31.1959740002999],
+ [121.299340999787, 31.1946310004204],
+ [121.301249999688, 31.1936110001476],
+ [121.303158999588, 31.1906789998361],
+ [121.304296999907, 31.1901770000686],
+ [121.304149000276, 31.1892460003027],
+ [121.306180000407, 31.187071999873],
+ [121.307741999594, 31.1837090003701],
+ [121.308827000166, 31.1831960000954],
+ [121.312456000244, 31.1777600003238],
+ [121.313965999731, 31.1723429996298],
+ [121.317377999695, 31.1679830000155],
+ [121.317784999578, 31.1662120001837],
+ [121.319304000379, 31.1651960000954],
+ [121.317966999877, 31.1643669996374],
+ [121.316279000276, 31.1602939997683],
+ [121.314937999589, 31.1597629995628],
+ [121.313547000194, 31.1595440002554],
+ [121.311710000017, 31.162173000084],
+ [121.294143000199, 31.1567219996206],
+ [121.285502000117, 31.1549050003655],
+ [121.285957999562, 31.1542869997453],
+ [121.282676000197, 31.1543469998143],
+ [121.280305999722, 31.155305999972],
+ [121.280393000137, 31.1546769997438],
+ [121.27868300042, 31.1541980001376],
+ [121.279378000095, 31.1528799996124],
+ [121.278622000305, 31.1526089997056],
+ [121.275836999578, 31.1525790001208],
+ [121.273830999701, 31.1548879995815],
+ [121.273319000372, 31.1543180002756],
+ [121.274282999861, 31.1503030003832],
+ [121.272989999589, 31.1497320001317],
+ [121.273354000187, 31.1485339997444],
+ [121.2719740004, 31.1479050004155],
+ [121.27257400019, 31.146228000422],
+ [121.274846999789, 31.1477539997474],
+ [121.277338000448, 31.1440679997385],
+ [121.279733000278, 31.1446660003357],
+ [121.283032000426, 31.1419989996542],
+ [121.27654799999, 31.135300000095],
+ [121.261307999565, 31.1384580000367],
+ [121.261151000418, 31.1368549998584],
+ [121.259199000334, 31.1374900003633],
+ [121.256985999904, 31.1360149997925],
+ [121.256196000345, 31.1343359997067],
+ [121.257541000317, 31.131511999879],
+ [121.257488999718, 31.1308499999276],
+ [121.256395999676, 31.1306980001127],
+ [121.257186000134, 31.1292469997493],
+ [121.2541040001, 31.1290689996347],
+ [121.253140999757, 31.130824999674],
+ [121.253626999686, 31.1344179998908],
+ [121.242570999752, 31.1362279997225],
+ [121.241060000219, 31.1328359997816],
+ [121.235002999689, 31.1325570004053],
+ [121.234923999643, 31.1320240001075],
+ [121.24090400022, 31.1313650002946],
+ [121.240113999761, 31.1274689995947],
+ [121.235435999872, 31.1283079996145],
+ [121.232406999583, 31.12777400017],
+ [121.23157399984, 31.1214400003558],
+ [121.232024999954, 31.119862000431],
+ [121.231391000394, 31.1210320004265],
+ [121.230280999569, 31.1210650001497],
+ [121.22946499971, 31.1193920003406],
+ [121.226801000066, 31.1193409997874],
+ [121.219666000186, 31.1172100004412],
+ [121.216870999897, 31.1171409999573],
+ [121.216724000312, 31.1187919996511],
+ [121.218382000329, 31.1260279996925],
+ [121.223563000033, 31.1411520001647],
+ [121.216116000153, 31.1404399997062],
+ [121.203836000431, 31.1377259995553],
+ [121.20171699984, 31.1403399995913],
+ [121.197446999879, 31.1402000003298],
+ [121.196110000276, 31.1391569998957],
+ [121.195893000162, 31.1398620000313],
+ [121.197516000363, 31.1416620003011],
+ [121.197169999696, 31.1429680002731],
+ [121.191223999788, 31.1400050003306],
+ [121.177466000256, 31.1454739998253],
+ [121.177161999727, 31.1337790001008],
+ [121.175364999595, 31.1338659996163],
+ [121.175417000194, 31.1313959999255],
+ [121.175843000054, 31.1294209996794],
+ [121.177353000441, 31.1289630001424],
+ [121.177317999726, 31.1262989995992],
+ [121.179365999741, 31.1262979995531],
+ [121.179471000087, 31.1231229997267],
+ [121.180633999759, 31.1226830001204],
+ [121.179635999602, 31.1224700001904],
+ [121.179331999972, 31.120704999736],
+ [121.174800999666, 31.1191720000878],
+ [121.173933000108, 31.1206540000821],
+ [121.17268300002, 31.1203539997373],
+ [121.171911000392, 31.1210050000807],
+ [121.169809999732, 31.1198600003388],
+ [121.17070399959, 31.117230999611],
+ [121.168480999599, 31.116085999869],
+ [121.170409000375, 31.1108619999814],
+ [121.165983000415, 31.111040000096],
+ [121.166050999954, 31.1098059998471],
+ [121.161927000431, 31.1102980000527],
+ [121.162274000245, 31.1062719996531],
+ [121.160668999974, 31.1062460002528],
+ [121.160972999604, 31.1034170001944],
+ [121.160043999931, 31.1033380001487],
+ [121.16012199993, 31.1026370001974],
+ [121.155034000019, 31.1025069995984],
+ [121.154723000066, 31.1031040001495],
+ [121.14985200027, 31.1038040000546],
+ [121.149791000155, 31.1008509996739],
+ [121.152248000145, 31.100911999789],
+ [121.15218700003, 31.0951280001572],
+ [121.150833999689, 31.0951290002033],
+ [121.150616999575, 31.092442000398],
+ [121.148922999697, 31.0921119995692],
+ [121.148315999584, 31.0939980002076],
+ [121.146604999821, 31.0936110003474],
+ [121.14490399962, 31.097254000172],
+ [121.141292000326, 31.095907000108],
+ [121.139921000054, 31.099401000256],
+ [121.137323999903, 31.098834000189],
+ [121.13703900025, 31.1006290002283],
+ [121.13118700018, 31.1000139997464],
+ [121.130197000391, 31.1012409996724],
+ [121.128730000189, 31.1010049995811],
+ [121.127357999872, 31.103980000077],
+ [121.126100000315, 31.1024539998523],
+ [121.12310399975, 31.1052310002106],
+ [121.120915999574, 31.1052920003256],
+ [121.1198570002, 31.1076829999705],
+ [121.119119000342, 31.1072139999262],
+ [121.116358999868, 31.1096560001243],
+ [121.116037000307, 31.1109860003037],
+ [121.114898999989, 31.1102210000991],
+ [121.113866000016, 31.1112829996108],
+ [121.113128000157, 31.1107880001661],
+ [121.111520999794, 31.1128829996508],
+ [121.109767999893, 31.111708000324],
+ [121.107987999647, 31.1138399997163],
+ [121.10562600044, 31.1110339998193],
+ [121.10612199993, 31.1095539999172],
+ [121.104150999869, 31.1090609996655],
+ [121.1000260003, 31.1052880001412],
+ [121.101042000388, 31.1053619999564],
+ [121.101781000293, 31.1038830001004],
+ [121.100424999814, 31.1036849999628],
+ [121.101095000134, 31.1027730001739],
+ [121.098940999727, 31.1045480001901],
+ [121.098055000238, 31.1038579998469],
+ [121.099235999842, 31.10245199976],
+ [121.096006000177, 31.1003309999757],
+ [121.094599000044, 31.1019829997157],
+ [121.093366999887, 31.1012419997186],
+ [121.095294999765, 31.0974199997332],
+ [121.094920999604, 31.0960640001535],
+ [121.093002000142, 31.0954469995794],
+ [121.096231999807, 31.09059999999],
+ [121.095119999788, 31.0897290002932],
+ [121.096084000177, 31.0885709999517],
+ [121.09480000032, 31.0878540001621],
+ [121.09490399972, 31.0854869998252],
+ [121.096085000223, 31.0828499996279],
+ [121.097534999641, 31.0822079996995],
+ [121.101684000316, 31.0830499998577],
+ [121.102665999736, 31.084034000269],
+ [121.107997000062, 31.0795470001939],
+ [121.108908999851, 31.0797689996397],
+ [121.110662999798, 31.0783390002447],
+ [121.11157400044, 31.0787339995745],
+ [121.112529000413, 31.0775519999249],
+ [121.113788000016, 31.0778740003848],
+ [121.11694800005, 31.0721210003839],
+ [121.117651000094, 31.0691150002571],
+ [121.121637000447, 31.068588000236],
+ [121.121810000331, 31.0617539998473],
+ [121.12317400028, 31.0616959998706],
+ [121.12322599998, 31.0608640001735],
+ [121.121550000033, 31.0602030002683],
+ [121.121298000103, 31.0593240002025],
+ [121.116115000307, 31.059208000249],
+ [121.115402999849, 31.0605209996445],
+ [121.113406000387, 31.0603469997143],
+ [121.113615000132, 31.0580059996772],
+ [121.104959000258, 31.058327000091],
+ [121.104037000008, 31.0585569999056],
+ [121.10379499964, 31.059875000431],
+ [121.09721300008, 31.0592050001107],
+ [121.097499999825, 31.0573879999563],
+ [121.096543999806, 31.0555739999402],
+ [121.095207000203, 31.0559949995696],
+ [121.09490399972, 31.0579800002769],
+ [121.093740000001, 31.0585549998135],
+ [121.090031999877, 31.058265999976],
+ [121.089814999762, 31.0599480002001],
+ [121.088408999676, 31.0603689998295],
+ [121.089111999719, 31.0633509997489],
+ [121.089936999993, 31.063827000116],
+ [121.08825199963, 31.0654139995565],
+ [121.088330999676, 31.0664640003134],
+ [121.086072999869, 31.0669609998503],
+ [121.083608000409, 31.0665980001976],
+ [121.081342000233, 31.0647789999509],
+ [121.081923000046, 31.0630999998651],
+ [121.078579999667, 31.0618760000774],
+ [121.079822000285, 31.0607090002202],
+ [121.076374999607, 31.0588360001813],
+ [121.081271999703, 31.0521609999303],
+ [121.082556999606, 31.0548829995508],
+ [121.085326999641, 31.0538699996009],
+ [121.085039999896, 31.0522660002757],
+ [121.086611000397, 31.0507179999358],
+ [121.085656000424, 31.0500679996385],
+ [121.09161299994, 31.0467470002739],
+ [121.090422999922, 31.0441609997304],
+ [121.08850399956, 31.0426559995748],
+ [121.089182000249, 31.0418959996007],
+ [121.091266000126, 31.0424160001983],
+ [121.091785999824, 31.0404240000676],
+ [121.093166999657, 31.0408119999739],
+ [121.095684999763, 31.035353000041],
+ [121.095336999903, 31.0331439997958],
+ [121.09236899973, 31.0333969997718],
+ [121.091812000124, 31.0283879999063],
+ [121.086585000098, 31.0278860001388],
+ [121.084917999666, 31.0298469997393],
+ [121.082972999904, 31.0292760003871],
+ [121.080941999774, 31.0274509998638],
+ [121.088434999975, 31.0221570003453],
+ [121.097455999595, 31.0137189997321],
+ [121.098185999984, 31.0113429998796],
+ [121.099608999955, 31.0099559997696],
+ [121.099514000071, 30.9970489999114],
+ [121.095554000017, 30.9969079997045],
+ [121.094572999744, 30.9750509999038],
+ [121.090961999597, 30.9762250000837],
+ [121.09118700008, 30.9703970002215],
+ [121.092975999843, 30.9684549996985],
+ [121.092897999843, 30.9676209999093],
+ [121.083442999995, 30.9661579998918],
+ [121.083590999625, 30.9641400003608],
+ [121.076654999928, 30.9642700000605],
+ [121.075753999747, 30.9638339997393],
+ [121.076148999976, 30.9621720004375],
+ [121.073952000285, 30.9620189996771],
+ [121.074534000144, 30.9602790003756],
+ [121.072059000223, 30.9595710001016],
+ [121.071911999739, 30.9578069996933],
+ [121.064159000138, 30.956921000204],
+ [121.058809999882, 30.9580049998309],
+ [121.057749999563, 30.9575759998326],
+ [121.055787999916, 30.9585349999903],
+ [121.054955000173, 30.9612090000953],
+ [121.053592000271, 30.9615359998866],
+ [121.053314000041, 30.9636540004318],
+ [121.052349999653, 30.9639319997621],
+ [121.052811000228, 30.9673629997027],
+ [121.048721999621, 30.9664780002595],
+ [121.046498999629, 30.971397999618],
+ [121.042895999851, 30.9710689997346],
+ [121.042184000291, 30.9722809998683],
+ [121.038606999913, 30.9714730003787],
+ [121.041428999649, 30.9654949998944],
+ [121.038120999984, 30.962492999952],
+ [121.039415000302, 30.9612819998645],
+ [121.039006000327, 30.9595659998711],
+ [121.035907000408, 30.9585560000594],
+ [121.031765000055, 30.959160000034],
+ [121.028735999767, 30.9491970001415],
+ [121.023448999672, 30.9479320002616],
+ [121.023579000271, 30.9460370001075],
+ [121.015036000211, 30.9432949995646],
+ [121.014629000328, 30.944198999884],
+ [121.012509999737, 30.9434690003941],
+ [121.013274999941, 30.9413539999871],
+ [121.01087800002, 30.9424280000522],
+ [121.009420000233, 30.946314000291],
+ [121.007198000288, 30.9457579998319],
+ [121.006954999873, 30.9466260002897],
+ [121.007858000147, 30.9470059998271],
+ [121.006399000314, 30.9469370002424],
+ [121.006676999644, 30.9493310000257],
+ [121.008656000074, 30.9497470003238],
+ [121.008933000258, 30.948950999589],
+ [121.010947999651, 30.9503029998836],
+ [121.01059999979, 30.9518629998776],
+ [121.008621000259, 30.9516219995557],
+ [121.007232000057, 30.9521060002917],
+ [121.006850999574, 30.953112999965],
+ [121.004429000298, 30.9513090004101],
+ [121.005669999971, 30.9507889998125],
+ [120.998282000114, 30.9491940000032],
+ [120.997691999886, 30.9532170002644],
+ [120.99102600005, 30.9525599996443],
+ [120.990452999706, 30.9570170001345],
+ [120.988195999945, 30.9572259998801],
+ [120.987353999787, 30.9604160003981],
+ [120.990417999891, 30.9608889997276],
+ [120.988265999576, 30.9650289999884],
+ [120.989333000218, 30.9673279998873],
+ [120.988848000335, 30.9684900004132],
+ [120.987779999647, 30.9682480000452],
+ [120.987102999904, 30.9705720001977],
+ [120.988117999946, 30.9708630001274],
+ [120.987519000202, 30.9727030004432],
+ [120.988777999805, 30.9729219997506],
+ [120.988804000105, 30.974302000437],
+ [120.994758000381, 30.9751000003648],
+ [120.994984000012, 30.9760360003612],
+ [120.996146999684, 30.9761019998075],
+ [120.996208999846, 30.9791680000033],
+ [120.997988000046, 30.979782000439],
+ [120.997631999817, 30.9816549995786],
+ [120.996468000098, 30.9826230001514],
+ [120.994984000012, 30.9822659998761],
+ [120.992778999951, 30.9913970000716],
+ [120.991859999839, 30.9913970000716],
+ [120.990253000376, 30.9940940003379],
+ [120.991000999796, 30.9948969995969],
+ [120.990488000421, 30.9974230000714],
+ [120.9861819997, 30.9967339997743],
+ [120.985514000371, 30.9988510002735],
+ [120.987710000017, 30.9992859996492],
+ [120.987285000203, 31.0034710001866],
+ [120.986320999814, 31.0037620001162],
+ [120.986207999999, 31.0054309997409],
+ [120.987754000247, 31.0055919999709],
+ [120.987164000019, 31.0073380004484],
+ [120.987753000201, 31.007457999687],
+ [120.986721000274, 31.0096429997247],
+ [120.987598000248, 31.0103200003678],
+ [120.984733000328, 31.0150879999113],
+ [120.986086999815, 31.0159829998157],
+ [120.979550999679, 31.0166380003435],
+ [120.97868300012, 31.0182789995762],
+ [120.958963999989, 31.0188430004042],
+ [120.958624999644, 31.0198039997549],
+ [120.960612000444, 31.0219869997003],
+ [120.960047999616, 31.0230069999731],
+ [120.956246999699, 31.0239149995776],
+ [120.954077000353, 31.0308209996894],
+ [120.950596999952, 31.032314000191],
+ [120.947993000377, 31.0325209998443],
+ [120.946882000404, 31.0313499998027],
+ [120.944920999904, 31.0322279998224],
+ [120.943982999816, 31.0307069998282],
+ [120.945242000318, 31.0300039997848],
+ [120.944539000275, 31.0273410001871],
+ [120.946968999919, 31.0262860000989],
+ [120.945771999578, 31.0199090001003],
+ [120.932137000322, 31.0194119996641],
+ [120.931373000164, 31.0188279997125],
+ [120.935911999939, 31.0123300004292],
+ [120.935616999825, 31.0116869995554],
+ [120.933915999624, 31.011305999972],
+ [120.929620000263, 31.012330999576],
+ [120.927214999972, 31.0140869996154],
+ [120.922833000243, 31.0143809996835],
+ [120.922007999969, 31.0127419996436],
+ [120.913964000438, 31.015114000211],
+ [120.906881000258, 31.0128900001734],
+ [120.905806000147, 31.0149689998195],
+ [120.905917999916, 31.0192710003564],
+ [120.897221999995, 31.01982599987],
+ [120.896424000068, 31.022752999951],
+ [120.897837999624, 31.0399580001616],
+ [120.895598999794, 31.0419159996237],
+ [120.892882999551, 31.0478889998775],
+ [120.893074000265, 31.0505320003516],
+ [120.891303000433, 31.0526330001129],
+ [120.890426999606, 31.0561969998917],
+ [120.890479000206, 31.0609620001962],
+ [120.894722999867, 31.0728099997817],
+ [120.89547799961, 31.080652999936],
+ [120.899261999642, 31.080358999868],
+ [120.900883999797, 31.0816780004394],
+ [120.89753500004, 31.0863819997296],
+ [120.897969000269, 31.0879469999541],
+ [120.895157000096, 31.0892230003412],
+ [120.892552999621, 31.0889329995583],
+ [120.891277000134, 31.092990999635],
+ [120.888553000421, 31.095107000088],
+ [120.888204999661, 31.0997730003238],
+ [120.887076999804, 31.0994540000021],
+ [120.886876999574, 31.0965849998979],
+ [120.88612199983, 31.0962659995762],
+ [120.874474999622, 31.0976890004471],
+ [120.873928999624, 31.0980289999384],
+ [120.87481299992, 31.1006539995824],
+ [120.871854000162, 31.1001289996536],
+ [120.872479000206, 31.1022090002452],
+ [120.869728000147, 31.1027130001049],
+ [120.868382000129, 31.1011499999726],
+ [120.865649000001, 31.1012019996726],
+ [120.865413999956, 31.099481000348],
+ [120.861578000225, 31.099878999816],
+ [120.860328000137, 31.1006209998593],
+ [120.859824000277, 31.1025539999672],
+ [120.858582999706, 31.1023690004291],
+ [120.857889000077, 31.1032970000566],
+ [120.855589000132, 31.1025289997136],
+ [120.854372999814, 31.1030850001727],
+ [120.852619999913, 31.1050699999806],
+ [120.852671999613, 31.1061339995845],
+ [120.853731999932, 31.1107609998203],
+ [120.856040000246, 31.1115660000709],
+ [120.858071000376, 31.1147450000817],
+ [120.861795000339, 31.1169920002806],
+ [120.866428999998, 31.1219610001001],
+ [120.866853999812, 31.1260509998538],
+ [120.868182999946, 31.1294049998409],
+ [120.872270999607, 31.1337380000087],
+ [120.877139000165, 31.1369729999041],
+ [120.895069999681, 31.1383129996453],
+ [120.902256000114, 31.1365330002978],
+ [120.912766000051, 31.1384450003366],
+ [120.926166000161, 31.1436490002013],
+ [120.948426999706, 31.140455000398],
+ [120.979593999863, 31.1338339999392],
+ [120.986912000089, 31.1352790000259],
+ [121.014046000423, 31.1361159999535],
+ [121.018353000291, 31.1403160002832],
+ [121.017814999762, 31.1424669996524],
+ [121.021208999796, 31.1427680000432],
+ [121.022719000182, 31.1446499995978],
+ [121.022251000184, 31.1457570002854],
+ [121.023891000269, 31.1458589995932],
+ [121.024300000245, 31.1432400002259],
+ [121.028596999652, 31.1441800004067],
+ [121.031617999571, 31.1422989999989],
+ [121.031756999686, 31.1393420003331],
+ [121.033597000002, 31.1398129995703],
+ [121.034135999677, 31.138875000381],
+ [121.036253000176, 31.139544999802],
+ [121.040246999999, 31.1474740003249],
+ [121.03702599985, 31.1488829996508],
+ [121.036957000265, 31.151771999778],
+ [121.040724999559, 31.1535170002094],
+ [121.040889999974, 31.1559700000155],
+ [121.044588999683, 31.1565400002209],
+ [121.045725999955, 31.1526449995671],
+ [121.047340999787, 31.152410999568],
+ [121.051274000395, 31.1525790001208],
+ [121.051099999565, 31.1537209997244],
+ [121.052818999697, 31.1546949996745],
+ [121.057984999608, 31.1550319999269],
+ [121.058124999769, 31.1540260002997],
+ [121.05949600004, 31.1540590000229],
+ [121.059564999625, 31.1527469997743],
+ [121.061483999987, 31.1528500000275],
+ [121.061144999642, 31.1504999995753],
+ [121.064539999721, 31.1505999996903],
+ [121.063194999749, 31.1541929999071],
+ [121.066319999968, 31.1554019999024],
+ [121.065980999624, 31.1570149996426],
+ [121.066823999828, 31.1573170000796],
+ [121.067458000287, 31.1554029999485],
+ [121.06843899966, 31.1557400002009],
+ [121.06843899966, 31.1581570001455],
+ [121.072433000383, 31.1603410001371],
+ [121.071459999579, 31.1624239999677],
+ [121.072467000152, 31.1625919996212],
+ [121.072199000384, 31.164504999706],
+ [121.069107999934, 31.1635980001477],
+ [121.068534999591, 31.1651430003492],
+ [121.072771999828, 31.1664199998831],
+ [121.072702000197, 31.167897999693],
+ [121.070874000435, 31.1721980001377],
+ [121.067795999686, 31.1714899998636],
+ [121.067327999687, 31.1723970003214],
+ [121.068169999846, 31.1735070002479],
+ [121.067935999847, 31.174581000313],
+ [121.070835999582, 31.1753230003562],
+ [121.069637000048, 31.1781029999535],
+ [121.066815000312, 31.1813549997335],
+ [121.066633000013, 31.1833459998181],
+ [121.070991999581, 31.1847240004124],
+ [121.070392999837, 31.1862590001528],
+ [121.064887999582, 31.184772999974],
+ [121.064166999607, 31.1867759997127],
+ [121.067092999642, 31.1878360000314],
+ [121.066876000427, 31.1903099999066],
+ [121.065756000039, 31.1906149995826],
+ [121.066024999854, 31.1931699995959],
+ [121.067969999616, 31.1934059996872],
+ [121.067597000401, 31.1950410004418],
+ [121.06552200004, 31.1954830001404],
+ [121.065008999766, 31.1971840003414],
+ [121.06221300033, 31.1968429999046],
+ [121.062021999616, 31.1990649998499],
+ [121.064627000136, 31.1983940003828],
+ [121.058054000092, 31.2265360004361],
+ [121.058228000022, 31.2288340002889],
+ [121.060137999969, 31.2291400000111],
+ [121.060069000384, 31.2326459998131],
+ [121.06258699959, 31.2327829998356],
+ [121.062795000189, 31.2347899997587],
+ [121.059998999854, 31.2348240004274],
+ [121.059149000226, 31.2370030001883],
+ [121.058028999838, 31.2365600004437],
+ [121.057420999679, 31.2371050003955],
+ [121.05666499989, 31.2396889999474],
+ [121.05932200011, 31.2403030003832],
+ [121.058982999766, 31.244080000092],
+ [121.060137999969, 31.2440119996541],
+ [121.060477000313, 31.2450000002499],
+ [121.059590999925, 31.2454429999945],
+ [121.059763999809, 31.2479939998233],
+ [121.057690000393, 31.2482330000529],
+ [121.057073999865, 31.2471090003801],
+ [121.053108000434, 31.2486230000515],
+ [121.054537999829, 31.249104999796],
+ [121.056404999591, 31.2483520001447],
+ [121.057317000279, 31.2548280002121],
+ [121.057333000118, 31.2570150003421],
+ [121.05665700042, 31.2575580002016],
+ [121.057507000048, 31.2578890001773],
+ [121.058072000023, 31.2595549996636],
+ [121.057367999933, 31.2598000001699],
+ [121.058349000206, 31.2685150000672],
+ [121.057690000393, 31.2685659997211],
+ [121.057881000208, 31.2693030004332],
+ [121.074568999959, 31.2717130000549],
+ [121.077538000179, 31.273364999795],
+ [121.0799350001, 31.2775320004015],
+ [121.076747999721, 31.2790840000266],
+ [121.077806999993, 31.2827439997358],
+ [121.080081999685, 31.289420000033],
+ [121.082712999605, 31.2924739996754],
+ [121.082286999745, 31.2935390002247],
+ [121.084172000338, 31.2938959996007],
+ [121.085518000355, 31.2937180003855],
+ ],
+];
+
+var district_boundary_shanghai = [
+ [
+ [121.424155999999, 30.6836369998477],
+ [121.422201999823, 30.6824600004287],
+ [121.422089000007, 30.6843310003754],
+ [121.424155999999, 30.6836369998477],
+ ],
+ [
+ [121.424111999769, 30.6907260003047],
+ [121.420144000246, 30.6896140002859],
+ [121.414232000107, 30.6926499999976],
+ [121.41486499962, 30.6937609999702],
+ [121.417860000139, 30.6936219998555],
+ [121.422028999938, 30.6934259998101],
+ [121.423860999885, 30.6919170003693],
+ [121.424111999769, 30.6907260003047],
+ ],
+ [
+ [121.404688999798, 30.7066469997593],
+ [121.401467999649, 30.7051770003184],
+ [121.402163000222, 30.707119999988],
+ [121.404350000352, 30.7073309998258],
+ [121.404688999798, 30.7066469997593],
+ ],
+ [
+ [120.997691999886, 30.9532170002644],
+ [120.998282000114, 30.9491940000032],
+ [121.005669999971, 30.9507889998125],
+ [121.004429000298, 30.9513090004101],
+ [121.006850999574, 30.953112999965],
+ [121.007232000057, 30.9521060002917],
+ [121.008621000259, 30.9516219995557],
+ [121.01059999979, 30.9518629998776],
+ [121.010947999651, 30.9503029998836],
+ [121.008933000258, 30.948950999589],
+ [121.008656000074, 30.9497470003238],
+ [121.006676999644, 30.9493310000257],
+ [121.006399000314, 30.9469370002424],
+ [121.007858000147, 30.9470059998271],
+ [121.006954999873, 30.9466260002897],
+ [121.007198000288, 30.9457579998319],
+ [121.009420000233, 30.946314000291],
+ [121.01087800002, 30.9424280000522],
+ [121.013274999941, 30.9413539999871],
+ [121.012509999737, 30.9434690003941],
+ [121.014629000328, 30.944198999884],
+ [121.015036000211, 30.9432949995646],
+ [121.025429000148, 30.9465510004284],
+ [121.025150999919, 30.9439740002999],
+ [121.02645199966, 30.9439449998619],
+ [121.026410000421, 30.9423150002371],
+ [121.027382000279, 30.941868000308],
+ [121.027034000419, 30.9381790001608],
+ [121.02423900013, 30.9296509998938],
+ [121.023866000016, 30.924710999613],
+ [121.021417000394, 30.9188760003272],
+ [121.020480000352, 30.9119320002616],
+ [121.020844000051, 30.9111910002645],
+ [121.030176999669, 30.9082559998146],
+ [121.029917000269, 30.9048399996663],
+ [121.034291999676, 30.9042460001529],
+ [121.035837999924, 30.9065920004205],
+ [121.036375000406, 30.9028010000662],
+ [121.037817000354, 30.9015049996561],
+ [121.040682000274, 30.9039819996696],
+ [121.048494999944, 30.905442000448],
+ [121.063385999564, 30.9065399998212],
+ [121.064411000068, 30.9041660000609],
+ [121.065842999555, 30.9041660000609],
+ [121.065782000339, 30.9048229997817],
+ [121.067927000331, 30.9052230002413],
+ [121.067856999801, 30.9069550000733],
+ [121.076254000322, 30.9079789996312],
+ [121.077260999995, 30.9078029996088],
+ [121.07722600018, 30.9062839997069],
+ [121.079169999896, 30.9064270000061],
+ [121.079144999642, 30.9073110003025],
+ [121.084492999852, 30.9058559997546],
+ [121.084553999967, 30.9051699995958],
+ [121.087072000073, 30.9054259997102],
+ [121.087150000072, 30.9066569998207],
+ [121.089753999647, 30.9068299997048],
+ [121.089669000224, 30.9045699998057],
+ [121.092534000144, 30.9052279995726],
+ [121.092272999799, 30.9064589996831],
+ [121.093905000415, 30.9068010001661],
+ [121.094192000161, 30.9086310000207],
+ [121.092733000328, 30.9108919999659],
+ [121.09121300038, 30.9106620001513],
+ [121.09161299994, 30.9123499997527],
+ [121.089216000018, 30.9117210004239],
+ [121.087436999818, 30.9129789999809],
+ [121.085492000056, 30.9130630002573],
+ [121.084508999691, 30.9139980002076],
+ [121.084431999737, 30.9173120001487],
+ [121.086768000443, 30.9182029998686],
+ [121.095805999947, 30.9284650000598],
+ [121.099766000001, 30.9247699996358],
+ [121.100530000159, 30.9221480001302],
+ [121.104550000282, 30.9231010000112],
+ [121.10612199993, 30.9245340004438],
+ [121.106372999814, 30.9237660001009],
+ [121.109342000033, 30.923068000288],
+ [121.110002999939, 30.9236969996169],
+ [121.116861999682, 30.9219869999002],
+ [121.11476099992, 30.9140119999539],
+ [121.115420999779, 30.9134700001404],
+ [121.115132999988, 30.9124119999139],
+ [121.113214999673, 30.912726000005],
+ [121.112816000158, 30.9104100002214],
+ [121.111609000255, 30.9106379999438],
+ [121.108925999735, 30.9056330002628],
+ [121.106259999999, 30.9030580002266],
+ [121.106495000044, 30.9012549998184],
+ [121.10886499962, 30.899455000448],
+ [121.112095000184, 30.9027450001817],
+ [121.113588999833, 30.9035159997636],
+ [121.117651000094, 30.9031459997881],
+ [121.118963000342, 30.9048910002195],
+ [121.125595999556, 30.904633000013],
+ [121.127140999757, 30.901775000416],
+ [121.129086000419, 30.90237400016],
+ [121.129859000093, 30.9038629995778],
+ [121.136708000274, 30.9033910002945],
+ [121.136421999676, 30.9070350001652],
+ [121.135111000372, 30.909444999787],
+ [121.135527999817, 30.9123820003291],
+ [121.133209999942, 30.913901000231],
+ [121.132862000081, 30.9153899996488],
+ [121.134494999844, 30.92165199974],
+ [121.136900000135, 30.9215660002707],
+ [121.138697000266, 30.9201640003684],
+ [121.137447000179, 30.9188770003733],
+ [121.137610999648, 30.9176490004011],
+ [121.138982999965, 30.9175900003783],
+ [121.138445000337, 30.9169850003576],
+ [121.145294999665, 30.9146780000897],
+ [121.14522600008, 30.9133310000257],
+ [121.152118000445, 30.9120450000767],
+ [121.15221300033, 30.9210319999269],
+ [121.153680999678, 30.922368000383],
+ [121.160105000046, 30.9220279999923],
+ [121.162404999991, 30.9190660000959],
+ [121.166763000412, 30.9167850001277],
+ [121.182005000031, 30.9175349996406],
+ [121.183299000349, 30.918724999659],
+ [121.185841999809, 30.9193020001872],
+ [121.19038199963, 30.9194580001866],
+ [121.204963000242, 30.9227399995514],
+ [121.218580999614, 30.9329289999734],
+ [121.22292999962, 30.9289629996427],
+ [121.230086999615, 30.9307460000279],
+ [121.230372000168, 30.9281629996228],
+ [121.232389999699, 30.9283700001754],
+ [121.23376099997, 30.9270539997423],
+ [121.236250999684, 30.9273380002485],
+ [121.238533999744, 30.922105999992],
+ [121.240191999761, 30.9225050004055],
+ [121.241251000034, 30.9210740000651],
+ [121.240226999576, 30.920788000366],
+ [121.241111999919, 30.9192739997953],
+ [121.239281000018, 30.9200460003227],
+ [121.241797000032, 30.9133809996335],
+ [121.241797000032, 30.9109790003806],
+ [121.242221999845, 30.9120939996384],
+ [121.244340000391, 30.911551999825],
+ [121.244340000391, 30.9124950001442],
+ [121.250832000297, 30.9117499999626],
+ [121.251492000156, 30.9101770002684],
+ [121.254546999844, 30.9101760002223],
+ [121.254546999844, 30.9094029996488],
+ [121.257723999763, 30.9102900000835],
+ [121.258123000176, 30.9090319996271],
+ [121.259980000377, 30.9093180002256],
+ [121.260587999637, 30.9084020002522],
+ [121.262531000206, 30.9084580001366],
+ [121.262471000137, 30.9049399997812],
+ [121.261723999863, 30.9049700002653],
+ [121.261758999678, 30.9039120000388],
+ [121.264641000382, 30.9038829996008],
+ [121.266011999754, 30.9023659997911],
+ [121.268563999629, 30.9025959996058],
+ [121.270359999714, 30.8970179995811],
+ [121.271218999757, 30.8970179995811],
+ [121.271193000357, 30.8982180000607],
+ [121.273762000116, 30.8993920002407],
+ [121.274682000274, 30.8993049998259],
+ [121.275219999903, 30.8966460004127],
+ [121.277650999594, 30.8969890000424],
+ [121.277884999593, 30.8987619999664],
+ [121.280827000366, 30.8988169998048],
+ [121.28137400041, 30.8976170002244],
+ [121.283977999985, 30.8982459995533],
+ [121.284289999984, 30.9021359999765],
+ [121.28572200037, 30.902191999861],
+ [121.285723000416, 30.9048239998278],
+ [121.286573000044, 30.9048520002197],
+ [121.286259999999, 30.9088850000427],
+ [121.285236000441, 30.9090840002265],
+ [121.286259999999, 30.9101709999917],
+ [121.285548999587, 30.9101709999917],
+ [121.285634999955, 30.9119730003537],
+ [121.284263999684, 30.9120880002611],
+ [121.285088999957, 30.9163780002445],
+ [121.284402999799, 30.9190660000959],
+ [121.285314000441, 30.9195530000709],
+ [121.29049600019, 30.9206680002281],
+ [121.290582999706, 30.9192929997722],
+ [121.289810000032, 30.9192379999338],
+ [121.290365000444, 30.917112999965],
+ [121.291824000277, 30.917112999965],
+ [121.294029000338, 30.9119039998698],
+ [121.297318000026, 30.910610999598],
+ [121.29776099977, 30.9115159999635],
+ [121.298976000042, 30.9114369999177],
+ [121.299254000272, 30.9142439998607],
+ [121.302030999731, 30.9142670000221],
+ [121.30233500026, 30.9123539999372],
+ [121.303247000049, 30.9115770000785],
+ [121.304106000092, 30.9116059996172],
+ [121.304079999792, 30.9123260004446],
+ [121.306544000106, 30.9123260004446],
+ [121.306432000337, 30.9112739995954],
+ [121.307429999595, 30.9110239997578],
+ [121.306961999597, 30.911937999639],
+ [121.30934799991, 30.9128529995663],
+ [121.310120999585, 30.9112739995954],
+ [121.313365999941, 30.9118839998468],
+ [121.313471000287, 30.9129640001885],
+ [121.315632000117, 30.91321299998],
+ [121.317994000223, 30.91069099969],
+ [121.321422000025, 30.9110780004494],
+ [121.323114999857, 30.9122440002604],
+ [121.323835999832, 30.9110780004494],
+ [121.326022999962, 30.9107169999896],
+ [121.326579000421, 30.9096110002475],
+ [121.328574999836, 30.9099970000615],
+ [121.329521000294, 30.908805999997],
+ [121.330962000196, 30.9098040001545],
+ [121.332090000054, 30.9088340003889],
+ [121.335614999832, 30.9106349998054],
+ [121.340598000298, 30.9110239997578],
+ [121.340076999654, 30.9121870003299],
+ [121.34176099997, 30.9135169996099],
+ [121.340936999743, 30.9144050000907],
+ [121.343011000058, 30.915208000249],
+ [121.346033000023, 30.9134619997715],
+ [121.347248000295, 30.9152810000182],
+ [121.352108999631, 30.9106709996669],
+ [121.353550000432, 30.903265999926],
+ [121.355886000239, 30.8998430003542],
+ [121.356607000213, 30.8950289995887],
+ [121.358681999675, 30.8890140000961],
+ [121.362639999636, 30.8887200000281],
+ [121.365575000086, 30.8859689999694],
+ [121.367155000103, 30.8857489997166],
+ [121.372303000083, 30.8823320004215],
+ [121.37759999974, 30.8809980000577],
+ [121.376888000181, 30.8786410001821],
+ [121.378180999554, 30.8765269998212],
+ [121.378251000084, 30.8710889999574],
+ [121.377261000295, 30.8693699998257],
+ [121.377295000064, 30.8660480004149],
+ [121.379395999826, 30.8655330000479],
+ [121.378866999712, 30.861288000341],
+ [121.379761999617, 30.8582850003525],
+ [121.379162999873, 30.8530750002112],
+ [121.380829000258, 30.845234000149],
+ [121.37446499996, 30.8453019996876],
+ [121.374648000305, 30.8421819996996],
+ [121.376721999721, 30.8391029998036],
+ [121.375871000047, 30.8382170003144],
+ [121.376375999953, 30.8372630003872],
+ [121.377156999996, 30.836918999812],
+ [121.376731000136, 30.8375100000865],
+ [121.377486999925, 30.8379749999464],
+ [121.378138000269, 30.8371980000877],
+ [121.378615999829, 30.8377769998087],
+ [121.379545000402, 30.8372020002722],
+ [121.378883999597, 30.8361169996998],
+ [121.380673000259, 30.8361910004144],
+ [121.380890000373, 30.8351429997497],
+ [121.38298199972, 30.8348669996124],
+ [121.38298199972, 30.8319229996468],
+ [121.387107000188, 30.8319780003845],
+ [121.387437000118, 30.8298860001389],
+ [121.38865200039, 30.8297490001163],
+ [121.392367999983, 30.8300539997923],
+ [121.393149000026, 30.8358489999314],
+ [121.395094999834, 30.8362440001605],
+ [121.398020999869, 30.835297999703],
+ [121.398098999869, 30.8359029997237],
+ [121.399592000371, 30.8358499999775],
+ [121.399009999612, 30.8319390003846],
+ [121.396066999692, 30.8321599997842],
+ [121.396370000175, 30.8294620003711],
+ [121.39713500038, 30.8292149997725],
+ [121.39738700031, 30.8278109997779],
+ [121.398299000099, 30.8281409997074],
+ [121.400164999815, 30.8251399998112],
+ [121.409559999594, 30.823820000093],
+ [121.409351999895, 30.8226900001434],
+ [121.410905999612, 30.8220050000308],
+ [121.410523999983, 30.8178750002311],
+ [121.41468300022, 30.8180969996769],
+ [121.415923999893, 30.8218680000082],
+ [121.421394000333, 30.8207669995974],
+ [121.42927000021, 30.8204389997601],
+ [121.429433999679, 30.8191179999957],
+ [121.430701999698, 30.8204389997601],
+ [121.432437999714, 30.8201930001069],
+ [121.437065999996, 30.8089349998504],
+ [121.437635000155, 30.8082600001989],
+ [121.438657999667, 30.8088719996431],
+ [121.440860999635, 30.8069799996273],
+ [121.442153999907, 30.8076960002703],
+ [121.46056099979, 30.7786509999437],
+ [121.474303000383, 30.7585639999287],
+ [121.421767999594, 30.7324099998217],
+ [121.402387999806, 30.7202019998225],
+ [121.357328000187, 30.6816930001319],
+ [121.349784000331, 30.6791750000263],
+ [121.342108999831, 30.6777900000085],
+ [121.322220999999, 30.6781670003069],
+ [121.286617000274, 30.6806250003435],
+ [121.27025700036, 30.679710999563],
+ [121.268016999585, 30.6955800002169],
+ [121.267209000095, 30.699198999834],
+ [121.266027999593, 30.7003790002907],
+ [121.266634999706, 30.7033289996337],
+ [121.264263000037, 30.7044419996986],
+ [121.263633999809, 30.7084049998909],
+ [121.262280000322, 30.708598999844],
+ [121.261472999979, 30.7117959997856],
+ [121.264051000154, 30.7144540000521],
+ [121.26267000032, 30.7173420001333],
+ [121.265943000169, 30.7191909999647],
+ [121.265708000124, 30.7227719996282],
+ [121.267634999955, 30.725544999802],
+ [121.265942000123, 30.7281650001147],
+ [121.267053000096, 30.7292430003642],
+ [121.265248999642, 30.7292440004103],
+ [121.266670999567, 30.7302069998532],
+ [121.26536100031, 30.7330169999346],
+ [121.267054000142, 30.7350199996733],
+ [121.26586500017, 30.7349439997658],
+ [121.263781000293, 30.7372170002644],
+ [121.262437000367, 30.7357900001085],
+ [121.26133499991, 30.7365300000595],
+ [121.2520129999, 30.7462379998838],
+ [121.249920999654, 30.7473980003175],
+ [121.238716000043, 30.7528200003428],
+ [121.237632000417, 30.7520879998614],
+ [121.236747000074, 30.7526270004358],
+ [121.237293000072, 30.7533610001101],
+ [121.235245000057, 30.7543220003601],
+ [121.234558999898, 30.7538229998316],
+ [121.232900999881, 30.7549379999888],
+ [121.231973000254, 30.754130999646],
+ [121.231132000142, 30.754554000267],
+ [121.232094000438, 30.7560950002841],
+ [121.227598999994, 30.7586779997899],
+ [121.226288999837, 30.7660149999923],
+ [121.224725999705, 30.7702520002297],
+ [121.222520999645, 30.7730960000804],
+ [121.223423999918, 30.7742759996377],
+ [121.221810000131, 30.775240000026],
+ [121.221193999603, 30.7788589996431],
+ [121.220231000161, 30.7792460004026],
+ [121.218997999958, 30.7782440000606],
+ [121.217721999571, 30.7793810003329],
+ [121.213582000209, 30.78721299998],
+ [121.209312000249, 30.7881720001378],
+ [121.201109999727, 30.7881439997458],
+ [121.196622999652, 30.786220000053],
+ [121.194739000005, 30.7829840001116],
+ [121.195893000162, 30.7758589997931],
+ [121.19251700006, 30.7755839997019],
+ [121.18738700001, 30.7810659997961],
+ [121.186518999552, 30.783302000387],
+ [121.18507000018, 30.7811829997956],
+ [121.183351000049, 30.7817629995628],
+ [121.181900999731, 30.7812419998185],
+ [121.181329000333, 30.7788639998737],
+ [121.178975999743, 30.7772380004334],
+ [121.175495000194, 30.7765720002976],
+ [121.170192000261, 30.7742049999608],
+ [121.169081000288, 30.7758300002544],
+ [121.166502000067, 30.776860000089],
+ [121.166302999884, 30.7792699997108],
+ [121.164471999983, 30.7781369996229],
+ [121.158932999958, 30.7774419999484],
+ [121.156232999553, 30.7753830003252],
+ [121.156172000338, 30.7787459998281],
+ [121.15301300035, 30.7797900003083],
+ [121.151302999734, 30.7793560000794],
+ [121.148167999953, 30.7811249998189],
+ [121.13958199971, 30.7816159999784],
+ [121.138878999666, 30.7803279999373],
+ [121.136074999861, 30.7790549996885],
+ [121.134157000445, 30.7797239999627],
+ [121.134157000445, 30.7805500002823],
+ [121.130544000206, 30.7793000001949],
+ [121.118430000045, 30.7811209996345],
+ [121.115323999803, 30.7856079997095],
+ [121.113192000411, 30.786918999912],
+ [121.112643000274, 30.7881700000455],
+ [121.114300000245, 30.7901830002453],
+ [121.120685999759, 30.7902790001758],
+ [121.12200799957, 30.791101000311],
+ [121.121479000356, 30.7951390003646],
+ [121.123578000025, 30.8121729998841],
+ [121.127812000124, 30.8213779998948],
+ [121.132863000127, 30.8271279997574],
+ [121.133097000127, 30.8283270001909],
+ [121.132862000081, 30.8320779996001],
+ [121.131959999854, 30.8320649998999],
+ [121.131681999625, 30.8299630000924],
+ [121.129703000093, 30.8305969996518],
+ [121.129267999818, 30.8331339997343],
+ [121.128357000076, 30.8336900001934],
+ [121.130059000323, 30.8351150002571],
+ [121.127045999873, 30.8380889998076],
+ [121.125422999672, 30.8369769997888],
+ [121.116061999662, 30.8384039999447],
+ [121.11479499969, 30.8382059998071],
+ [121.11443900036, 30.8370939997883],
+ [121.113171000341, 30.8373720000179],
+ [121.115263999734, 30.8398009996165],
+ [121.115672999709, 30.8453629998027],
+ [121.118970999812, 30.8493300001794],
+ [121.11758199961, 30.8499960003152],
+ [121.118103000253, 30.8509229998966],
+ [121.11714800028, 30.8520519998],
+ [121.115473000379, 30.8511830001954],
+ [121.110168000353, 30.8535280004169],
+ [121.10886499962, 30.8546570003203],
+ [121.108578999921, 30.8561059996922],
+ [121.106321000114, 30.8534690003941],
+ [121.100208999746, 30.8513830004252],
+ [121.099331999772, 30.8525409998673],
+ [121.09768300017, 30.8523089999604],
+ [121.095511999879, 30.85381300007],
+ [121.09493000002, 30.8545970002514],
+ [121.095537000132, 30.8559580000617],
+ [121.094009999862, 30.8556969997168],
+ [121.093106999588, 30.8569699999656],
+ [121.09377399977, 30.8576370001475],
+ [121.092993999773, 30.8581860002838],
+ [121.093131999842, 30.8591450004415],
+ [121.075902000277, 30.8508009996664],
+ [121.062445000237, 30.8508469999891],
+ [121.055985000008, 30.847268000418],
+ [121.057125999565, 30.845467000102],
+ [121.055683999617, 30.8448870003348],
+ [121.057508000094, 30.8398770004233],
+ [121.042245000407, 30.8332129997802],
+ [121.044379999937, 30.8273049998259],
+ [121.040604000274, 30.8280400004457],
+ [121.039014999842, 30.8302829995608],
+ [121.035463999764, 30.82936100021],
+ [121.03722600008, 30.8269869995505],
+ [121.035785000178, 30.8265219996906],
+ [121.03470900002, 30.8230179999808],
+ [121.033205999957, 30.8224099998217],
+ [121.033493999748, 30.8215109997329],
+ [121.034595000159, 30.8207299996898],
+ [121.036592999667, 30.8213379998489],
+ [121.036305999922, 30.8236599999091],
+ [121.036827999713, 30.8236840001165],
+ [121.037807999939, 30.8218310001006],
+ [121.039258000257, 30.8221500004223],
+ [121.040473999675, 30.8176600002089],
+ [121.033431999587, 30.8160390000998],
+ [121.033261999841, 30.8166500003973],
+ [121.031333999964, 30.8223329998681],
+ [121.02559999994, 30.8307119995592],
+ [121.010470000091, 30.8361599998842],
+ [121.010002000092, 30.8380180001307],
+ [121.00650399976, 30.8368310002505],
+ [121.000418999737, 30.8300840002764],
+ [120.999054999788, 30.830951999835],
+ [120.999958000062, 30.8290979997729],
+ [120.999082000134, 30.8285470004438],
+ [120.997257999657, 30.8299670002769],
+ [120.996971999958, 30.8316179999708],
+ [120.994134000384, 30.8304869999751],
+ [120.99341300041, 30.829300000095],
+ [120.993934000154, 30.8289530002808],
+ [120.991875999678, 30.8263469997143],
+ [120.990860999636, 30.8266660000359],
+ [120.991556000209, 30.8252179998109],
+ [120.990278999776, 30.8237680003929],
+ [120.98660799956, 30.824985999904],
+ [120.988430999991, 30.8284040001445],
+ [120.984837999774, 30.8309800002269],
+ [120.98813499983, 30.8338460001928],
+ [120.984811000327, 30.8345999998901],
+ [120.985678999886, 30.8370050001807],
+ [120.988538000428, 30.8406619997515],
+ [120.991321000164, 30.8408280002121],
+ [120.991841999908, 30.8428829996508],
+ [120.992770999582, 30.8429419996736],
+ [120.992309999907, 30.8436079998094],
+ [120.99341300041, 30.8463290002832],
+ [120.99554799994, 30.8455759997327],
+ [120.997293000372, 30.8485019997675],
+ [120.999611000248, 30.8483279998374],
+ [121.002092999592, 30.8526719996132],
+ [121.003630000324, 30.8527870004198],
+ [121.00574799997, 30.8553370002024],
+ [121.008959999704, 30.8538879999313],
+ [121.010609000205, 30.8557999999701],
+ [121.006591000175, 30.8582319997071],
+ [121.00841299966, 30.8603769996988],
+ [121.008118000445, 30.8615919999709],
+ [121.009862999977, 30.8611300002494],
+ [121.010990999835, 30.8627229999665],
+ [121.010036999908, 30.8633579995721],
+ [121.011859000293, 30.8650389997501],
+ [121.009566999817, 30.866575000436],
+ [121.012553999967, 30.8694699999406],
+ [121.01336100031, 30.8715549998634],
+ [121.010414000206, 30.8732079996495],
+ [121.013364000448, 30.8755309997559],
+ [121.016035000415, 30.8740420003381],
+ [121.017076999904, 30.8750469999192],
+ [121.015375999703, 30.8761670003069],
+ [121.017458000386, 30.877324999749],
+ [121.014994000073, 30.8788319999969],
+ [121.015531999702, 30.8802600001989],
+ [121.016841999858, 30.8802600001989],
+ [121.017032999673, 30.8809539998273],
+ [121.014177000169, 30.882885999889],
+ [121.013056999781, 30.8848929998122],
+ [121.006694000428, 30.8844059998371],
+ [121.003907999655, 30.8851639997189],
+ [121.00354299991, 30.8868809997584],
+ [121.004688999698, 30.8893260000949],
+ [121.004133000138, 30.8903169999297],
+ [120.989089999804, 30.8919580000617],
+ [120.988571000152, 30.8961489999764],
+ [120.986084999723, 30.8977989996242],
+ [120.988246999599, 30.9016910001396],
+ [120.988480999599, 30.9043889995527],
+ [120.989819000147, 30.9055039997099],
+ [120.994280999968, 30.9055999996403],
+ [120.994358999968, 30.9081539996075],
+ [120.998204000115, 30.9070469998192],
+ [120.999238000134, 30.9092590002027],
+ [121.000148999877, 30.9091460003876],
+ [121.000200999577, 30.9114909997099],
+ [120.997648999702, 30.9121579998919],
+ [120.994622999552, 30.9117400004008],
+ [120.99567000017, 30.9368890000274],
+ [120.996459999729, 30.9399160002233],
+ [120.993126999811, 30.9433389997951],
+ [120.991328999634, 30.9465290003131],
+ [120.992466999952, 30.9468150000123],
+ [120.992380000437, 30.9524990004286],
+ [120.99346500011, 30.9532170002644],
+ [120.997691999886, 30.9532170002644],
+ ],
+ [
+ [122.118232999753, 31.3090060003267],
+ [122.100739999751, 31.2639479999003],
+ [122.093302000287, 31.2574709997868],
+ [122.082815999659, 31.2593560003792],
+ [122.067538000179, 31.2686499999975],
+ [122.012104999746, 31.2842279998224],
+ [121.971567000017, 31.2820589996232],
+ [121.928132999838, 31.2853019998875],
+ [121.896646000213, 31.2933379999488],
+ [121.861805999747, 31.2970799998422],
+ [121.856621999905, 31.2970799998422],
+ [121.852506999898, 31.2949460003577],
+ [121.848695000374, 31.2944889999674],
+ [121.836345000122, 31.2975390003247],
+ [121.829370999572, 31.3017399998012],
+ [121.827808000339, 31.3037909999547],
+ [121.818353999637, 31.3094320001867],
+ [121.808900999881, 31.3182749996915],
+ [121.802343999676, 31.3262030001684],
+ [121.799447000079, 31.3304730001289],
+ [121.798835999782, 31.3341309997459],
+ [121.797464000363, 31.3589840001115],
+ [121.796244999907, 31.3659979998079],
+ [121.788467000052, 31.3795669996174],
+ [121.788467000052, 31.3813970003713],
+ [121.78953499984, 31.3824640001135],
+ [121.792432000337, 31.3830740003649],
+ [121.813169999796, 31.3826180000207],
+ [121.820489000067, 31.3806360003512],
+ [121.827502999764, 31.3775870000401],
+ [121.841377000149, 31.3766710000667],
+ [121.854335999707, 31.3714860001788],
+ [121.871715999894, 31.3663000002448],
+ [121.947569000409, 31.3393680002331],
+ [121.997256000264, 31.3312170002644],
+ [122.036659999859, 31.3256679997784],
+ [122.073541000017, 31.325318999872],
+ [122.112209999892, 31.323028000342],
+ [122.117526000425, 31.3172389995802],
+ [122.118232999753, 31.3090060003267],
+ ],
+ [
+ [122.240983000066, 31.4232610000951],
+ [122.242919000312, 31.4212710000567],
+ [122.241356000179, 31.4202770000836],
+ [122.239454999749, 31.4205849998979],
+ [122.239159999634, 31.419684999763],
+ [122.237389999849, 31.4201620001762],
+ [122.237779999847, 31.4210149999424],
+ [122.238639999936, 31.4225339998443],
+ [122.239845999793, 31.422318999822],
+ [122.240983000066, 31.4232610000951],
+ ],
+ [
+ [121.629762000016, 31.4480330003228],
+ [121.622811999674, 31.4470999995654],
+ [121.612647000359, 31.4487619997665],
+ [121.58992999957, 31.4606969997668],
+ [121.582047000269, 31.4661969997917],
+ [121.573645000416, 31.4746019997825],
+ [121.571882000054, 31.4768849998429],
+ [121.571570000056, 31.4803090003601],
+ [121.572919000212, 31.4814509999637],
+ [121.575407999879, 31.4817609998703],
+ [121.582669000174, 31.481655000378],
+ [121.591071000027, 31.4804089995757],
+ [121.59791700007, 31.4789549999733],
+ [121.60434799986, 31.4765679996136],
+ [121.60943100044, 31.4734549999483],
+ [121.627375999703, 31.4589269999811],
+ [121.630799000174, 31.4550880001112],
+ [121.632044000031, 31.4519750004459],
+ [121.631422000125, 31.449900000085],
+ [121.629762000016, 31.4480330003228],
+ ],
+ [
+ [121.791544999902, 31.3319930000769],
+ [121.79445199996, 31.3123740000601],
+ [121.792383999922, 31.3093770003483],
+ [121.786715000197, 31.310367000137],
+ [121.781143999596, 31.3130669996424],
+ [121.774503000014, 31.3121939998533],
+ [121.766584999998, 31.3136690004241],
+ [121.759872999839, 31.3172920002257],
+ [121.746781000443, 31.3397699998856],
+ [121.740268999615, 31.3456419999783],
+ [121.723554999564, 31.3567780000047],
+ [121.597204999611, 31.4239890003921],
+ [121.568010999608, 31.4381820001992],
+ [121.538971000411, 31.4644589996831],
+ [121.525162000326, 31.4731910003644],
+ [121.512463000167, 31.4793039998797],
+ [121.505719000332, 31.4845420004131],
+ [121.504686000359, 31.4873199999181],
+ [121.504928999874, 31.4917639998088],
+ [121.509053000296, 31.4953339998643],
+ [121.512541000167, 31.4962869997453],
+ [121.545632000017, 31.4918189996472],
+ [121.558089999854, 31.4884639996139],
+ [121.563090000203, 31.485606000017],
+ [121.568566000021, 31.4715569996559],
+ [121.571584999848, 31.4659209996545],
+ [121.578806000097, 31.4583799999371],
+ [121.581341000087, 31.4567929995973],
+ [121.602098999569, 31.4515329998481],
+ [121.669532000302, 31.4297829995858],
+ [121.692839999566, 31.4259869999002],
+ [121.703952000285, 31.4217040002395],
+ [121.719327999787, 31.4143209997144],
+ [121.737786000224, 31.4091569998957],
+ [121.756466000106, 31.3971399997113],
+ [121.765010000211, 31.3927050002357],
+ [121.769768000193, 31.3889509997888],
+ [121.776213999776, 31.3821299999996],
+ [121.786540000221, 31.3690530003957],
+ [121.788043000284, 31.3652979999029],
+ [121.788669000374, 31.3570679998883],
+ [121.791684000017, 31.3476279998324],
+ [121.792153000061, 31.3374289998485],
+ [121.791544999902, 31.3319930000769],
+ ],
+ [
+ [121.472255000368, 31.7580110003075],
+ [121.483228000072, 31.7553160001333],
+ [121.484309999607, 31.7559980001077],
+ [121.485228999719, 31.755292999972],
+ [121.494079000446, 31.7551879996265],
+ [121.508614999882, 31.7456660002857],
+ [121.522305999922, 31.7422249998839],
+ [121.523980999823, 31.7403630003523],
+ [121.53508300008, 31.7375389996252],
+ [121.535786000124, 31.7353549996336],
+ [121.545192999557, 31.7290300002344],
+ [121.547077000104, 31.7294499998177],
+ [121.560746000028, 31.718795000389],
+ [121.574285000253, 31.7126320003666],
+ [121.588019999623, 31.7085930002668],
+ [121.589006000127, 31.7074879996715],
+ [121.595425000264, 31.7052289998185],
+ [121.596668000028, 31.7091069996883],
+ [121.598510999583, 31.7090489997116],
+ [121.607514000171, 31.7063949996296],
+ [121.623079000296, 31.6998629996777],
+ [121.62901299965, 31.6982469997993],
+ [121.638377999845, 31.6995299996099],
+ [121.710861999682, 31.6757860000239],
+ [121.81350900014, 31.6540220000153],
+ [121.970943000019, 31.6190289996886],
+ [121.983971000062, 31.5315540001171],
+ [121.989573000294, 31.5138330003927],
+ [121.991422000125, 31.4950399997962],
+ [121.987416999795, 31.4787129996053],
+ [121.977559000248, 31.4660819998845],
+ [121.963080999888, 31.4586899998437],
+ [121.9139220001, 31.4368119999739],
+ [121.897016000188, 31.4322510000836],
+ [121.886418999837, 31.4309110003425],
+ [121.853629000378, 31.432133000038],
+ [121.829975000446, 31.4360229995618],
+ [121.814898000343, 31.4402290001683],
+ [121.759047999566, 31.4601689996996],
+ [121.678525000429, 31.493072999919],
+ [121.666301999738, 31.4962459996532],
+ [121.621540000371, 31.5038699996009],
+ [121.613452999756, 31.5057760002622],
+ [121.604564999975, 31.5090179995811],
+ [121.543379000441, 31.5331869998802],
+ [121.466610999998, 31.5762720001528],
+ [121.429564000278, 31.5921019999074],
+ [121.410115000007, 31.5928229998816],
+ [121.398835999682, 31.5917479997704],
+ [121.390779999597, 31.5871839997419],
+ [121.367553999617, 31.5549679997734],
+ [121.340978999881, 31.573488000371],
+ [121.284611000397, 31.6181820001992],
+ [121.140710999613, 31.755718999832],
+ [121.137437999764, 31.7570999996653],
+ [121.113839999716, 31.7608410004119],
+ [121.144609000405, 31.7890960002803],
+ [121.176954000027, 31.8222820000144],
+ [121.195806999793, 31.8370510003035],
+ [121.220820000343, 31.848980000027],
+ [121.237589000232, 31.8553529998411],
+ [121.261091000349, 31.8660729995693],
+ [121.276833999689, 31.8709759999425],
+ [121.29736100021, 31.8746250000437],
+ [121.305806000247, 31.8743950002291],
+ [121.31128300011, 31.8733669995874],
+ [121.318469999691, 31.8704029995988],
+ [121.364609999652, 31.8450670003418],
+ [121.380351999845, 31.8352990004486],
+ [121.400762000366, 31.8115960000554],
+ [121.406793999743, 31.8081029999535],
+ [121.411610999748, 31.7994029998486],
+ [121.406204000414, 31.7973389999949],
+ [121.416220000053, 31.7813609997104],
+ [121.426812000174, 31.7710309999807],
+ [121.440739000305, 31.7660929997921],
+ [121.450949999943, 31.7611530004107],
+ [121.459543999656, 31.7589729997042],
+ [121.472255000368, 31.7580110003075],
+ ],
+ [
+ [121.966577000128, 31.1596889997476],
+ [121.961499999825, 31.1596889997476],
+ [121.955468000448, 31.1614360002712],
+ [121.948481000198, 31.1693740003099],
+ [121.943882000354, 31.1785800003668],
+ [121.940705000436, 31.189057999727],
+ [121.938482999591, 31.2006449998669],
+ [121.937693000032, 31.209853000016],
+ [121.93911700005, 31.217632999963],
+ [121.942448999921, 31.2265189996522],
+ [121.946891999766, 31.2309620003961],
+ [121.953089999604, 31.2325499998826],
+ [121.964988999743, 31.2323879996065],
+ [121.976433999629, 31.2301620003761],
+ [121.985407999779, 31.2265710002515],
+ [122.004253000076, 31.2229820002192],
+ [122.006720999674, 31.2193920001408],
+ [122.008292000176, 31.2119889995927],
+ [122.007693000432, 31.1940380000537],
+ [121.995278999926, 31.1671189997421],
+ [121.99146500031, 31.1628570001505],
+ [121.971654999579, 31.1609569997658],
+ [121.966577000128, 31.1596889997476],
+ ],
+ [
+ [121.914676999844, 31.196523999583],
+ [121.909756000439, 31.196047000069],
+ [121.904679000136, 31.1974789995562],
+ [121.897536999933, 31.2036689999244],
+ [121.885160000234, 31.2172039999647],
+ [121.881037999904, 31.2227209998743],
+ [121.878417000444, 31.2278000002698],
+ [121.876751000059, 31.2385139997214],
+ [121.878495999591, 31.243037999704],
+ [121.885793999793, 31.2447830001354],
+ [121.893257999557, 31.244304999676],
+ [121.919442000148, 31.2360480002151],
+ [121.922619000067, 31.2319189995623],
+ [121.92340799958, 31.2262049995611],
+ [121.92134299968, 31.2076330001629],
+ [121.918331000176, 31.1990619997115],
+ [121.914676999844, 31.196523999583],
+ ],
+ [
+ [121.879921999701, 31.1328820001042],
+ [121.885352000095, 31.1239560003692],
+ [121.942666000036, 31.0681269996613],
+ [121.958513999721, 31.0495029996637],
+ [121.97335599978, 31.0182960003602],
+ [121.986696999867, 30.9706090001053],
+ [121.991982999916, 30.9376429997247],
+ [121.994239999676, 30.90216100023],
+ [121.992738999705, 30.8771220002802],
+ [121.989717999786, 30.8652939998183],
+ [121.981158999888, 30.852963999589],
+ [121.950590000328, 30.8281799997073],
+ [121.950208999845, 30.8237779999548],
+ [121.951346000118, 30.8194989995792],
+ [121.965550999579, 30.7915450001017],
+ [121.939582999956, 30.7795099999865],
+ [121.920526999821, 30.8090299997348],
+ [121.911214000226, 30.8153220003101],
+ [121.900392000291, 30.8165830000055],
+ [121.789478999956, 30.8191430002493],
+ [121.765014000396, 30.8526599999591],
+ [121.763806000447, 30.8654919999559],
+ [121.76727000011, 30.8776480002551],
+ [121.768147000084, 30.8779230003462],
+ [121.768798999574, 30.8828170003044],
+ [121.772358000022, 30.8832230001414],
+ [121.771688999748, 30.8886399999361],
+ [121.774486000129, 30.896802000412],
+ [121.77341800034, 30.8970969996269],
+ [121.774373000314, 30.8977570003853],
+ [121.774668000428, 30.9016849998629],
+ [121.773893999808, 30.9029699997657],
+ [121.774563000082, 30.9031510000187],
+ [121.774085999669, 30.907520000048],
+ [121.774632999713, 30.9123289996837],
+ [121.775917999616, 30.9140180002306],
+ [121.77679499959, 30.9197710002315],
+ [121.775197999688, 30.924688000351],
+ [121.773408999925, 30.9247959999355],
+ [121.773460999626, 30.9255499996328],
+ [121.775083999827, 30.925094000188],
+ [121.774668000428, 30.926270999607],
+ [121.773712000409, 30.9263329997682],
+ [121.774441999898, 30.9268500002274],
+ [121.77332999988, 30.9289160001733],
+ [121.77324400041, 30.9312960002103],
+ [121.774554999713, 30.9315939995635],
+ [121.774408000129, 30.9323840000216],
+ [121.773166000411, 30.9319689997696],
+ [121.773478000409, 30.9332230000415],
+ [121.772349999653, 30.9337219996706],
+ [121.769041999988, 30.9337409996475],
+ [121.768694000128, 30.9361150003071],
+ [121.766914999927, 30.9361150003071],
+ [121.765429999795, 30.9374580001866],
+ [121.765343000279, 30.9387359997666],
+ [121.764293000422, 30.9387579998818],
+ [121.763650000447, 30.9405139999212],
+ [121.762087000315, 30.9387159997436],
+ [121.759499999725, 30.9390269996964],
+ [121.759933999954, 30.9406980003125],
+ [121.757130000149, 30.9405980001976],
+ [121.757338999895, 30.9423079999143],
+ [121.758387999706, 30.9423289999834],
+ [121.760202999769, 30.9439399996313],
+ [121.756574999736, 30.9467889997126],
+ [121.75667799999, 30.9497790000009],
+ [121.754941999973, 30.9513189999719],
+ [121.747631000071, 30.9548930002118],
+ [121.744878999966, 30.9552200000031],
+ [121.743506999648, 30.9540560002843],
+ [121.739383000125, 30.9587489999664],
+ [121.738584000152, 30.9585289997136],
+ [121.737151999765, 30.9596839999167],
+ [121.735631999817, 30.9588900001734],
+ [121.732506999598, 30.9608689997046],
+ [121.733565999871, 30.9628049999508],
+ [121.729606999863, 30.9666320001667],
+ [121.729034000419, 30.9684090002752],
+ [121.716958000212, 30.9773139999412],
+ [121.70117399988, 30.9871640000187],
+ [121.688672999859, 30.9915380002785],
+ [121.683785000178, 30.992354000137],
+ [121.679306999618, 30.9920220001152],
+ [121.67027799963, 30.9940320001767],
+ [121.67022599993, 30.9931669998572],
+ [121.668897999843, 30.9931679999033],
+ [121.669080000142, 30.9920739998153],
+ [121.668211999684, 30.9921240003224],
+ [121.663255000418, 30.994258999853],
+ [121.659549000386, 30.994643999621],
+ [121.659418999787, 30.993671999763],
+ [121.658854999858, 30.9949720003576],
+ [121.650297000007, 30.9955300000095],
+ [121.627955000323, 30.9953370001026],
+ [121.627459999979, 30.9947029996438],
+ [121.625342000333, 30.9955839998018],
+ [121.616966999927, 30.9948959995508],
+ [121.613530999756, 30.9980100001615],
+ [121.610526999721, 31.0035700002554],
+ [121.608304999776, 31.0037650002546],
+ [121.607871999593, 31.00294800035],
+ [121.59139999991, 31.0043730004137],
+ [121.590496999637, 31.0030230002113],
+ [121.580117000299, 31.0031430003492],
+ [121.578797999728, 31.002970999612],
+ [121.578746000028, 31.0018150002621],
+ [121.573295999611, 31.0011280000572],
+ [121.572549000236, 31.0017879999163],
+ [121.566266000076, 31.0006630001973],
+ [121.566232000307, 31.0014850003325],
+ [121.563750000063, 31.0031859996342],
+ [121.566500000075, 31.0046079995596],
+ [121.566040000446, 31.0068690004041],
+ [121.567254999818, 31.007942000423],
+ [121.565519999848, 31.0129039999197],
+ [121.563966000131, 31.0123690004291],
+ [121.563314999788, 31.0133689997796],
+ [121.561831999747, 31.0135429997097],
+ [121.562004999631, 31.0127879999663],
+ [121.561284999703, 31.0127879999663],
+ [121.561024000257, 31.0138030000085],
+ [121.565614999732, 31.0147499996128],
+ [121.56685700035, 31.0163169999296],
+ [121.566804999751, 31.0187250003585],
+ [121.568592000321, 31.0206900001434],
+ [121.570466999552, 31.020938999935],
+ [121.570562000336, 31.0232569998108],
+ [121.569494999695, 31.0262039999147],
+ [121.567541999564, 31.0282360000914],
+ [121.568304999676, 31.0286830000205],
+ [121.564174999876, 31.0275790003706],
+ [121.563497000086, 31.0269069999582],
+ [121.564843000104, 31.0266889997976],
+ [121.563246000203, 31.0259580002615],
+ [121.561996000115, 31.0234279996026],
+ [121.5600779998, 31.0234760000174],
+ [121.559435999872, 31.0258329998931],
+ [121.557396000225, 31.0250020002422],
+ [121.558134000084, 31.0268209995895],
+ [121.556041999838, 31.0264090003751],
+ [121.555512999725, 31.0248050001507],
+ [121.554775999913, 31.0248939997583],
+ [121.554471000237, 31.0225359998366],
+ [121.552240999922, 31.0225319996521],
+ [121.552275999738, 31.0210149998424],
+ [121.549897999793, 31.0208820000043],
+ [121.547927999777, 31.0237449998319],
+ [121.548552999821, 31.0255330004476],
+ [121.551530000409, 31.0251859997342],
+ [121.554167999753, 31.0268029996587],
+ [121.554315000237, 31.028768000343],
+ [121.553255999964, 31.0284229997217],
+ [121.552952000335, 31.0290279997424],
+ [121.554124000422, 31.0296319997171],
+ [121.553725000009, 31.0314459997331],
+ [121.556069000184, 31.032487000075],
+ [121.555278999726, 31.0325549996136],
+ [121.55522599998, 31.0436670003319],
+ [121.557899000039, 31.0459040000696],
+ [121.556935999697, 31.0473090001103],
+ [121.55569600007, 31.0459270002309],
+ [121.554887999681, 31.0478879998314],
+ [121.55542600021, 31.0484139998063],
+ [121.552787999966, 31.0502410004219],
+ [121.551884999693, 31.0498939997084],
+ [121.550497000436, 31.0530789999959],
+ [121.548449000421, 31.0515489995867],
+ [121.546287999691, 31.0516459995633],
+ [121.545289000387, 31.0501600002838],
+ [121.543535999587, 31.0507939998433],
+ [121.541609999802, 31.0492840003564],
+ [121.540100000315, 31.0497480001701],
+ [121.538953999627, 31.0477259995553],
+ [121.538414999952, 31.0479459998081],
+ [121.537192000211, 31.048622000405],
+ [121.538034000369, 31.0513090002103],
+ [121.536514000421, 31.0547529998511],
+ [121.539013999696, 31.0562460003527],
+ [121.539039999996, 31.0579259995853],
+ [121.539499999625, 31.0574209996794],
+ [121.539882000154, 31.0581750002761],
+ [121.542850000327, 31.0590649999498],
+ [121.542590000029, 31.0598809998083],
+ [121.544126999861, 31.0591409998573],
+ [121.544420999929, 31.0601060002917],
+ [121.542936999843, 31.0638860001388],
+ [121.544733999974, 31.0646830000205],
+ [121.544292000276, 31.0658699999006],
+ [121.546843000104, 31.0660409996925],
+ [121.548015000192, 31.0682479998454],
+ [121.549515000117, 31.0680329998231],
+ [121.552509999737, 31.0696170000246],
+ [121.550756999836, 31.0705190002517],
+ [121.549047000119, 31.0692179996111],
+ [121.548803999705, 31.070067000092],
+ [121.549794000393, 31.0707079999743],
+ [121.548535999936, 31.0717500003623],
+ [121.55135599958, 31.0739290001233],
+ [121.554802000212, 31.0744269997063],
+ [121.55329099978, 31.0756100003013],
+ [121.556320000068, 31.0763969997218],
+ [121.55745700034, 31.0759830004152],
+ [121.558454999599, 31.0765640002285],
+ [121.558395000429, 31.0773739998103],
+ [121.562030999931, 31.0782450004065],
+ [121.561857000001, 31.0789699996658],
+ [121.562855000158, 31.0791790003107],
+ [121.563420000133, 31.0784669998522],
+ [121.56690900005, 31.0798909998698],
+ [121.565658999963, 31.081432999933],
+ [121.56719499975, 31.0817520002547],
+ [121.567690000094, 31.0810250000038],
+ [121.571066000196, 31.0823330000679],
+ [121.57106500015, 31.0834369997178],
+ [121.569877000223, 31.0837570000855],
+ [121.566969000119, 31.0823609995605],
+ [121.565546000148, 31.0838740000851],
+ [121.559357999872, 31.0847429996898],
+ [121.556832000297, 31.0859719997081],
+ [121.552796000335, 31.0849439999657],
+ [121.552171000292, 31.0833049999259],
+ [121.550280000322, 31.0833930003867],
+ [121.549307999565, 31.0825360004361],
+ [121.547519999848, 31.0849239999427],
+ [121.546304999576, 31.0850640001036],
+ [121.544282999861, 31.0891099996268],
+ [121.547285999849, 31.0903789996912],
+ [121.54677399962, 31.0908479997354],
+ [121.547848999732, 31.0912250000338],
+ [121.547355000333, 31.0923539999372],
+ [121.551520999994, 31.0931060004416],
+ [121.553446999779, 31.0943749996066],
+ [121.554852999866, 31.094185999884],
+ [121.556963000043, 31.0950500001574],
+ [121.557109999627, 31.0958219997855],
+ [121.557621999855, 31.0941120000688],
+ [121.558880000312, 31.094024999654],
+ [121.563045999973, 31.0958809998083],
+ [121.562604000274, 31.0988229996817],
+ [121.561294000118, 31.0986040003744],
+ [121.560780999843, 31.1009580001117],
+ [121.558724000312, 31.1003340001141],
+ [121.559089000057, 31.1012019996726],
+ [121.55783899997, 31.1034960002403],
+ [121.559418999987, 31.1041069996384],
+ [121.556900999881, 31.1075019997176],
+ [121.555902999724, 31.1076629999475],
+ [121.557162000226, 31.1084609998753],
+ [121.553630000124, 31.1111780001646],
+ [121.553282000264, 31.1128370002274],
+ [121.555165999911, 31.1130989997191],
+ [121.55562600044, 31.1141230001764],
+ [121.553932999708, 31.1156529996862],
+ [121.552458000037, 31.1153130001949],
+ [121.551035000065, 31.1171040000496],
+ [121.549081999934, 31.1149010000811],
+ [121.548058000376, 31.1161160003532],
+ [121.544951000089, 31.115630999571],
+ [121.546166000361, 31.1138340003389],
+ [121.543422999772, 31.1118660004157],
+ [121.541505000356, 31.1120859997691],
+ [121.541192000311, 31.1136400003858],
+ [121.539951999785, 31.1136629996478],
+ [121.537963999839, 31.1183509999987],
+ [121.535238000034, 31.117817999701],
+ [121.534953000381, 31.1164569998907],
+ [121.533589999579, 31.1161670000071],
+ [121.533251000134, 31.1179159997237],
+ [121.532644000021, 31.1177700001854],
+ [121.532375000206, 31.1189359999964],
+ [121.531254999818, 31.1186189997671],
+ [121.531047000119, 31.1201490001762],
+ [121.527938999785, 31.1193730003637],
+ [121.527106000042, 31.1205879997365],
+ [121.519598000048, 31.1188630002273],
+ [121.519944999862, 31.1178690002542],
+ [121.518530000259, 31.1173840003714],
+ [121.517071999573, 31.1184490000214],
+ [121.510146000338, 31.1173990001638],
+ [121.508417999791, 31.1215500000325],
+ [121.50696100005, 31.1232999997952],
+ [121.505554999963, 31.1229000002349],
+ [121.505354999734, 31.1235559999095],
+ [121.504921000404, 31.1226270002359],
+ [121.501093000142, 31.1220970000766],
+ [121.501310000256, 31.1214049996411],
+ [121.49945200001, 31.1204050002906],
+ [121.500892999912, 31.1175809995635],
+ [121.49954799994, 31.1168700000505],
+ [121.499052999596, 31.1177819998395],
+ [121.497160000434, 31.1167439996359],
+ [121.49470399959, 31.1232090000954],
+ [121.494114000261, 31.1235739998403],
+ [121.488358000122, 31.1207679999433],
+ [121.485814999763, 31.1263229998066],
+ [121.484339000045, 31.1268899998736],
+ [121.481492000056, 31.1265510004284],
+ [121.481230999711, 31.1239680000232],
+ [121.480484000336, 31.1233140004408],
+ [121.479269000064, 31.1236040003244],
+ [121.479597999948, 31.1226290003282],
+ [121.478982000319, 31.1221020003071],
+ [121.477428999749, 31.1221099997767],
+ [121.477577000278, 31.1207380003585],
+ [121.47676100042, 31.1200500001075],
+ [121.475076000057, 31.1192170003643],
+ [121.474484999783, 31.1198180002006],
+ [121.472948999996, 31.1193429998796],
+ [121.473582999556, 31.1185419998135],
+ [121.473260999995, 31.1171270002109],
+ [121.475127999757, 31.1157509997089],
+ [121.476873000189, 31.1127249995591],
+ [121.474824000128, 31.1120030004382],
+ [121.474033999669, 31.1133489995568],
+ [121.472819000297, 31.1128669998122],
+ [121.473523000386, 31.1114940003479],
+ [121.472593999813, 31.1113780003944],
+ [121.472514999767, 31.1132929996722],
+ [121.470014999593, 31.1164389999599],
+ [121.469468000448, 31.1149240002425],
+ [121.466907000158, 31.1139579997619],
+ [121.468443999991, 31.1131009998114],
+ [121.467036999858, 31.1121920001607],
+ [121.460664000044, 31.1140769998537],
+ [121.464770999682, 31.1207180003355],
+ [121.465153000211, 31.1268469996893],
+ [121.464198000238, 31.1298479995855],
+ [121.45787800017, 31.1364239997678],
+ [121.452894999705, 31.1441800004067],
+ [121.452893999658, 31.1483939995834],
+ [121.454232000207, 31.1505019996676],
+ [121.461194000203, 31.1570799999421],
+ [121.464770999682, 31.1622190004066],
+ [121.463624999894, 31.1690529998961],
+ [121.460360999561, 31.1773520003945],
+ [121.460360999561, 31.1799709997619],
+ [121.461706999578, 31.1830349998654],
+ [121.464198000238, 31.1860690003841],
+ [121.469432999733, 31.1890710003265],
+ [121.488783999982, 31.1941790002607],
+ [121.491525999625, 31.1958360002313],
+ [121.49689099972, 31.2017779999548],
+ [121.50485199992, 31.2141630000225],
+ [121.505449999618, 31.2187949995896],
+ [121.502313999791, 31.2251810000032],
+ [121.491301000041, 31.2349790003806],
+ [121.489034999865, 31.2381419996536],
+ [121.489034999865, 31.2421629998227],
+ [121.490380999883, 31.2442069996534],
+ [121.498453999852, 31.2478300003543],
+ [121.52322600008, 31.2493440000256],
+ [121.535707000078, 31.2531419998035],
+ [121.554826999566, 31.2663730002138],
+ [121.561727000301, 31.2739699998157],
+ [121.56427800013, 31.2778649995701],
+ [121.565293000172, 31.2817269996014],
+ [121.564910999643, 31.2874110000177],
+ [121.558273000199, 31.3019060002617],
+ [121.55750900004, 31.3054809996485],
+ [121.55763899974, 31.3232950000643],
+ [121.556233999699, 31.3299369996928],
+ [121.554315000237, 31.3333850004175],
+ [121.551511999579, 31.3360680000382],
+ [121.545123999973, 31.3398980003925],
+ [121.52113499988, 31.3488450001967],
+ [121.510518999552, 31.3540130001999],
+ [121.504008999716, 31.3592499997877],
+ [121.499407999779, 31.3669119996891],
+ [121.499407999779, 31.375723999563],
+ [121.507966999677, 31.3878539995625],
+ [121.516861999782, 31.3968069996434],
+ [121.533699000109, 31.39056100029],
+ [121.589498000332, 31.3785630000825],
+ [121.594731999782, 31.3767520002047],
+ [121.718137999769, 31.3055120001787],
+ [121.724720000228, 31.3002809999682],
+ [121.739366000241, 31.2851950003491],
+ [121.805531000056, 31.1989999995504],
+ [121.849194000003, 31.1575380003785],
+ [121.879921999701, 31.1328820001042],
+ ],
+ [
+ [121.487507000448, 31.012147000084],
+ [121.49178699997, 31.0001049996461],
+ [121.494460000029, 31.000355000383],
+ [121.494408000329, 31.0015620002861],
+ [121.500355000283, 31.005704999786],
+ [121.510188999623, 31.0080570003303],
+ [121.511143999596, 31.009654000232],
+ [121.512653999982, 31.009817999701],
+ [121.512854000212, 31.0087619995667],
+ [121.514971999858, 31.0084889995677],
+ [121.516830000105, 31.0054220002252],
+ [121.517906000262, 31.0051720003876],
+ [121.517774999617, 31.0044080002291],
+ [121.515744000385, 31.004763999559],
+ [121.515978000385, 31.0015549999633],
+ [121.518565000075, 31.0020169996848],
+ [121.520267000322, 31.0013660002408],
+ [121.524293999868, 30.9981539996074],
+ [121.526671999813, 30.9982119995842],
+ [121.527661999602, 30.9970530000959],
+ [121.53021300033, 30.9980959996307],
+ [121.530708999821, 30.9971389995652],
+ [121.533485000133, 30.9969350000503],
+ [121.533955000223, 30.9953990002637],
+ [121.539031999627, 30.9964700001904],
+ [121.538823999928, 30.9955989995942],
+ [121.540419999783, 30.99525199978],
+ [121.540742000243, 30.9962960002603],
+ [121.540854000012, 30.9952220001952],
+ [121.541870000101, 30.995321000264],
+ [121.544100000415, 30.9931469998342],
+ [121.545289000387, 30.9905939999132],
+ [121.547146999734, 30.9902450000068],
+ [121.548544000305, 30.9911450001417],
+ [121.54923899998, 30.9947989995742],
+ [121.548222999892, 30.9954659997562],
+ [121.54830900026, 30.9969459996582],
+ [121.548952000235, 30.9971190004416],
+ [121.549584999748, 30.9958149996626],
+ [121.551990000039, 30.9956690001243],
+ [121.551676999994, 30.9974379998638],
+ [121.559279999872, 30.9980749995617],
+ [121.566266000076, 31.0006630001973],
+ [121.572549000236, 31.0017879999163],
+ [121.573295999611, 31.0011280000572],
+ [121.578746000028, 31.0018150002621],
+ [121.578797999728, 31.002970999612],
+ [121.580117000299, 31.0031430003492],
+ [121.590496999637, 31.0030230002113],
+ [121.59139999991, 31.0043730004137],
+ [121.607871999593, 31.00294800035],
+ [121.608304999776, 31.0037650002546],
+ [121.610526999721, 31.0035700002554],
+ [121.613530999756, 30.9980100001615],
+ [121.616966999927, 30.9948959995508],
+ [121.625342000333, 30.9955839998018],
+ [121.627459999979, 30.9947029996438],
+ [121.627955000323, 30.9953370001026],
+ [121.650297000007, 30.9955300000095],
+ [121.658854999858, 30.9949720003576],
+ [121.659418999787, 30.993671999763],
+ [121.659549000386, 30.994643999621],
+ [121.663255000418, 30.994258999853],
+ [121.668211999684, 30.9921240003224],
+ [121.669080000142, 30.9920739998153],
+ [121.668897999843, 30.9931679999033],
+ [121.67022599993, 30.9931669998572],
+ [121.67027799963, 30.9940320001767],
+ [121.679306999618, 30.9920220001152],
+ [121.683785000178, 30.992354000137],
+ [121.688672999859, 30.9915380002785],
+ [121.70117399988, 30.9871640000187],
+ [121.716958000212, 30.9773139999412],
+ [121.729034000419, 30.9684090002752],
+ [121.729606999863, 30.9666320001667],
+ [121.733565999871, 30.9628049999508],
+ [121.732506999598, 30.9608689997046],
+ [121.735631999817, 30.9588900001734],
+ [121.737151999765, 30.9596839999167],
+ [121.738584000152, 30.9585289997136],
+ [121.739383000125, 30.9587489999664],
+ [121.743506999648, 30.9540560002843],
+ [121.744878999966, 30.9552200000031],
+ [121.747631000071, 30.9548930002118],
+ [121.754941999973, 30.9513189999719],
+ [121.75667799999, 30.9497790000009],
+ [121.756574999736, 30.9467889997126],
+ [121.760202999769, 30.9439399996313],
+ [121.758387999706, 30.9423289999834],
+ [121.757338999895, 30.9423079999143],
+ [121.757130000149, 30.9405980001976],
+ [121.759933999954, 30.9406980003125],
+ [121.759499999725, 30.9390269996964],
+ [121.762087000315, 30.9387159997436],
+ [121.763650000447, 30.9405139999212],
+ [121.764293000422, 30.9387579998818],
+ [121.765343000279, 30.9387359997666],
+ [121.765429999795, 30.9374580001866],
+ [121.766914999927, 30.9361150003071],
+ [121.768694000128, 30.9361150003071],
+ [121.769041999988, 30.9337409996475],
+ [121.772349999653, 30.9337219996706],
+ [121.773478000409, 30.9332230000415],
+ [121.773166000411, 30.9319689997696],
+ [121.774408000129, 30.9323840000216],
+ [121.774554999713, 30.9315939995635],
+ [121.77324400041, 30.9312960002103],
+ [121.77332999988, 30.9289160001733],
+ [121.774441999898, 30.9268500002274],
+ [121.773712000409, 30.9263329997682],
+ [121.774668000428, 30.926270999607],
+ [121.775083999827, 30.925094000188],
+ [121.773460999626, 30.9255499996328],
+ [121.773408999925, 30.9247959999355],
+ [121.775197999688, 30.924688000351],
+ [121.77679499959, 30.9197710002315],
+ [121.775917999616, 30.9140180002306],
+ [121.774632999713, 30.9123289996837],
+ [121.774085999669, 30.907520000048],
+ [121.774563000082, 30.9031510000187],
+ [121.773893999808, 30.9029699997657],
+ [121.774668000428, 30.9016849998629],
+ [121.774373000314, 30.8977570003853],
+ [121.77341800034, 30.8970969996269],
+ [121.774486000129, 30.896802000412],
+ [121.771688999748, 30.8886399999361],
+ [121.772358000022, 30.8832230001414],
+ [121.768798999574, 30.8828170003044],
+ [121.768147000084, 30.8779230003462],
+ [121.76727000011, 30.8776480002551],
+ [121.763806000447, 30.8654919999559],
+ [121.765014000396, 30.8526599999591],
+ [121.789478999956, 30.8191430002493],
+ [121.676918000066, 30.8207269995514],
+ [121.644211999984, 30.8185879998364],
+ [121.597162000326, 30.8075220003401],
+ [121.54860500042, 30.7918050004005],
+ [121.512871000097, 30.7777159999935],
+ [121.474303000383, 30.7585639999287],
+ [121.46056099979, 30.7786509999437],
+ [121.442153999907, 30.8076960002703],
+ [121.440860999635, 30.8069799996273],
+ [121.438657999667, 30.8088719996431],
+ [121.437635000155, 30.8082600001989],
+ [121.437065999996, 30.8089349998504],
+ [121.432437999714, 30.8201930001069],
+ [121.430701999698, 30.8204389997601],
+ [121.429433999679, 30.8191179999957],
+ [121.42927000021, 30.8204389997601],
+ [121.421394000333, 30.8207669995974],
+ [121.415923999893, 30.8218680000082],
+ [121.41468300022, 30.8180969996769],
+ [121.410523999983, 30.8178750002311],
+ [121.410905999612, 30.8220050000308],
+ [121.409351999895, 30.8226900001434],
+ [121.409559999594, 30.823820000093],
+ [121.400164999815, 30.8251399998112],
+ [121.398299000099, 30.8281409997074],
+ [121.39738700031, 30.8278109997779],
+ [121.39713500038, 30.8292149997725],
+ [121.396370000175, 30.8294620003711],
+ [121.396066999692, 30.8321599997842],
+ [121.399009999612, 30.8319390003846],
+ [121.399592000371, 30.8358499999775],
+ [121.398098999869, 30.8359029997237],
+ [121.398020999869, 30.835297999703],
+ [121.395094999834, 30.8362440001605],
+ [121.393149000026, 30.8358489999314],
+ [121.392367999983, 30.8300539997923],
+ [121.38865200039, 30.8297490001163],
+ [121.387437000118, 30.8298860001389],
+ [121.387107000188, 30.8319780003845],
+ [121.38298199972, 30.8319229996468],
+ [121.38298199972, 30.8348669996124],
+ [121.380890000373, 30.8351429997497],
+ [121.380673000259, 30.8361910004144],
+ [121.378883999597, 30.8361169996998],
+ [121.379545000402, 30.8372020002722],
+ [121.378615999829, 30.8377769998087],
+ [121.378138000269, 30.8371980000877],
+ [121.377486999925, 30.8379749999464],
+ [121.376731000136, 30.8375100000865],
+ [121.377156999996, 30.836918999812],
+ [121.376375999953, 30.8372630003872],
+ [121.375871000047, 30.8382170003144],
+ [121.376721999721, 30.8391029998036],
+ [121.374648000305, 30.8421819996996],
+ [121.37446499996, 30.8453019996876],
+ [121.380829000258, 30.845234000149],
+ [121.379162999873, 30.8530750002112],
+ [121.379761999617, 30.8582850003525],
+ [121.378866999712, 30.861288000341],
+ [121.379395999826, 30.8655330000479],
+ [121.377295000064, 30.8660480004149],
+ [121.377261000295, 30.8693699998257],
+ [121.378251000084, 30.8710889999574],
+ [121.378180999554, 30.8765269998212],
+ [121.376888000181, 30.8786410001821],
+ [121.37759999974, 30.8809980000577],
+ [121.372303000083, 30.8823320004215],
+ [121.367155000103, 30.8857489997166],
+ [121.365575000086, 30.8859689999694],
+ [121.362639999636, 30.8887200000281],
+ [121.358681999675, 30.8890140000961],
+ [121.356607000213, 30.8950289995887],
+ [121.355886000239, 30.8998430003542],
+ [121.353550000432, 30.903265999926],
+ [121.352108999631, 30.9106709996669],
+ [121.34696099965, 30.9157100000165],
+ [121.350504000259, 30.9183959997756],
+ [121.351476000117, 30.9217909998548],
+ [121.350799000374, 30.9234309999408],
+ [121.347595000109, 30.9258580003465],
+ [121.347628999878, 30.9302580000067],
+ [121.346588000436, 30.9326820002742],
+ [121.349271000057, 30.9336889999474],
+ [121.349349000056, 30.9328319999968],
+ [121.350538000029, 30.9331290002032],
+ [121.351101999957, 30.9341000000151],
+ [121.3501300001, 30.9355559997097],
+ [121.351058999773, 30.9360770003534],
+ [121.352777999905, 30.9356660002857],
+ [121.354757000335, 30.9371230000265],
+ [121.358073000369, 30.9367869998202],
+ [121.356624000098, 30.946933000058],
+ [121.359863000177, 30.9474929998021],
+ [121.360868999805, 30.9492459997032],
+ [121.360314000291, 30.9502890001373],
+ [121.357892000116, 30.9509229996967],
+ [121.35826500023, 30.9615549998634],
+ [121.356397999568, 30.9675920003706],
+ [121.356511000282, 30.9748329997432],
+ [121.354123999923, 30.9798679999083],
+ [121.386029999985, 30.9893839998717],
+ [121.404698000213, 30.9921939999532],
+ [121.419353999787, 30.9964910002595],
+ [121.426820999689, 31.0011500001724],
+ [121.43223900043, 31.0060470002689],
+ [121.436216000368, 31.0077729998241],
+ [121.443725999555, 31.009461000325],
+ [121.455403000248, 31.0094230003712],
+ [121.461062999558, 31.0107890004121],
+ [121.466924000043, 31.0140000001],
+ [121.471864000323, 31.0154060001868],
+ [121.484702999744, 31.0170559998346],
+ [121.488444999637, 31.0148650004195],
+ [121.487507000448, 31.012147000084],
+ ],
+ [
+ [121.301465999756, 31.4957389996551],
+ [121.301249999688, 31.4946259995903],
+ [121.302022000215, 31.4951959997956],
+ [121.304644999767, 31.4943719995682],
+ [121.305746000178, 31.49161300004],
+ [121.304113999562, 31.4905299995599],
+ [121.305685000063, 31.4891940000031],
+ [121.307471999733, 31.484248000345],
+ [121.308817999751, 31.4824759995678],
+ [121.31178699997, 31.4830560002343],
+ [121.312881000058, 31.4799160002233],
+ [121.312367999783, 31.4784940002979],
+ [121.313566000171, 31.4787650002046],
+ [121.314164999915, 31.4777520002547],
+ [121.314130000099, 31.4765499996828],
+ [121.309668000278, 31.4741149998075],
+ [121.31183899967, 31.4729120000888],
+ [121.31170899997, 31.4718860004386],
+ [121.313080000242, 31.4705170002594],
+ [121.316022000115, 31.4709230000964],
+ [121.31645700039, 31.4699910002845],
+ [121.315510999933, 31.4685890003821],
+ [121.312490000014, 31.467931999762],
+ [121.313400999756, 31.4664240003674],
+ [121.312785000128, 31.4657509999088],
+ [121.313287999941, 31.4642039996149],
+ [121.314520000098, 31.4643930002368],
+ [121.314973000304, 31.4636239998478],
+ [121.313244999757, 31.4618059996472],
+ [121.315988000346, 31.4591490003261],
+ [121.314113000215, 31.4587610004199],
+ [121.315249999588, 31.4567389998051],
+ [121.319573000194, 31.4568690004041],
+ [121.321117000349, 31.4530670004418],
+ [121.322706999928, 31.4520419999384],
+ [121.322836999628, 31.4506860003587],
+ [121.321551999725, 31.449891999716],
+ [121.323695999671, 31.4429450004115],
+ [121.324676999944, 31.4421129998152],
+ [121.326230999661, 31.4423150001372],
+ [121.32666499989, 31.4415039996099],
+ [121.329087000065, 31.4419640001386],
+ [121.331889999824, 31.4349240001425],
+ [121.332072000123, 31.4313390002947],
+ [121.330572000198, 31.430998999904],
+ [121.330527999967, 31.4294009999562],
+ [121.331838000124, 31.4268419997586],
+ [121.332889000027, 31.4271199999881],
+ [121.332854000212, 31.4262769997837],
+ [121.331856000054, 31.4259900000385],
+ [121.331980000377, 31.4209050002656],
+ [121.330050000407, 31.4211430004491],
+ [121.330632000267, 31.4201430001993],
+ [121.327819000047, 31.4187940000431],
+ [121.327897000047, 31.4171269996114],
+ [121.329042999835, 31.4173439997259],
+ [121.32872999979, 31.4158809997084],
+ [121.329528999764, 31.4155060004016],
+ [121.327923000346, 31.4149699999656],
+ [121.328566000321, 31.4125889998825],
+ [121.325389000402, 31.4122719996531],
+ [121.323904000269, 31.4138159998086],
+ [121.309790999655, 31.4090870002649],
+ [121.312836999828, 31.4055410004169],
+ [121.311205000111, 31.4048530001659],
+ [121.31128300011, 31.4021709996919],
+ [121.309964000438, 31.4008190002967],
+ [121.312907000358, 31.3993089999105],
+ [121.314589999729, 31.3996250000937],
+ [121.315761999816, 31.3988850001427],
+ [121.316933999904, 31.3994469999791],
+ [121.317255000318, 31.3974680004479],
+ [121.318591999921, 31.397744999732],
+ [121.318792000151, 31.3952030003182],
+ [121.315884000047, 31.3909979997579],
+ [121.318523000336, 31.3903719996681],
+ [121.322055000438, 31.3829360002962],
+ [121.3259609998, 31.3829979995581],
+ [121.326950999589, 31.3815110002325],
+ [121.326266000376, 31.3811770001185],
+ [121.32674299989, 31.3803220002602],
+ [121.32417400013, 31.3792149995726],
+ [121.326830000304, 31.3761919995612],
+ [121.329399000064, 31.3747010000512],
+ [121.328765999651, 31.3731470003339],
+ [121.331421999825, 31.3719560002692],
+ [121.331526000125, 31.3704560003442],
+ [121.330146000338, 31.3699009999312],
+ [121.330440000406, 31.3688279999123],
+ [121.333001999843, 31.3660460002228],
+ [121.33450399986, 31.3625849997979],
+ [121.335753999947, 31.3623719998679],
+ [121.336518000106, 31.3611799997572],
+ [121.33699499962, 31.3597549996935],
+ [121.332542000213, 31.3578799995624],
+ [121.333167000257, 31.3552630002873],
+ [121.331794999939, 31.3544420001982],
+ [121.331821000239, 31.3534769997638],
+ [121.330068000338, 31.3527599999741],
+ [121.327689000347, 31.3531799995574],
+ [121.327941000277, 31.3489610001501],
+ [121.331889999824, 31.3486829999206],
+ [121.332152000215, 31.3471379997189],
+ [121.335128999904, 31.3461849998379],
+ [121.337811000377, 31.3431639999187],
+ [121.339757000186, 31.3437809995935],
+ [121.341691000339, 31.3381760001224],
+ [121.338254000122, 31.3379189999619],
+ [121.338236000191, 31.3364549998984],
+ [121.337108000334, 31.3351439996959],
+ [121.338766000351, 31.3335879998863],
+ [121.337740999847, 31.3328609996355],
+ [121.33889600005, 31.33176100017],
+ [121.338471000236, 31.3313890001023],
+ [121.340961999996, 31.3288419995587],
+ [121.341343999626, 31.3269860003037],
+ [121.342437999714, 31.327111999819],
+ [121.342923999643, 31.3259249999388],
+ [121.340259999999, 31.3251870000801],
+ [121.340988000296, 31.3226960003202],
+ [121.344609000005, 31.3231580000417],
+ [121.344243000214, 31.3218019995627],
+ [121.343184999988, 31.3213939996334],
+ [121.343097999573, 31.3185640004284],
+ [121.338696999867, 31.31882599992],
+ [121.331343999826, 31.3053350001102],
+ [121.329546999694, 31.3051489996267],
+ [121.326752000305, 31.3033320003716],
+ [121.329633000063, 31.2980040001845],
+ [121.331318000425, 31.2989260004346],
+ [121.333062999958, 31.2974309998408],
+ [121.331204999711, 31.2966259995903],
+ [121.331179000311, 31.2958360000314],
+ [121.329461000225, 31.2962189997072],
+ [121.329806999993, 31.2949329997582],
+ [121.327669000324, 31.2948850002426],
+ [121.328260999745, 31.29281300002],
+ [121.321844999747, 31.2908310003505],
+ [121.322437000068, 31.2901650002146],
+ [121.321526000325, 31.289195000449],
+ [121.322766999997, 31.2870840002265],
+ [121.323695999671, 31.287353000041],
+ [121.324441999898, 31.2865020003671],
+ [121.328176000322, 31.2879630002923],
+ [121.329165000065, 31.2844170004443],
+ [121.328566000321, 31.2842950002141],
+ [121.330154999853, 31.2817020002472],
+ [121.331499999825, 31.2819320000618],
+ [121.332046999869, 31.2793339998643],
+ [121.330849000381, 31.2791440000956],
+ [121.33166500024, 31.277355000333],
+ [121.334313000045, 31.2768880003809],
+ [121.33369600037, 31.2747289997436],
+ [121.338965999681, 31.2733150001872],
+ [121.340136999723, 31.2757930002468],
+ [121.347656000224, 31.274317999676],
+ [121.347750000063, 31.2749970004113],
+ [121.35271699979, 31.2732699999106],
+ [121.354305000176, 31.270650999644],
+ [121.356650000397, 31.2726940003279],
+ [121.362813999566, 31.2714780000097],
+ [121.362367999684, 31.2685099998367],
+ [121.357605000371, 31.2694110000177],
+ [121.355234999895, 31.2688510002735],
+ [121.355294999964, 31.2663989996142],
+ [121.354306000222, 31.2654639996639],
+ [121.357161999727, 31.2617940003929],
+ [121.361397999918, 31.2612030001184],
+ [121.361258999803, 31.2595359996867],
+ [121.369932999608, 31.2588929997122],
+ [121.370522999837, 31.2613250003486],
+ [121.372259999899, 31.2613570000256],
+ [121.376248000345, 31.2595959997556],
+ [121.371110999973, 31.2462900003833],
+ [121.368461000075, 31.247534000194],
+ [121.367721000124, 31.2455979999478],
+ [121.36375599984, 31.2492360004411],
+ [121.361658000217, 31.2477130003547],
+ [121.360531000405, 31.2445399997213],
+ [121.359902000177, 31.2447939997434],
+ [121.358493999998, 31.2419499998927],
+ [121.359053999742, 31.2413239998028],
+ [121.358108000184, 31.2416240001476],
+ [121.356115000007, 31.2404699999906],
+ [121.355479000356, 31.2423650001447],
+ [121.35146499961, 31.2420279998923],
+ [121.351605999817, 31.2399130003847],
+ [121.349583000055, 31.2389989996042],
+ [121.348253999922, 31.2402159999685],
+ [121.344149000376, 31.241254000172],
+ [121.344591000075, 31.2432949998644],
+ [121.345537999679, 31.2437229998166],
+ [121.344887000235, 31.2454379997639],
+ [121.342698000013, 31.2450770002034],
+ [121.342231000061, 31.2429300001195],
+ [121.341041000042, 31.2438450000467],
+ [121.341448999971, 31.2458679998084],
+ [121.340033000323, 31.2454429999945],
+ [121.340996999812, 31.2417739998702],
+ [121.336291999576, 31.2418459995932],
+ [121.334435000275, 31.2398310002005],
+ [121.330086000269, 31.237526000025],
+ [121.330093999738, 31.2347169999896],
+ [121.329321000064, 31.2339169999696],
+ [121.321587999587, 31.231510999633],
+ [121.317550999579, 31.2314460002328],
+ [121.30955599961, 31.2290870002649],
+ [121.298506999998, 31.2325800003668],
+ [121.292449000321, 31.2330300004342],
+ [121.2881689999, 31.2347509997589],
+ [121.283525999825, 31.2412560002642],
+ [121.282588999783, 31.2456899996938],
+ [121.279880999908, 31.246714000151],
+ [121.277138000219, 31.2497849996781],
+ [121.279768000093, 31.2538259998701],
+ [121.27889100012, 31.2543509997989],
+ [121.275906000062, 31.2538839998468],
+ [121.270854000012, 31.2555219998405],
+ [121.269213999926, 31.2555500002324],
+ [121.266845000397, 31.2542660003757],
+ [121.264076999554, 31.2561669999072],
+ [121.263337999649, 31.2535099996868],
+ [121.262617999721, 31.2553310000257],
+ [121.263077000203, 31.2565169998597],
+ [121.260015000192, 31.258505999852],
+ [121.259546000148, 31.2611620000263],
+ [121.25578700037, 31.2603310003754],
+ [121.251681999924, 31.2606400002359],
+ [121.25145700034, 31.2614519999099],
+ [121.249973000254, 31.2616370003473],
+ [121.249756000139, 31.2606980002126],
+ [121.247584999848, 31.2607709999817],
+ [121.247541999664, 31.2619599999541],
+ [121.246553999967, 31.2619840001615],
+ [121.246761999667, 31.260410999568],
+ [121.245121000434, 31.2609520002347],
+ [121.242334999661, 31.2604569998907],
+ [121.242153000261, 31.2618050000008],
+ [121.237822000185, 31.2613780000947],
+ [121.231963999839, 31.2644780000597],
+ [121.224647999705, 31.264704999736],
+ [121.22476899989, 31.2637180000857],
+ [121.220560000044, 31.263032999973],
+ [121.220230000114, 31.263843999601],
+ [121.219422999772, 31.2634900003633],
+ [121.219422999772, 31.2610290001883],
+ [121.215769000339, 31.2594070000331],
+ [121.216836000081, 31.2582909998299],
+ [121.214119999838, 31.2577089999704],
+ [121.214101999907, 31.2552230004412],
+ [121.213138999565, 31.2554269999561],
+ [121.212879000166, 31.2574040002945],
+ [121.209737000063, 31.2563409998373],
+ [121.209589999579, 31.2588500004272],
+ [121.208165999561, 31.2618189997471],
+ [121.208850999674, 31.2624520001597],
+ [121.208139000115, 31.2628579999968],
+ [121.207254999818, 31.262020000023],
+ [121.2059610004, 31.2632880000412],
+ [121.204815999759, 31.2611500003723],
+ [121.205362999803, 31.2599960002153],
+ [121.204017999831, 31.259467000102],
+ [121.201907999655, 31.2620349998155],
+ [121.198401999852, 31.2590980001726],
+ [121.198669999621, 31.2577900001085],
+ [121.197906000362, 31.2580159997386],
+ [121.196144000046, 31.2567099997667],
+ [121.195380999933, 31.2572040000646],
+ [121.192855000358, 31.2556719995632],
+ [121.192447000429, 31.2567099997667],
+ [121.190693999628, 31.25585199977],
+ [121.191596999902, 31.2553560002792],
+ [121.191779000201, 31.2531910002645],
+ [121.188889000027, 31.2534169998947],
+ [121.188532999798, 31.2555819999094],
+ [121.184608999606, 31.2569360002962],
+ [121.181944999962, 31.2542759999375],
+ [121.179739999901, 31.2540959997307],
+ [121.177032000027, 31.2563480001601],
+ [121.174826999966, 31.2553560002792],
+ [121.174505999552, 31.2566190000668],
+ [121.17351699981, 31.2566190000668],
+ [121.174279999922, 31.2577910001546],
+ [121.173333000318, 31.2581509996689],
+ [121.17225700016, 31.256530999606],
+ [121.169731999732, 31.2587830000355],
+ [121.166893000112, 31.2568459997431],
+ [121.165495000394, 31.2583770001984],
+ [121.164409999822, 31.258108000384],
+ [121.163958999708, 31.2595060001019],
+ [121.164905000166, 31.2594599997792],
+ [121.16585199977, 31.261037999704],
+ [121.163507999595, 31.2615320000019],
+ [121.163125999965, 31.2658450001467],
+ [121.158072999869, 31.2710659998961],
+ [121.156502000267, 31.2695170004093],
+ [121.154678999836, 31.2718829998007],
+ [121.152846999889, 31.2723679996835],
+ [121.150981000173, 31.2680290001383],
+ [121.148315999584, 31.2686000003898],
+ [121.148219999653, 31.2693639996489],
+ [121.14721299998, 31.2695069999481],
+ [121.149557000155, 31.2747980002276],
+ [121.149174999627, 31.2785180000058],
+ [121.150920000058, 31.2803150001372],
+ [121.150981000173, 31.2826360001513],
+ [121.15485199972, 31.2834570002404],
+ [121.154454000252, 31.2845029999136],
+ [121.156736000266, 31.2858700000006],
+ [121.154749000366, 31.2895440003554],
+ [121.151834999985, 31.2892819999644],
+ [121.151779000101, 31.290453000006],
+ [121.150163000222, 31.2905099999366],
+ [121.150124000222, 31.2919230003462],
+ [121.148575999882, 31.2918329997931],
+ [121.148323999953, 31.2932630000874],
+ [121.146717999636, 31.2937989996242],
+ [121.146536000236, 31.2957650003545],
+ [121.148151000069, 31.2959439996159],
+ [121.146941000027, 31.2982319999069],
+ [121.145950000192, 31.2980699996309],
+ [121.143210999788, 31.3000560003842],
+ [121.146214999822, 31.3008789996662],
+ [121.142323000206, 31.3077819996396],
+ [121.139190999665, 31.3115459996482],
+ [121.134365000145, 31.3074699996408],
+ [121.135058999773, 31.3048310002505],
+ [121.129172999934, 31.3039009996315],
+ [121.12534299958, 31.304421000229],
+ [121.125023000111, 31.3051190000419],
+ [121.124527999767, 31.309354000187],
+ [121.125170999742, 31.3101380003685],
+ [121.124502000367, 31.3131259996652],
+ [121.123364000049, 31.3137050002856],
+ [121.124033000323, 31.3160840002764],
+ [121.122357000375, 31.3204069999831],
+ [121.124640999583, 31.3221280002071],
+ [121.124683999767, 31.3236080001092],
+ [121.126602000082, 31.3242180003605],
+ [121.126932000012, 31.3272610003949],
+ [121.12870399989, 31.3274039997948],
+ [121.128964000188, 31.3283049999758],
+ [121.127219999803, 31.3298409997624],
+ [121.127253999573, 31.3304510000137],
+ [121.128642999775, 31.3305100000365],
+ [121.12887799982, 31.3319869998003],
+ [121.1279740004, 31.3337860000239],
+ [121.126540999967, 31.3339270002309],
+ [121.126324999899, 31.3361650000148],
+ [121.125222000295, 31.3369199997582],
+ [121.125855999855, 31.3379630001924],
+ [121.125247999695, 31.3420539999922],
+ [121.126202999669, 31.3433310004254],
+ [121.125829999555, 31.3460210003689],
+ [121.119327000041, 31.3445669998672],
+ [121.113353999787, 31.3452509999337],
+ [121.112703000343, 31.3489250002886],
+ [121.115575999733, 31.3493700001255],
+ [121.113352999741, 31.3532039997648],
+ [121.107902000177, 31.3522750000913],
+ [121.10652999986, 31.3533249999488],
+ [121.103698999709, 31.3524370003673],
+ [121.103785000078, 31.3558280002621],
+ [121.102647999805, 31.3570400003957],
+ [121.103620999709, 31.3622450003066],
+ [121.102127000061, 31.3663230004062],
+ [121.102327000291, 31.3683830000754],
+ [121.104262999638, 31.3683029999835],
+ [121.104653999682, 31.3664900000135],
+ [121.105817000254, 31.3664320000368],
+ [121.108221999646, 31.3669250002886],
+ [121.10906499985, 31.3689849999578],
+ [121.115592999617, 31.3704669999522],
+ [121.114456000244, 31.3723519996451],
+ [121.110600999637, 31.3729310002655],
+ [121.109124999919, 31.3762379998838],
+ [121.118667000182, 31.3802709997069],
+ [121.119652999786, 31.3785230000365],
+ [121.126636999898, 31.381465999956],
+ [121.127157999642, 31.3806199996133],
+ [121.133811999824, 31.3829589995582],
+ [121.132919000012, 31.3846009997364],
+ [121.133339999641, 31.3853839998717],
+ [121.135075999658, 31.3852629996877],
+ [121.134755000143, 31.3859899999386],
+ [121.136447999975, 31.3863520004445],
+ [121.136829999605, 31.3853629998026],
+ [121.143853999762, 31.3872339997494],
+ [121.144400999806, 31.3887359997667],
+ [121.142065, 31.390754000197],
+ [121.142507999744, 31.3917239999627],
+ [121.141092000096, 31.393175000326],
+ [121.140043000284, 31.392771999728],
+ [121.139234999895, 31.3941460001378],
+ [121.144885999689, 31.3963249998989],
+ [121.143071999673, 31.399151999865],
+ [121.14505200015, 31.4000400003458],
+ [121.148159999584, 31.3999990002537],
+ [121.14771699984, 31.4008889999275],
+ [121.145007999919, 31.4012100003413],
+ [121.144488000221, 31.4021390000149],
+ [121.146501000421, 31.4028270002659],
+ [121.145911000193, 31.4040370003074],
+ [121.14932200011, 31.4055180002555],
+ [121.148525000229, 31.4076709997169],
+ [121.15276100042, 31.4094869998252],
+ [121.154817999951, 31.4076299996248],
+ [121.153325000349, 31.4097310002855],
+ [121.154297000206, 31.4119510001386],
+ [121.15256100019, 31.4132030003183],
+ [121.150903000173, 31.4122329996533],
+ [121.149930000269, 31.413404999741],
+ [121.151310000056, 31.4143720002676],
+ [121.150946000358, 31.4156630004472],
+ [121.148923999743, 31.4155030002633],
+ [121.148645000367, 31.4163519998449],
+ [121.14706500035, 31.4162689996147],
+ [121.145894000308, 31.4175619998865],
+ [121.144321999761, 31.4176809999782],
+ [121.144686000359, 31.4209519997351],
+ [121.143593000317, 31.421720000078],
+ [121.141613999886, 31.421517999756],
+ [121.141657000071, 31.4228890000274],
+ [121.146579999567, 31.4236160002782],
+ [121.146302000237, 31.4249079996046],
+ [121.148966999927, 31.4257149999473],
+ [121.149166000111, 31.4270090002652],
+ [121.150702999944, 31.42757400024],
+ [121.154817999951, 31.4278169997548],
+ [121.15522599988, 31.4270900004033],
+ [121.156797000381, 31.427615000332],
+ [121.156353999737, 31.4285830000055],
+ [121.157440000356, 31.429793000047],
+ [121.159748999817, 31.4290689999344],
+ [121.159782999586, 31.43290399962],
+ [121.159098000373, 31.43290399962],
+ [121.158576999729, 31.4308439999507],
+ [121.15796899957, 31.4314110000177],
+ [121.158576999729, 31.4328240004273],
+ [121.158150999869, 31.4340559996847],
+ [121.150407999829, 31.4345780003745],
+ [121.143237000088, 31.4379999999001],
+ [121.141977999585, 31.4408150002121],
+ [121.143271999903, 31.441260000049],
+ [121.142298999999, 31.4430760001573],
+ [121.143315000087, 31.4446109998978],
+ [121.142751000159, 31.4457409998473],
+ [121.156353999737, 31.4515139998712],
+ [121.158490000213, 31.4507070004278],
+ [121.161498000432, 31.4520159996387],
+ [121.163181999849, 31.4501639996689],
+ [121.165279000326, 31.4518770004233],
+ [121.169227999872, 31.4509089998505],
+ [121.176294000168, 31.4533310000257],
+ [121.181545000401, 31.4562370000376],
+ [121.180938000289, 31.4593460004176],
+ [121.181546000448, 31.4626970002664],
+ [121.184939000435, 31.4641509998688],
+ [121.18489600025, 31.4650770003034],
+ [121.189816999655, 31.4693979999178],
+ [121.198418999737, 31.4712550001182],
+ [121.198540999967, 31.4737979995781],
+ [121.20189099977, 31.476905999912],
+ [121.209329000133, 31.48082599992],
+ [121.209901999578, 31.481047000219],
+ [121.21056100029, 31.4794510003634],
+ [121.209173000134, 31.4778549996086],
+ [121.214605999767, 31.4771480002801],
+ [121.216263999784, 31.4779929996773],
+ [121.220898000342, 31.4779539996774],
+ [121.222313999991, 31.4799720001078],
+ [121.225906000162, 31.4793649999948],
+ [121.226392000091, 31.4830400003958],
+ [121.224222999892, 31.4840609998153],
+ [121.224430999591, 31.4848730003887],
+ [121.228544999552, 31.4898329997932],
+ [121.230958000212, 31.4900360001614],
+ [121.230288999937, 31.4946190001668],
+ [121.230784000281, 31.4950549995886],
+ [121.233620999809, 31.4938339999392],
+ [121.236432999983, 31.4956330001629],
+ [121.237449000071, 31.495228000372],
+ [121.236694000328, 31.4928490003811],
+ [121.239348999557, 31.4892550001182],
+ [121.239028000042, 31.4873969998717],
+ [121.239956999716, 31.4831180003955],
+ [121.243725999955, 31.4838170002544],
+ [121.2438310003, 31.4827220001202],
+ [121.242256999661, 31.4827139997514],
+ [121.242170000146, 31.4818650001696],
+ [121.241362999803, 31.4818260001698],
+ [121.243220000003, 31.4788369999276],
+ [121.24673500022, 31.4806140000361],
+ [121.246778999551, 31.4815429997097],
+ [121.248913999981, 31.4817450000318],
+ [121.248454000352, 31.4837540000471],
+ [121.24922599998, 31.4837909999547],
+ [121.249978999631, 31.485687000155],
+ [121.251195999996, 31.4855710002016],
+ [121.250346000368, 31.4795789999709],
+ [121.251926000385, 31.4794999999251],
+ [121.251811999624, 31.481665999986],
+ [121.253357999872, 31.4811620001262],
+ [121.252741000197, 31.4806980003125],
+ [121.253200999826, 31.479731999832],
+ [121.254981000073, 31.479884999693],
+ [121.257009000065, 31.4807900000585],
+ [121.257278999926, 31.4827189999819],
+ [121.258423999668, 31.4837160000934],
+ [121.260700000305, 31.4850650002496],
+ [121.262983000365, 31.4852960001104],
+ [121.262869999651, 31.4881569998457],
+ [121.264413999806, 31.4893940002329],
+ [121.265993999823, 31.4887369996129],
+ [121.265993999823, 31.4871910002645],
+ [121.267582000209, 31.4862619996916],
+ [121.271758000331, 31.4873050001257],
+ [121.271981999869, 31.4885809996135],
+ [121.275853000316, 31.4905899996288],
+ [121.275229000318, 31.4923299998297],
+ [121.276894999804, 31.49267799969],
+ [121.277206999803, 31.4918270000161],
+ [121.279211999634, 31.4917120001087],
+ [121.279403000348, 31.4926019997825],
+ [121.280879000066, 31.4926009997364],
+ [121.28338699971, 31.4908600003887],
+ [121.284897000097, 31.4909380003884],
+ [121.286130000299, 31.4936060002168],
+ [121.287023000111, 31.4936050001706],
+ [121.287752999601, 31.4921359998766],
+ [121.288994000173, 31.4917100000166],
+ [121.294096999877, 31.4934110002175],
+ [121.294053999692, 31.4956130001399],
+ [121.293047000019, 31.496],
+ [121.295988999893, 31.4964249998139],
+ [121.296353999637, 31.4986410003819],
+ [121.3001559996, 31.497660000109],
+ [121.301465999756, 31.4957389996551],
+ ],
+ [
+ [121.358914999628, 31.3045719999978],
+ [121.35567799964, 31.2965190000519],
+ [121.353976000292, 31.2953100000565],
+ [121.359159000088, 31.2938649999698],
+ [121.359159000088, 31.2931700002953],
+ [121.365036000411, 31.2909470003038],
+ [121.36552200034, 31.292154000207],
+ [121.368630999821, 31.2919740000002],
+ [121.368473999775, 31.2909969999117],
+ [121.370193999953, 31.2909260002348],
+ [121.370209999792, 31.2919069996084],
+ [121.371565000225, 31.2918660004157],
+ [121.371608999556, 31.2924209999293],
+ [121.376887000135, 31.291253000026],
+ [121.377451000064, 31.2934830003402],
+ [121.37697399965, 31.2945310001056],
+ [121.378440999852, 31.2945819997595],
+ [121.378553999667, 31.2956890004471],
+ [121.38293000002, 31.2960710000767],
+ [121.383738000408, 31.2970759996577],
+ [121.390100999761, 31.2964850002826],
+ [121.388833999789, 31.2930890001573],
+ [121.393236000441, 31.2923280001372],
+ [121.392845000397, 31.2911230003263],
+ [121.395189999719, 31.2902769999836],
+ [121.394730000089, 31.2896259996402],
+ [121.393870000001, 31.2902240002375],
+ [121.393792000001, 31.2889550001732],
+ [121.395771999578, 31.2889059997121],
+ [121.395728000247, 31.2879250003385],
+ [121.399791999701, 31.2880319998769],
+ [121.395433000133, 31.2798799998621],
+ [121.395885000293, 31.279188000326],
+ [121.399176000072, 31.2780120000538],
+ [121.400242999815, 31.2790140003959],
+ [121.401840999762, 31.2786719999129],
+ [121.400787999766, 31.2748790003656],
+ [121.406307999814, 31.2749970004113],
+ [121.405944000116, 31.2721559997996],
+ [121.410623000051, 31.270964999735],
+ [121.411071000027, 31.2677299998397],
+ [121.414856000104, 31.26706499975],
+ [121.417045000327, 31.2691099996268],
+ [121.415429000448, 31.2697320004315],
+ [121.415975999593, 31.2704320003366],
+ [121.418586000344, 31.2702079998994],
+ [121.425202999719, 31.276758999828],
+ [121.427784000032, 31.2737779999548],
+ [121.438108000384, 31.2692360000414],
+ [121.44645200026, 31.2581390000149],
+ [121.444723999713, 31.2547969996818],
+ [121.446877000074, 31.2538700001004],
+ [121.446694999775, 31.2526139997364],
+ [121.4460519998, 31.2526440002205],
+ [121.445817999801, 31.2496250003935],
+ [121.44371700004, 31.2470949997345],
+ [121.445402000402, 31.24517400018],
+ [121.444656000174, 31.2443770002984],
+ [121.441353999887, 31.2433169999796],
+ [121.431063000157, 31.2372679998184],
+ [121.426375999853, 31.2369539997273],
+ [121.42327799998, 31.2329979998578],
+ [121.422880999658, 31.231134000234],
+ [121.421471000286, 31.2313110003025],
+ [121.418693999928, 31.2299650002846],
+ [121.416192999707, 31.2272649998799],
+ [121.414907999804, 31.2272279999723],
+ [121.412051000254, 31.2297860001239],
+ [121.410306999868, 31.2303370003523],
+ [121.41142600021, 31.2271299999496],
+ [121.410741000097, 31.2257429998396],
+ [121.399879000116, 31.222565999921],
+ [121.395814999762, 31.2226480001052],
+ [121.39449600009, 31.220134000184],
+ [121.384014999693, 31.2204890003671],
+ [121.372276999784, 31.2225389995752],
+ [121.368908000004, 31.2216950002241],
+ [121.366330999876, 31.2246709998668],
+ [121.362345000421, 31.2255970003014],
+ [121.361442000148, 31.2278719999928],
+ [121.356640999982, 31.2282329995533],
+ [121.349583000055, 31.2389989996042],
+ [121.351605999817, 31.2399130003847],
+ [121.35146499961, 31.2420279998923],
+ [121.355479000356, 31.2423650001447],
+ [121.356115000007, 31.2404699999906],
+ [121.358108000184, 31.2416240001476],
+ [121.359053999742, 31.2413239998028],
+ [121.358493999998, 31.2419499998927],
+ [121.359902000177, 31.2447939997434],
+ [121.360531000405, 31.2445399997213],
+ [121.361658000217, 31.2477130003547],
+ [121.36375599984, 31.2492360004411],
+ [121.367721000124, 31.2455979999478],
+ [121.368461000075, 31.247534000194],
+ [121.371110999973, 31.2462900003833],
+ [121.376248000345, 31.2595959997556],
+ [121.372259999899, 31.2613570000256],
+ [121.370522999837, 31.2613250003486],
+ [121.369932999608, 31.2588929997122],
+ [121.361258999803, 31.2595359996867],
+ [121.361397999918, 31.2612030001184],
+ [121.357161999727, 31.2617940003929],
+ [121.354306000222, 31.2654639996639],
+ [121.355294999964, 31.2663989996142],
+ [121.355234999895, 31.2688510002735],
+ [121.357605000371, 31.2694110000177],
+ [121.362367999684, 31.2685099998367],
+ [121.362813999566, 31.2714780000097],
+ [121.356650000397, 31.2726940003279],
+ [121.354305000176, 31.270650999644],
+ [121.35271699979, 31.2732699999106],
+ [121.347750000063, 31.2749970004113],
+ [121.347656000224, 31.274317999676],
+ [121.340136999723, 31.2757930002468],
+ [121.338965999681, 31.2733150001872],
+ [121.33369600037, 31.2747289997436],
+ [121.334313000045, 31.2768880003809],
+ [121.33166500024, 31.277355000333],
+ [121.330849000381, 31.2791440000956],
+ [121.332046999869, 31.2793339998643],
+ [121.331499999825, 31.2819320000618],
+ [121.330154999853, 31.2817020002472],
+ [121.328566000321, 31.2842950002141],
+ [121.329165000065, 31.2844170004443],
+ [121.328176000322, 31.2879630002923],
+ [121.324441999898, 31.2865020003671],
+ [121.322091000299, 31.2878240001775],
+ [121.321526000325, 31.289195000449],
+ [121.322437000068, 31.2901650002146],
+ [121.321844999747, 31.2908310003505],
+ [121.328260999745, 31.29281300002],
+ [121.327669000324, 31.2948850002426],
+ [121.329806999993, 31.2949329997582],
+ [121.329461000225, 31.2962189997072],
+ [121.331179000311, 31.2958360000314],
+ [121.331934000054, 31.2967790003506],
+ [121.332351000398, 31.2955450001017],
+ [121.33336100021, 31.2952659998261],
+ [121.33409599993, 31.2951089997806],
+ [121.334668000228, 31.2962290001683],
+ [121.33643900006, 31.2955969998018],
+ [121.336351999645, 31.2993080000642],
+ [121.337706000032, 31.2998610003849],
+ [121.337942000123, 31.2990000002499],
+ [121.34226499983, 31.2995139996714],
+ [121.342298999599, 31.2982109998378],
+ [121.34407000033, 31.2984089999754],
+ [121.344061999961, 31.2994039999946],
+ [121.345060000119, 31.2994409999023],
+ [121.344304000329, 31.3021109998228],
+ [121.348114999807, 31.3035590000479],
+ [121.350641000282, 31.3016269999861],
+ [121.355695000424, 31.3045499998826],
+ [121.358914999628, 31.3045719999978],
+ ],
+ [
+ [121.357622000255, 31.5085670003668],
+ [121.371635999902, 31.5028740004348],
+ [121.400756000089, 31.488970999612],
+ [121.40161300004, 31.48713500038],
+ [121.399299000349, 31.4832419998185],
+ [121.399660999955, 31.4809660000809],
+ [121.414023000361, 31.4724460001828],
+ [121.429625000394, 31.4602709999068],
+ [121.459128000257, 31.440125999915],
+ [121.476827999912, 31.4291890000724],
+ [121.489799000024, 31.4197789996012],
+ [121.501571999748, 31.4089910003344],
+ [121.502805999997, 31.4116960000704],
+ [121.496876999974, 31.4139420002232],
+ [121.496798999974, 31.4147800001969],
+ [121.497928999923, 31.4153579998718],
+ [121.506388999753, 31.4119550003231],
+ [121.512854000212, 31.4083090003601],
+ [121.512196999592, 31.407285999949],
+ [121.505016000288, 31.4102730000989],
+ [121.502933999604, 31.4079069998082],
+ [121.516861999782, 31.3968069996434],
+ [121.507966999677, 31.3878539995625],
+ [121.499407999779, 31.375723999563],
+ [121.499407999779, 31.3669119996891],
+ [121.504008999716, 31.3592499997877],
+ [121.510518999552, 31.3540130001999],
+ [121.52113499988, 31.3488450001967],
+ [121.518522999937, 31.3449260002348],
+ [121.51589099997, 31.3460689998845],
+ [121.513252999726, 31.3428000002199],
+ [121.501136000326, 31.3477239997628],
+ [121.48912200028, 31.3324290003981],
+ [121.493149999873, 31.3300769998537],
+ [121.494504000259, 31.3276120003936],
+ [121.491769000039, 31.3253159997337],
+ [121.492264000383, 31.3134639999637],
+ [121.48091699962, 31.3135189998021],
+ [121.480604999621, 31.3166729995593],
+ [121.474346999714, 31.3163410004369],
+ [121.463762999963, 31.3179269998312],
+ [121.463590000079, 31.3222129996303],
+ [121.46066500009, 31.3222769998837],
+ [121.460821000089, 31.3232820003641],
+ [121.452555000213, 31.3228619998815],
+ [121.450116000153, 31.3211059998421],
+ [121.443282999811, 31.3189480001502],
+ [121.442110999723, 31.3216539999322],
+ [121.432063000407, 31.3214949997945],
+ [121.431830999601, 31.322694000228],
+ [121.428965999681, 31.3226859998591],
+ [121.428557999752, 31.3203599996144],
+ [121.427835999732, 31.3204829998906],
+ [121.429990000138, 31.3141209996845],
+ [121.427532000102, 31.313507000148],
+ [121.427853999662, 31.312120000038],
+ [121.427037999804, 31.3113990000638],
+ [121.427800999916, 31.3077370002624],
+ [121.426411999714, 31.3075899997787],
+ [121.426659000313, 31.3054580003865],
+ [121.421786000424, 31.3050199999731],
+ [121.422296999707, 31.3003499995529],
+ [121.415385000218, 31.2987260002048],
+ [121.415751000009, 31.2975340000941],
+ [121.414492000406, 31.2966509998438],
+ [121.413996000015, 31.2947039999897],
+ [121.415047999965, 31.2928839996969],
+ [121.41915599965, 31.2928760002273],
+ [121.418191000115, 31.2860799997922],
+ [121.419900999831, 31.2816840003164],
+ [121.419926000085, 31.2737569998857],
+ [121.420610000151, 31.2724950001442],
+ [121.418586000344, 31.2702079998994],
+ [121.415975999593, 31.2704320003366],
+ [121.415429000448, 31.2697320004315],
+ [121.417045000327, 31.2691099996268],
+ [121.414856000104, 31.26706499975],
+ [121.411071000027, 31.2677299998397],
+ [121.410623000051, 31.270964999735],
+ [121.405944000116, 31.2721559997996],
+ [121.406307999814, 31.2749970004113],
+ [121.400787999766, 31.2748790003656],
+ [121.401840999762, 31.2786719999129],
+ [121.400242999815, 31.2790140003959],
+ [121.399905000416, 31.2780429996847],
+ [121.398420000283, 31.2780900000535],
+ [121.395433000133, 31.2798799998621],
+ [121.399791999701, 31.2880319998769],
+ [121.395728000247, 31.2879250003385],
+ [121.395771999578, 31.2889059997121],
+ [121.393792000001, 31.2889550001732],
+ [121.393870000001, 31.2902240002375],
+ [121.394730000089, 31.2896259996402],
+ [121.395189999719, 31.2902769999836],
+ [121.392845000397, 31.2911230003263],
+ [121.393236000441, 31.2923280001372],
+ [121.388833999789, 31.2930890001573],
+ [121.390100999761, 31.2964850002826],
+ [121.383738000408, 31.2970759996577],
+ [121.38293000002, 31.2960710000767],
+ [121.378553999667, 31.2956890004471],
+ [121.378440999852, 31.2945819997595],
+ [121.37697399965, 31.2945310001056],
+ [121.377451000064, 31.2934830003402],
+ [121.376887000135, 31.291253000026],
+ [121.371608999556, 31.2924209999293],
+ [121.371565000225, 31.2918660004157],
+ [121.370209999792, 31.2919069996084],
+ [121.370193999953, 31.2909260002348],
+ [121.368473999775, 31.2909969999117],
+ [121.368630999821, 31.2919740000002],
+ [121.36552200034, 31.292154000207],
+ [121.365036000411, 31.2909470003038],
+ [121.359159000088, 31.2931700002953],
+ [121.359159000088, 31.2938649999698],
+ [121.353976000292, 31.2953100000565],
+ [121.35567799964, 31.2965190000519],
+ [121.358914999628, 31.3045719999978],
+ [121.355695000424, 31.3045499998826],
+ [121.350641000282, 31.3016269999861],
+ [121.348114999807, 31.3035590000479],
+ [121.34440000026, 31.3021859996842],
+ [121.345060000119, 31.2994409999023],
+ [121.344061999961, 31.2994039999946],
+ [121.34407000033, 31.2984089999754],
+ [121.342298999599, 31.2982109998378],
+ [121.34226499983, 31.2995139996714],
+ [121.337942000123, 31.2990000002499],
+ [121.337706000032, 31.2998610003849],
+ [121.336351999645, 31.2993080000642],
+ [121.33643900006, 31.2955969998018],
+ [121.334668000228, 31.2962290001683],
+ [121.33409599993, 31.2951089997806],
+ [121.332351000398, 31.2955450001017],
+ [121.331934000054, 31.2967790003506],
+ [121.333062999958, 31.2974309998408],
+ [121.332315999684, 31.298555000413],
+ [121.331318000425, 31.2989260004346],
+ [121.329633000063, 31.2980040001845],
+ [121.328159000438, 31.2998810004079],
+ [121.328913000135, 31.3003169998297],
+ [121.326752000305, 31.3033320003716],
+ [121.329546999694, 31.3051489996267],
+ [121.331343999826, 31.3053350001102],
+ [121.338696999867, 31.31882599992],
+ [121.343097999573, 31.3185640004284],
+ [121.343184999988, 31.3213939996334],
+ [121.344243000214, 31.3218019995627],
+ [121.344609000005, 31.3231580000417],
+ [121.340988000296, 31.3226960003202],
+ [121.340259999999, 31.3251870000801],
+ [121.342923999643, 31.3259249999388],
+ [121.342437999714, 31.327111999819],
+ [121.341343999626, 31.3269860003037],
+ [121.340961999996, 31.3288419995587],
+ [121.338471000236, 31.3313890001023],
+ [121.33889600005, 31.33176100017],
+ [121.337740999847, 31.3328609996355],
+ [121.338766000351, 31.3335879998863],
+ [121.337108000334, 31.3351439996959],
+ [121.338236000191, 31.3364549998984],
+ [121.338254000122, 31.3379189999619],
+ [121.341691000339, 31.3381760001224],
+ [121.339757000186, 31.3437809995935],
+ [121.337811000377, 31.3431639999187],
+ [121.335128999904, 31.3461849998379],
+ [121.332152000215, 31.3471379997189],
+ [121.331889999824, 31.3486829999206],
+ [121.327941000277, 31.3489610001501],
+ [121.327689000347, 31.3531799995574],
+ [121.330068000338, 31.3527599999741],
+ [121.331821000239, 31.3534769997638],
+ [121.331794999939, 31.3544420001982],
+ [121.333167000257, 31.3552630002873],
+ [121.332542000213, 31.3578799995624],
+ [121.33699499962, 31.3597549996935],
+ [121.336518000106, 31.3611799997572],
+ [121.335753999947, 31.3623719998679],
+ [121.33450399986, 31.3625849997979],
+ [121.333001999843, 31.3660460002228],
+ [121.330440000406, 31.3688279999123],
+ [121.330146000338, 31.3699009999312],
+ [121.331526000125, 31.3704560003442],
+ [121.331421999825, 31.3719560002692],
+ [121.328765999651, 31.3731470003339],
+ [121.329399000064, 31.3747010000512],
+ [121.326830000304, 31.3761919995612],
+ [121.32417400013, 31.3792149995726],
+ [121.32674299989, 31.3803220002602],
+ [121.326266000376, 31.3811770001185],
+ [121.326950999589, 31.3815110002325],
+ [121.3259609998, 31.3829979995581],
+ [121.322055000438, 31.3829360002962],
+ [121.318523000336, 31.3903719996681],
+ [121.315884000047, 31.3909979997579],
+ [121.318792000151, 31.3952030003182],
+ [121.318591999921, 31.397744999732],
+ [121.317255000318, 31.3974680004479],
+ [121.316933999904, 31.3994469999791],
+ [121.315761999816, 31.3988850001427],
+ [121.310224999884, 31.400257999607],
+ [121.310059000323, 31.4015259996252],
+ [121.31128300011, 31.4021709996919],
+ [121.311205000111, 31.4048530001659],
+ [121.312836999828, 31.4055410004169],
+ [121.309790999655, 31.4090870002649],
+ [121.323904000269, 31.4138159998086],
+ [121.325389000402, 31.4122719996531],
+ [121.328566000321, 31.4125889998825],
+ [121.327923000346, 31.4149699999656],
+ [121.329528999764, 31.4155060004016],
+ [121.32872999979, 31.4158809997084],
+ [121.329042999835, 31.4173439997259],
+ [121.327897000047, 31.4171269996114],
+ [121.327819000047, 31.4187940000431],
+ [121.330632000267, 31.4201430001993],
+ [121.330050000407, 31.4211430004491],
+ [121.331980000377, 31.4209050002656],
+ [121.331856000054, 31.4259900000385],
+ [121.332854000212, 31.4262769997837],
+ [121.332889000027, 31.4271199999881],
+ [121.331838000124, 31.4268419997586],
+ [121.330527999967, 31.4294009999562],
+ [121.330572000198, 31.430998999904],
+ [121.332072000123, 31.4313390002947],
+ [121.332028999938, 31.4340949996845],
+ [121.329660000409, 31.4391849996881],
+ [121.329616000178, 31.4414370001175],
+ [121.329087000065, 31.4419640001386],
+ [121.32666499989, 31.4415039996099],
+ [121.326230999661, 31.4423150001372],
+ [121.324676999944, 31.4421129998152],
+ [121.323695999671, 31.4429450004115],
+ [121.321551999725, 31.449891999716],
+ [121.322836999628, 31.4506860003587],
+ [121.322706999928, 31.4520419999384],
+ [121.321117000349, 31.4530670004418],
+ [121.319573000194, 31.4568690004041],
+ [121.315249999588, 31.4567389998051],
+ [121.314113000215, 31.4587610004199],
+ [121.315988000346, 31.4591490003261],
+ [121.313244999757, 31.4618059996472],
+ [121.314973000304, 31.4636239998478],
+ [121.314520000098, 31.4643930002368],
+ [121.313287999941, 31.4642039996149],
+ [121.312785000128, 31.4657509999088],
+ [121.313400999756, 31.4664240003674],
+ [121.312490000014, 31.467931999762],
+ [121.315510999933, 31.4685890003821],
+ [121.31645700039, 31.4699910002845],
+ [121.316022000115, 31.4709230000964],
+ [121.313080000242, 31.4705170002594],
+ [121.31170899997, 31.4718860004386],
+ [121.31183899967, 31.4729120000888],
+ [121.309668000278, 31.4741149998075],
+ [121.314260999845, 31.4769229997967],
+ [121.313566000171, 31.4787650002046],
+ [121.312367999783, 31.4784940002979],
+ [121.312881000058, 31.4799160002233],
+ [121.3119870002, 31.482841000212],
+ [121.309424999864, 31.4823100000065],
+ [121.307733000078, 31.4838200003928],
+ [121.305685000063, 31.4891940000031],
+ [121.304113999562, 31.4905299995599],
+ [121.305746000178, 31.49161300004],
+ [121.304644999767, 31.4943719995682],
+ [121.302022000215, 31.4951959997956],
+ [121.301249999688, 31.4946259995903],
+ [121.301465999756, 31.4957389996551],
+ [121.3001559996, 31.497660000109],
+ [121.296353999637, 31.4986410003819],
+ [121.295754999893, 31.5002659997761],
+ [121.297986000254, 31.5003350002601],
+ [121.29542600001, 31.5016509997939],
+ [121.296431999637, 31.5025279997674],
+ [121.297621999656, 31.5010819996346],
+ [121.296953000281, 31.5031840003414],
+ [121.297595000209, 31.5042829997607],
+ [121.299608999556, 31.5039010001311],
+ [121.301353999987, 31.5053220000103],
+ [121.301014999643, 31.5072190002567],
+ [121.303609999702, 31.5065419996137],
+ [121.305824000177, 31.5077899996089],
+ [121.307220999849, 31.5067759996127],
+ [121.307403000148, 31.5047749999663],
+ [121.309304999726, 31.5040740000151],
+ [121.308888000281, 31.5026180003205],
+ [121.311299999995, 31.5037609999702],
+ [121.312108000384, 31.5076329995633],
+ [121.315614000186, 31.5077359998166],
+ [121.31608300023, 31.5060480002151],
+ [121.317177000318, 31.5061009999612],
+ [121.317334000364, 31.5052579997569],
+ [121.315484999633, 31.504852999966],
+ [121.315353999887, 31.5015780000247],
+ [121.317958000362, 31.5012160004181],
+ [121.31914800038, 31.501500000025],
+ [121.318575000036, 31.5041429995998],
+ [121.319929000423, 31.5047139998513],
+ [121.319953999777, 31.5060219999154],
+ [121.320865999566, 31.5061270002609],
+ [121.321100999612, 31.5051039998498],
+ [121.322654000182, 31.5054139997563],
+ [121.322645999813, 31.506087000215],
+ [121.324945999758, 31.5060920004455],
+ [121.33889600005, 31.513867000162],
+ [121.357622000255, 31.5085670003668],
+ ],
+ [
+ [121.490380999883, 31.2442069996534],
+ [121.488905000166, 31.2409190000119],
+ [121.489894999954, 31.2365439997059],
+ [121.502313999791, 31.2251810000032],
+ [121.504999000404, 31.2205179999058],
+ [121.505510999733, 31.216558999898],
+ [121.503974999946, 31.2122119999839],
+ [121.493635999802, 31.1976280001322],
+ [121.488783999982, 31.1941790002607],
+ [121.471473000279, 31.1898569997009],
+ [121.469946000008, 31.1921839999916],
+ [121.4658570003, 31.1932230002413],
+ [121.465065999796, 31.1983530002908],
+ [121.462326000245, 31.2061989996841],
+ [121.457712999755, 31.2050990002188],
+ [121.45667000022, 31.2136349999553],
+ [121.452323000306, 31.2238220002851],
+ [121.452183000145, 31.2258009998163],
+ [121.463005000081, 31.2260220001153],
+ [121.463372999964, 31.2276420001782],
+ [121.461776000062, 31.2362359998915],
+ [121.458415999799, 31.2433099996568],
+ [121.465022999612, 31.2411410003569],
+ [121.47108300028, 31.2434329999331],
+ [121.476074000215, 31.2421249998689],
+ [121.480562000336, 31.2456840003164],
+ [121.482490000213, 31.2462159996687],
+ [121.490380999883, 31.2442069996534],
+ ],
+ [
+ [121.52113499988, 31.3488450001967],
+ [121.545123999973, 31.3398980003925],
+ [121.551511999579, 31.3360680000382],
+ [121.554315000237, 31.3333850004175],
+ [121.556233999699, 31.3299369996928],
+ [121.55763899974, 31.3232950000643],
+ [121.55750900004, 31.3054809996485],
+ [121.558273000199, 31.3019060002617],
+ [121.564910999643, 31.2874110000177],
+ [121.565293000172, 31.2817269996014],
+ [121.56427800013, 31.2778649995701],
+ [121.561727000301, 31.2739699998157],
+ [121.554826999566, 31.2663730002138],
+ [121.537243999911, 31.2539559995698],
+ [121.52322600008, 31.2493440000256],
+ [121.512116000353, 31.2490109999578],
+ [121.511630999571, 31.2536560001244],
+ [121.513281000118, 31.2539019997775],
+ [121.502516000113, 31.2668820003041],
+ [121.502098999769, 31.272614000236],
+ [121.496978000135, 31.2770620003111],
+ [121.492117999946, 31.2783900003982],
+ [121.492032999623, 31.2864590001828],
+ [121.498284000107, 31.291658999863],
+ [121.496855999904, 31.2966259995903],
+ [121.496213999976, 31.297482000394],
+ [121.485698999809, 31.2945619997366],
+ [121.481056999781, 31.3058050002007],
+ [121.48091699962, 31.3135189998021],
+ [121.492264000383, 31.3134639999637],
+ [121.491769000039, 31.3253159997337],
+ [121.494504000259, 31.3276120003936],
+ [121.493149999873, 31.3300769998537],
+ [121.48912200028, 31.3324290003981],
+ [121.501256999611, 31.3478409997624],
+ [121.513252999726, 31.3428000002199],
+ [121.51589099997, 31.3460689998845],
+ [121.518522999937, 31.3449260002348],
+ [121.52113499988, 31.3488450001967],
+ ],
+ [
+ [121.31932999978, 31.1649020000273],
+ [121.322688999997, 31.1588180000507],
+ [121.324243999761, 31.1586270002359],
+ [121.325041999689, 31.157594000263],
+ [121.325527999618, 31.1554149996026],
+ [121.326986000304, 31.1540050002307],
+ [121.326743999936, 31.1517280004469],
+ [121.329338999995, 31.1505049998059],
+ [121.329181999949, 31.1479390001847],
+ [121.330025000154, 31.1482880000912],
+ [121.330830000404, 31.1459249999389],
+ [121.332169000099, 31.145500000125],
+ [121.334230999861, 31.1422779999298],
+ [121.333601999633, 31.1411079999343],
+ [121.332216999615, 31.1409289997736],
+ [121.332542000213, 31.1394580002865],
+ [121.334762000066, 31.139191999711],
+ [121.336520000198, 31.1379360002463],
+ [121.340107000138, 31.132281000268],
+ [121.339437999864, 31.1313990000639],
+ [121.341433000133, 31.1281490003761],
+ [121.340312999745, 31.1277120000088],
+ [121.342964999735, 31.1239160003232],
+ [121.342172000038, 31.1236020002322],
+ [121.345002000142, 31.1196959999705],
+ [121.347832000247, 31.1204430002443],
+ [121.348471000037, 31.1195450002016],
+ [121.346080000392, 31.1174950000942],
+ [121.349180000357, 31.11345199981],
+ [121.351436000071, 31.1144730001289],
+ [121.352284999653, 31.1131080001342],
+ [121.35241300016, 31.1124609999752],
+ [121.348697999713, 31.1097330000779],
+ [121.348644999967, 31.1085519995752],
+ [121.347638000294, 31.1084349995756],
+ [121.347092000296, 31.1096800003318],
+ [121.343958999708, 31.1086119996441],
+ [121.346583000205, 31.1013300001794],
+ [121.353793999993, 31.1027320000818],
+ [121.354488999668, 31.1008729997891],
+ [121.358152000415, 31.1017020002471],
+ [121.361312000448, 31.0957229997167],
+ [121.361259999849, 31.0937660003007],
+ [121.362196999892, 31.0934710001866],
+ [121.363682000024, 31.0909059997122],
+ [121.367404999941, 31.0818060000469],
+ [121.366009000315, 31.0803029999835],
+ [121.364189000022, 31.0810599998192],
+ [121.360871999943, 31.0798390001698],
+ [121.360757000036, 31.0778720002926],
+ [121.359142000203, 31.0771710003414],
+ [121.359732000432, 31.0756520004395],
+ [121.357509999587, 31.0745520000748],
+ [121.359818999947, 31.0718240001775],
+ [121.358820999789, 31.071323999603],
+ [121.359141000157, 31.0703030001833],
+ [121.352683000021, 31.0687240002125],
+ [121.353602000132, 31.0660049998309],
+ [121.348853999712, 31.0632569999107],
+ [121.338886999635, 31.0611230004262],
+ [121.336898999689, 31.06474800032],
+ [121.333540000371, 31.0631700003952],
+ [121.331179000311, 31.0649440003654],
+ [121.33163899994, 31.0632870003948],
+ [121.330789000312, 31.0624389999599],
+ [121.330527999967, 31.0600359997616],
+ [121.330796999782, 31.0501489997766],
+ [121.329886000039, 31.04326499978],
+ [121.329131000295, 31.0427090002202],
+ [121.328836000181, 31.0361340000841],
+ [121.32947800011, 31.0339429997697],
+ [121.32874799972, 31.03157400024],
+ [121.32935599988, 31.0289450004115],
+ [121.328713999951, 31.0281440003454],
+ [121.329217999811, 31.0256110004474],
+ [121.328627000436, 31.0232440001106],
+ [121.329182999996, 31.0176900002933],
+ [121.328392000391, 31.0167310001356],
+ [121.328530999606, 31.0153720004175],
+ [121.336065999946, 31.0154420000483],
+ [121.338237000237, 31.016835000435],
+ [121.339686999655, 31.0159480000003],
+ [121.335284999903, 31.0122880002911],
+ [121.333688000001, 31.0082280001222],
+ [121.325815000262, 30.998958999858],
+ [121.322967000227, 30.997945999908],
+ [121.322247000299, 30.9965349995906],
+ [121.322376999999, 30.9920260002997],
+ [121.321282999911, 30.9853659998411],
+ [121.322846000043, 30.9827230002663],
+ [121.325034000219, 30.9833739997104],
+ [121.329876999624, 30.9827489996666],
+ [121.341553000271, 30.9780610002151],
+ [121.346691999836, 30.9780070004228],
+ [121.354123999923, 30.9798679999083],
+ [121.356511000282, 30.9748329997432],
+ [121.356397999568, 30.9675920003706],
+ [121.358524999629, 30.9581209997843],
+ [121.357892000116, 30.9509229996967],
+ [121.360314000291, 30.9502890001373],
+ [121.360868999805, 30.9492459997032],
+ [121.359863000177, 30.9474929998021],
+ [121.356624000098, 30.946933000058],
+ [121.358073000369, 30.9367869998202],
+ [121.354757000335, 30.9371230000265],
+ [121.352777999905, 30.9356660002857],
+ [121.351058999773, 30.9360770003534],
+ [121.3501300001, 30.9355559997097],
+ [121.351101999957, 30.9341000000151],
+ [121.350538000029, 30.9331290002032],
+ [121.349349000056, 30.9328319999968],
+ [121.349271000057, 30.9336889999474],
+ [121.346588000436, 30.9326820002742],
+ [121.347628999878, 30.9302580000067],
+ [121.347595000109, 30.9258580003465],
+ [121.350799000374, 30.9234309999408],
+ [121.351476000117, 30.9217909998548],
+ [121.350504000259, 30.9183959997756],
+ [121.34696099965, 30.9157100000165],
+ [121.346978999581, 30.9142370004373],
+ [121.345338000349, 30.9134350003251],
+ [121.343011000058, 30.915208000249],
+ [121.340936999743, 30.9144050000907],
+ [121.34176099997, 30.9135169996099],
+ [121.340076999654, 30.9121870003299],
+ [121.340598000298, 30.9110239997578],
+ [121.335614999832, 30.9106349998054],
+ [121.332090000054, 30.9088340003889],
+ [121.330962000196, 30.9098040001545],
+ [121.329521000294, 30.908805999997],
+ [121.328574999836, 30.9099970000615],
+ [121.326579000421, 30.9096110002475],
+ [121.326022999962, 30.9107169999896],
+ [121.323835999832, 30.9110780004494],
+ [121.323114999857, 30.9122440002604],
+ [121.321422000025, 30.9110780004494],
+ [121.317994000223, 30.91069099969],
+ [121.315632000117, 30.91321299998],
+ [121.313471000287, 30.9129640001885],
+ [121.313365999941, 30.9118839998468],
+ [121.310120999585, 30.9112739995954],
+ [121.30934799991, 30.9128529995663],
+ [121.306961999597, 30.911937999639],
+ [121.307429999595, 30.9110239997578],
+ [121.306432000337, 30.9112739995954],
+ [121.306544000106, 30.9123260004446],
+ [121.304079999792, 30.9123260004446],
+ [121.304106000092, 30.9116059996172],
+ [121.303247000049, 30.9115770000785],
+ [121.30233500026, 30.9123539999372],
+ [121.302030999731, 30.9142670000221],
+ [121.299254000272, 30.9142439998607],
+ [121.298976000042, 30.9114369999177],
+ [121.29776099977, 30.9115159999635],
+ [121.297318000026, 30.910610999598],
+ [121.294029000338, 30.9119039998698],
+ [121.291824000277, 30.917112999965],
+ [121.290365000444, 30.917112999965],
+ [121.289810000032, 30.9192379999338],
+ [121.290582999706, 30.9192929997722],
+ [121.29049600019, 30.9206680002281],
+ [121.285314000441, 30.9195530000709],
+ [121.284402999799, 30.9190660000959],
+ [121.285088999957, 30.9163780002445],
+ [121.284263999684, 30.9120880002611],
+ [121.285634999955, 30.9119730003537],
+ [121.285548999587, 30.9101709999917],
+ [121.286259999999, 30.9101709999917],
+ [121.285236000441, 30.9090840002265],
+ [121.286259999999, 30.9088850000427],
+ [121.286573000044, 30.9048520002197],
+ [121.285723000416, 30.9048239998278],
+ [121.28572200037, 30.902191999861],
+ [121.284289999984, 30.9021359999765],
+ [121.283977999985, 30.8982459995533],
+ [121.28137400041, 30.8976170002244],
+ [121.280827000366, 30.8988169998048],
+ [121.277884999593, 30.8987619999664],
+ [121.277650999594, 30.8969890000424],
+ [121.275219999903, 30.8966460004127],
+ [121.274682000274, 30.8993049998259],
+ [121.273762000116, 30.8993920002407],
+ [121.271193000357, 30.8982180000607],
+ [121.271218999757, 30.8970179995811],
+ [121.270359999714, 30.8970179995811],
+ [121.268563999629, 30.9025959996058],
+ [121.266011999754, 30.9023659997911],
+ [121.264641000382, 30.9038829996008],
+ [121.261758999678, 30.9039120000388],
+ [121.261723999863, 30.9049700002653],
+ [121.262471000137, 30.9049399997812],
+ [121.262531000206, 30.9084580001366],
+ [121.260587999637, 30.9084020002522],
+ [121.259980000377, 30.9093180002256],
+ [121.258123000176, 30.9090319996271],
+ [121.257723999763, 30.9102900000835],
+ [121.254546999844, 30.9094029996488],
+ [121.254546999844, 30.9101760002223],
+ [121.251492000156, 30.9101770002684],
+ [121.250832000297, 30.9117499999626],
+ [121.244340000391, 30.9124950001442],
+ [121.244340000391, 30.911551999825],
+ [121.242221999845, 30.9120939996384],
+ [121.241797000032, 30.9109790003806],
+ [121.241797000032, 30.9133809996335],
+ [121.239281000018, 30.9200460003227],
+ [121.241111999919, 30.9192739997953],
+ [121.240226999576, 30.920788000366],
+ [121.241251000034, 30.9210740000651],
+ [121.240191999761, 30.9225050004055],
+ [121.238533999744, 30.922105999992],
+ [121.236250999684, 30.9273380002485],
+ [121.23376099997, 30.9270539997423],
+ [121.232389999699, 30.9283700001754],
+ [121.230372000168, 30.9281629996228],
+ [121.230086999615, 30.9307460000279],
+ [121.22292999962, 30.9289629996427],
+ [121.218580999614, 30.9329289999734],
+ [121.204963000242, 30.9227399995514],
+ [121.19038199963, 30.9194580001866],
+ [121.185841999809, 30.9193020001872],
+ [121.183299000349, 30.918724999659],
+ [121.182005000031, 30.9175349996406],
+ [121.166763000412, 30.9167850001277],
+ [121.162404999991, 30.9190660000959],
+ [121.160105000046, 30.9220279999923],
+ [121.153680999678, 30.922368000383],
+ [121.15221300033, 30.9210319999269],
+ [121.152118000445, 30.9120450000767],
+ [121.14522600008, 30.9133310000257],
+ [121.145294999665, 30.9146780000897],
+ [121.138445000337, 30.9169850003576],
+ [121.138982999965, 30.9175900003783],
+ [121.137610999648, 30.9176490004011],
+ [121.137447000179, 30.9188770003733],
+ [121.138697000266, 30.9201640003684],
+ [121.136900000135, 30.9215660002707],
+ [121.134494999844, 30.92165199974],
+ [121.132862000081, 30.9153899996488],
+ [121.133209999942, 30.913901000231],
+ [121.135527999817, 30.9123820003291],
+ [121.135111000372, 30.909444999787],
+ [121.136421999676, 30.9070350001652],
+ [121.136708000274, 30.9033910002945],
+ [121.129859000093, 30.9038629995778],
+ [121.129086000419, 30.90237400016],
+ [121.127140999757, 30.901775000416],
+ [121.125595999556, 30.904633000013],
+ [121.118963000342, 30.9048910002195],
+ [121.117651000094, 30.9031459997881],
+ [121.113588999833, 30.9035159997636],
+ [121.112095000184, 30.9027450001817],
+ [121.10886499962, 30.899455000448],
+ [121.106495000044, 30.9012549998184],
+ [121.106259999999, 30.9030580002266],
+ [121.108925999735, 30.9056330002628],
+ [121.111609000255, 30.9106379999438],
+ [121.112816000158, 30.9104100002214],
+ [121.113214999673, 30.912726000005],
+ [121.115132999988, 30.9124119999139],
+ [121.115420999779, 30.9134700001404],
+ [121.11476099992, 30.9140119999539],
+ [121.116861999682, 30.9219869999002],
+ [121.110002999939, 30.9236969996169],
+ [121.109342000033, 30.923068000288],
+ [121.106372999814, 30.9237660001009],
+ [121.10612199993, 30.9245340004438],
+ [121.104550000282, 30.9231010000112],
+ [121.100530000159, 30.9221480001302],
+ [121.099766000001, 30.9247699996358],
+ [121.095805999947, 30.9284650000598],
+ [121.086768000443, 30.9182029998686],
+ [121.084431999737, 30.9173120001487],
+ [121.084508999691, 30.9139980002076],
+ [121.085492000056, 30.9130630002573],
+ [121.087436999818, 30.9129789999809],
+ [121.089216000018, 30.9117210004239],
+ [121.09161299994, 30.9123499997527],
+ [121.09121300038, 30.9106620001513],
+ [121.092733000328, 30.9108919999659],
+ [121.094192000161, 30.9086310000207],
+ [121.093905000415, 30.9068010001661],
+ [121.092272999799, 30.9064589996831],
+ [121.092534000144, 30.9052279995726],
+ [121.090552999621, 30.9044840003364],
+ [121.089669000224, 30.9045699998057],
+ [121.089753999647, 30.9068299997048],
+ [121.087150000072, 30.9066569998207],
+ [121.087072000073, 30.9054259997102],
+ [121.084553999967, 30.9051699995958],
+ [121.084492999852, 30.9058559997546],
+ [121.079144999642, 30.9073110003025],
+ [121.079169999896, 30.9064270000061],
+ [121.07722600018, 30.9062839997069],
+ [121.077260999995, 30.9078029996088],
+ [121.076254000322, 30.9079789996312],
+ [121.067856999801, 30.9069550000733],
+ [121.067927000331, 30.9052230002413],
+ [121.065782000339, 30.9048229997817],
+ [121.065842999555, 30.9041660000609],
+ [121.064411000068, 30.9041660000609],
+ [121.063385999564, 30.9065399998212],
+ [121.048494999944, 30.905442000448],
+ [121.040682000274, 30.9039819996696],
+ [121.037817000354, 30.9015049996561],
+ [121.036375000406, 30.9028010000662],
+ [121.035837999924, 30.9065920004205],
+ [121.034291999676, 30.9042460001529],
+ [121.029917000269, 30.9048399996663],
+ [121.030176999669, 30.9082559998146],
+ [121.020844000051, 30.9111910002645],
+ [121.020714000351, 30.9157530002008],
+ [121.023866000016, 30.924710999613],
+ [121.02423900013, 30.9296509998938],
+ [121.027034000419, 30.9381790001608],
+ [121.027382000279, 30.941868000308],
+ [121.026410000421, 30.9423150002371],
+ [121.02645199966, 30.9439449998619],
+ [121.025150999919, 30.9439740002999],
+ [121.025429000148, 30.9465510004284],
+ [121.023579000271, 30.9460370001075],
+ [121.023448999672, 30.9479320002616],
+ [121.028735999767, 30.9491970001415],
+ [121.031765000055, 30.959160000034],
+ [121.035907000408, 30.9585560000594],
+ [121.039006000327, 30.9595659998711],
+ [121.039415000302, 30.9612819998645],
+ [121.038120999984, 30.962492999952],
+ [121.041428999649, 30.9654949998944],
+ [121.038606999913, 30.9714730003787],
+ [121.042184000291, 30.9722809998683],
+ [121.042895999851, 30.9710689997346],
+ [121.046498999629, 30.971397999618],
+ [121.048721999621, 30.9664780002595],
+ [121.052811000228, 30.9673629997027],
+ [121.052349999653, 30.9639319997621],
+ [121.053314000041, 30.9636540004318],
+ [121.053592000271, 30.9615359998866],
+ [121.054955000173, 30.9612090000953],
+ [121.055787999916, 30.9585349999903],
+ [121.057749999563, 30.9575759998326],
+ [121.058809999882, 30.9580049998309],
+ [121.064159000138, 30.956921000204],
+ [121.071911999739, 30.9578069996933],
+ [121.072059000223, 30.9595710001016],
+ [121.074534000144, 30.9602790003756],
+ [121.073952000285, 30.9620189996771],
+ [121.076148999976, 30.9621720004375],
+ [121.075753999747, 30.9638339997393],
+ [121.076654999928, 30.9642700000605],
+ [121.083590999625, 30.9641400003608],
+ [121.083442999995, 30.9661579998918],
+ [121.092897999843, 30.9676209999093],
+ [121.092975999843, 30.9684549996985],
+ [121.09118700008, 30.9703970002215],
+ [121.090961999597, 30.9762250000837],
+ [121.094572999744, 30.9750509999038],
+ [121.095554000017, 30.9969079997045],
+ [121.099514000071, 30.9970489999114],
+ [121.099608999955, 31.0099559997696],
+ [121.098185999984, 31.0113429998796],
+ [121.097455999595, 31.0137189997321],
+ [121.088434999975, 31.0221570003453],
+ [121.080941999774, 31.0274509998638],
+ [121.082972999904, 31.0292760003871],
+ [121.084917999666, 31.0298469997393],
+ [121.086585000098, 31.0278860001388],
+ [121.091812000124, 31.0283879999063],
+ [121.09236899973, 31.0333969997718],
+ [121.095336999903, 31.0331439997958],
+ [121.095684999763, 31.035353000041],
+ [121.093166999657, 31.0408119999739],
+ [121.091785999824, 31.0404240000676],
+ [121.091266000126, 31.0424160001983],
+ [121.089182000249, 31.0418959996007],
+ [121.08850399956, 31.0426559995748],
+ [121.090422999922, 31.0441609997304],
+ [121.09161299994, 31.0467470002739],
+ [121.085656000424, 31.0500679996385],
+ [121.086611000397, 31.0507179999358],
+ [121.085039999896, 31.0522660002757],
+ [121.085326999641, 31.0538699996009],
+ [121.082556999606, 31.0548829995508],
+ [121.081271999703, 31.0521609999303],
+ [121.076374999607, 31.0588360001813],
+ [121.079822000285, 31.0607090002202],
+ [121.078579999667, 31.0618760000774],
+ [121.081923000046, 31.0630999998651],
+ [121.081342000233, 31.0647789999509],
+ [121.083608000409, 31.0665980001976],
+ [121.086072999869, 31.0669609998503],
+ [121.088330999676, 31.0664640003134],
+ [121.08825199963, 31.0654139995565],
+ [121.089936999993, 31.063827000116],
+ [121.089111999719, 31.0633509997489],
+ [121.088408999676, 31.0603689998295],
+ [121.089814999762, 31.0599480002001],
+ [121.090031999877, 31.058265999976],
+ [121.093740000001, 31.0585549998135],
+ [121.09490399972, 31.0579800002769],
+ [121.095207000203, 31.0559949995696],
+ [121.096543999806, 31.0555739999402],
+ [121.097499999825, 31.0573879999563],
+ [121.09721300008, 31.0592050001107],
+ [121.10379499964, 31.059875000431],
+ [121.104037000008, 31.0585569999056],
+ [121.104959000258, 31.058327000091],
+ [121.113615000132, 31.0580059996772],
+ [121.113406000387, 31.0603469997143],
+ [121.115402999849, 31.0605209996445],
+ [121.116115000307, 31.059208000249],
+ [121.121298000103, 31.0593240002025],
+ [121.121550000033, 31.0602030002683],
+ [121.12322599998, 31.0608640001735],
+ [121.12317400028, 31.0616959998706],
+ [121.121810000331, 31.0617539998473],
+ [121.121637000447, 31.068588000236],
+ [121.117651000094, 31.0691150002571],
+ [121.11694800005, 31.0721210003839],
+ [121.113788000016, 31.0778740003848],
+ [121.112529000413, 31.0775519999249],
+ [121.11157400044, 31.0787339995745],
+ [121.110662999798, 31.0783390002447],
+ [121.108908999851, 31.0797689996397],
+ [121.107997000062, 31.0795470001939],
+ [121.102665999736, 31.084034000269],
+ [121.101684000316, 31.0830499998577],
+ [121.097534999641, 31.0822079996995],
+ [121.096085000223, 31.0828499996279],
+ [121.09490399972, 31.0854869998252],
+ [121.09480000032, 31.0878540001621],
+ [121.096084000177, 31.0885709999517],
+ [121.095119999788, 31.0897290002932],
+ [121.096231999807, 31.09059999999],
+ [121.093002000142, 31.0954469995794],
+ [121.094920999604, 31.0960640001535],
+ [121.095294999765, 31.0974199997332],
+ [121.093366999887, 31.1012419997186],
+ [121.094599000044, 31.1019829997157],
+ [121.096006000177, 31.1003309999757],
+ [121.099235999842, 31.10245199976],
+ [121.098055000238, 31.1038579998469],
+ [121.098940999727, 31.1045480001901],
+ [121.101095000134, 31.1027730001739],
+ [121.100424999814, 31.1036849999628],
+ [121.101781000293, 31.1038830001004],
+ [121.101042000388, 31.1053619999564],
+ [121.1000260003, 31.1052880001412],
+ [121.104150999869, 31.1090609996655],
+ [121.10612199993, 31.1095539999172],
+ [121.10562600044, 31.1110339998193],
+ [121.107987999647, 31.1138399997163],
+ [121.109767999893, 31.111708000324],
+ [121.111520999794, 31.1128829996508],
+ [121.113128000157, 31.1107880001661],
+ [121.113866000016, 31.1112829996108],
+ [121.114898999989, 31.1102210000991],
+ [121.116037000307, 31.1109860003037],
+ [121.116358999868, 31.1096560001243],
+ [121.119119000342, 31.1072139999262],
+ [121.1198570002, 31.1076829999705],
+ [121.120915999574, 31.1052920003256],
+ [121.12310399975, 31.1052310002106],
+ [121.126100000315, 31.1024539998523],
+ [121.127357999872, 31.103980000077],
+ [121.128730000189, 31.1010049995811],
+ [121.130197000391, 31.1012409996724],
+ [121.13118700018, 31.1000139997464],
+ [121.13703900025, 31.1006290002283],
+ [121.137323999903, 31.098834000189],
+ [121.139921000054, 31.099401000256],
+ [121.141292000326, 31.095907000108],
+ [121.14490399962, 31.097254000172],
+ [121.146604999821, 31.0936110003474],
+ [121.148315999584, 31.0939980002076],
+ [121.148922999697, 31.0921119995692],
+ [121.150616999575, 31.092442000398],
+ [121.150833999689, 31.0951290002033],
+ [121.15218700003, 31.0951280001572],
+ [121.152248000145, 31.100911999789],
+ [121.149791000155, 31.1008509996739],
+ [121.14985200027, 31.1038040000546],
+ [121.154723000066, 31.1031040001495],
+ [121.155034000019, 31.1025069995984],
+ [121.16012199993, 31.1026370001974],
+ [121.160043999931, 31.1033380001487],
+ [121.160972999604, 31.1034170001944],
+ [121.160668999974, 31.1062460002528],
+ [121.162274000245, 31.1062719996531],
+ [121.161927000431, 31.1102980000527],
+ [121.166050999954, 31.1098059998471],
+ [121.165983000415, 31.111040000096],
+ [121.170409000375, 31.1108619999814],
+ [121.168480999599, 31.116085999869],
+ [121.17070399959, 31.117230999611],
+ [121.169809999732, 31.1198600003388],
+ [121.171911000392, 31.1210050000807],
+ [121.17268300002, 31.1203539997373],
+ [121.173933000108, 31.1206540000821],
+ [121.174800999666, 31.1191720000878],
+ [121.179331999972, 31.120704999736],
+ [121.179635999602, 31.1224700001904],
+ [121.180633999759, 31.1226830001204],
+ [121.179471000087, 31.1231229997267],
+ [121.179365999741, 31.1262979995531],
+ [121.177317999726, 31.1262989995992],
+ [121.177353000441, 31.1289630001424],
+ [121.175843000054, 31.1294209996794],
+ [121.175417000194, 31.1313959999255],
+ [121.175364999595, 31.1338659996163],
+ [121.177161999727, 31.1337790001008],
+ [121.177466000256, 31.1454739998253],
+ [121.191223999788, 31.1400050003306],
+ [121.197169999696, 31.1429680002731],
+ [121.197516000363, 31.1416620003011],
+ [121.195893000162, 31.1398620000313],
+ [121.196110000276, 31.1391569998957],
+ [121.197446999879, 31.1402000003298],
+ [121.20171699984, 31.1403399995913],
+ [121.203836000431, 31.1377259995553],
+ [121.216116000153, 31.1404399997062],
+ [121.223563000033, 31.1411520001647],
+ [121.218382000329, 31.1260279996925],
+ [121.216724000312, 31.1187919996511],
+ [121.216870999897, 31.1171409999573],
+ [121.219666000186, 31.1172100004412],
+ [121.226801000066, 31.1193409997874],
+ [121.22946499971, 31.1193920003406],
+ [121.230280999569, 31.1210650001497],
+ [121.231391000394, 31.1210320004265],
+ [121.232024999954, 31.119862000431],
+ [121.23157399984, 31.1214400003558],
+ [121.232406999583, 31.12777400017],
+ [121.235435999872, 31.1283079996145],
+ [121.240113999761, 31.1274689995947],
+ [121.24090400022, 31.1313650002946],
+ [121.234923999643, 31.1320240001075],
+ [121.235002999689, 31.1325570004053],
+ [121.241060000219, 31.1328359997816],
+ [121.242570999752, 31.1362279997225],
+ [121.253626999686, 31.1344179998908],
+ [121.253140999757, 31.130824999674],
+ [121.2541040001, 31.1290689996347],
+ [121.257186000134, 31.1292469997493],
+ [121.256395999676, 31.1306980001127],
+ [121.257488999718, 31.1308499999276],
+ [121.257541000317, 31.131511999879],
+ [121.256196000345, 31.1343359997067],
+ [121.256985999904, 31.1360149997925],
+ [121.259199000334, 31.1374900003633],
+ [121.261151000418, 31.1368549998584],
+ [121.261307999565, 31.1384580000367],
+ [121.27654799999, 31.135300000095],
+ [121.283032000426, 31.1419989996542],
+ [121.279733000278, 31.1446660003357],
+ [121.277338000448, 31.1440679997385],
+ [121.274846999789, 31.1477539997474],
+ [121.27257400019, 31.146228000422],
+ [121.2719740004, 31.1479050004155],
+ [121.273354000187, 31.1485339997444],
+ [121.272989999589, 31.1497320001317],
+ [121.274282999861, 31.1503030003832],
+ [121.273319000372, 31.1543180002756],
+ [121.273830999701, 31.1548879995815],
+ [121.275836999578, 31.1525790001208],
+ [121.278622000305, 31.1526089997056],
+ [121.279378000095, 31.1528799996124],
+ [121.27868300042, 31.1541980001376],
+ [121.280393000137, 31.1546769997438],
+ [121.280305999722, 31.155305999972],
+ [121.282676000197, 31.1543469998143],
+ [121.285957999562, 31.1542869997453],
+ [121.285502000117, 31.1549050003655],
+ [121.294143000199, 31.1567219996206],
+ [121.311710000017, 31.162173000084],
+ [121.313547000194, 31.1595440002554],
+ [121.314937999589, 31.1597629995628],
+ [121.316405999837, 31.1604600002289],
+ [121.317966999877, 31.1643669996374],
+ [121.31932999978, 31.1649020000273],
+ ],
+ [
+ [121.463762999963, 31.3179269998312],
+ [121.474346999714, 31.3163410004369],
+ [121.480604999621, 31.3166729995593],
+ [121.48091699962, 31.3135189998021],
+ [121.481056999781, 31.3058050002007],
+ [121.485698999809, 31.2945619997366],
+ [121.496213999976, 31.297482000394],
+ [121.496855999904, 31.2966259995903],
+ [121.498284000107, 31.291658999863],
+ [121.492032999623, 31.2864590001828],
+ [121.492117999946, 31.2783900003982],
+ [121.496978000135, 31.2770620003111],
+ [121.502098999769, 31.272614000236],
+ [121.502516000113, 31.2668820003041],
+ [121.513281000118, 31.2539019997775],
+ [121.511630999571, 31.2536560001244],
+ [121.512116000353, 31.2490109999578],
+ [121.498453999852, 31.2478300003543],
+ [121.490380999883, 31.2442069996534],
+ [121.482490000213, 31.2462159996687],
+ [121.480562000336, 31.2456840003164],
+ [121.47849600039, 31.2438830000005],
+ [121.476838000374, 31.2496790001858],
+ [121.475084000426, 31.2517599999241],
+ [121.477183000095, 31.2526779999898],
+ [121.475120000288, 31.2553370003023],
+ [121.476082999731, 31.2571939996034],
+ [121.475990999985, 31.2605180000057],
+ [121.465659000163, 31.2690440001805],
+ [121.457319999618, 31.2791609999802],
+ [121.456756999736, 31.2840830003303],
+ [121.457243999711, 31.2865829996058],
+ [121.456419000337, 31.290695000374],
+ [121.455481000248, 31.2917929997472],
+ [121.457885999639, 31.2946310002205],
+ [121.459969000369, 31.2998829996008],
+ [121.458971000212, 31.3078869999851],
+ [121.463130000449, 31.3081979999378],
+ [121.463762999963, 31.3179269998312],
+ ],
+ [
+ [121.341041000042, 31.2438450000467],
+ [121.342231000061, 31.2429300001195],
+ [121.342698000013, 31.2450770002034],
+ [121.344887000235, 31.2454379997639],
+ [121.345537999679, 31.2437229998166],
+ [121.344591000075, 31.2432949998644],
+ [121.344149000376, 31.241254000172],
+ [121.349087999712, 31.2397019996476],
+ [121.356640999982, 31.2282329995533],
+ [121.361442000148, 31.2278719999928],
+ [121.362345000421, 31.2255970003014],
+ [121.366330999876, 31.2246709998668],
+ [121.368908000004, 31.2216950002241],
+ [121.372276999784, 31.2225389995752],
+ [121.384014999693, 31.2204890003671],
+ [121.39449600009, 31.220134000184],
+ [121.395814999762, 31.2226480001052],
+ [121.399879000116, 31.222565999921],
+ [121.410741000097, 31.2257429998396],
+ [121.41142600021, 31.2271299999496],
+ [121.410306999868, 31.2303370003523],
+ [121.411392000441, 31.2302309999607],
+ [121.415298999849, 31.227041000342],
+ [121.418693999928, 31.2299650002846],
+ [121.421798000078, 31.2313169996798],
+ [121.422880999658, 31.231134000234],
+ [121.423078999796, 31.2260769999536],
+ [121.424399000414, 31.2249439998657],
+ [121.42967800014, 31.2277509998088],
+ [121.430788000066, 31.2269309997659],
+ [121.431551000179, 31.2225429997597],
+ [121.434851000373, 31.2163560004291],
+ [121.433218999757, 31.2136570000706],
+ [121.430601000436, 31.2129899998886],
+ [121.433312000448, 31.2058479996855],
+ [121.419159999834, 31.1991720002877],
+ [121.417001000096, 31.1972129998801],
+ [121.417531000256, 31.194527000121],
+ [121.415628999779, 31.1927819996896],
+ [121.412009000115, 31.1928160003582],
+ [121.412269000414, 31.1942590003526],
+ [121.41154800044, 31.1942859997991],
+ [121.410272000053, 31.1928680000582],
+ [121.387558000302, 31.1938179998009],
+ [121.377513000225, 31.1923729997142],
+ [121.36042600006, 31.1872039996649],
+ [121.356546000098, 31.1870400001959],
+ [121.353715999993, 31.1879079997544],
+ [121.352352000045, 31.184661000205],
+ [121.348705000036, 31.1835369996329],
+ [121.348072999669, 31.1848889999275],
+ [121.346830999951, 31.1854030002483],
+ [121.337534000194, 31.1816200002629],
+ [121.337333999964, 31.1797080002241],
+ [121.33665700022, 31.1801119999689],
+ [121.336846999989, 31.1813690003791],
+ [121.33377400037, 31.1820429999845],
+ [121.327256000164, 31.1915660002708],
+ [121.333488999818, 31.1945409998673],
+ [121.332733000028, 31.1975379995791],
+ [121.334356000229, 31.198570999552],
+ [121.3339480003, 31.2140959996307],
+ [121.335424000018, 31.2141870002299],
+ [121.33665700022, 31.216214000176],
+ [121.335692999832, 31.2163320002217],
+ [121.335154000157, 31.2148939995585],
+ [121.334798999974, 31.2185210004438],
+ [121.337645999963, 31.2192200003028],
+ [121.338514000421, 31.2249789996811],
+ [121.340736000366, 31.2246250004434],
+ [121.341049999558, 31.2254289997486],
+ [121.336222999991, 31.2264570003903],
+ [121.337350999849, 31.2271160002033],
+ [121.337004000035, 31.2281999998302],
+ [121.338601999982, 31.2286479998054],
+ [121.338532000352, 31.2294059996872],
+ [121.340788000066, 31.2297850000778],
+ [121.340094000438, 31.2321320003916],
+ [121.340796999582, 31.2322870003449],
+ [121.338930999866, 31.2362050002606],
+ [121.337897999893, 31.2360569997308],
+ [121.337333999964, 31.2372970002564],
+ [121.335535999787, 31.2379659996312],
+ [121.33420000023, 31.2374969995869],
+ [121.333704999886, 31.2382209996994],
+ [121.334470000091, 31.2387550000433],
+ [121.333782999886, 31.2394299996948],
+ [121.336291999576, 31.2418459995932],
+ [121.340996999812, 31.2417739998702],
+ [121.340033000323, 31.2454429999945],
+ [121.341448999971, 31.2458679998084],
+ [121.341041000042, 31.2438450000467],
+ ],
+ [
+ [121.463590000079, 31.3222129996303],
+ [121.463130000449, 31.3081979999378],
+ [121.458971000212, 31.3078869999851],
+ [121.459969000369, 31.2998829996008],
+ [121.457885999639, 31.2946310002205],
+ [121.455481000248, 31.2917929997472],
+ [121.456419000337, 31.290695000374],
+ [121.457243999711, 31.2865829996058],
+ [121.456896999897, 31.2808149998124],
+ [121.458278999776, 31.2772839997568],
+ [121.460263999584, 31.2760939997384],
+ [121.465659000163, 31.2690440001805],
+ [121.475990999985, 31.2605180000057],
+ [121.476082999731, 31.2571939996034],
+ [121.475120000288, 31.2553370003023],
+ [121.477183000095, 31.2526779999898],
+ [121.475084000426, 31.2517599999241],
+ [121.476838000374, 31.2496790001858],
+ [121.47849600039, 31.2438830000005],
+ [121.475822000285, 31.2420619996616],
+ [121.47108300028, 31.2434329999331],
+ [121.465022999612, 31.2411410003569],
+ [121.458415999799, 31.2433099996568],
+ [121.461776000062, 31.2362359998915],
+ [121.463372999964, 31.2276420001782],
+ [121.463005000081, 31.2260220001153],
+ [121.452183000145, 31.2258009998163],
+ [121.453114999957, 31.2221010000612],
+ [121.444953000381, 31.2183650004445],
+ [121.434690000143, 31.2162829997607],
+ [121.431551000179, 31.2225429997597],
+ [121.430788000066, 31.2269309997659],
+ [121.42967800014, 31.2277509998088],
+ [121.424399000414, 31.2249439998657],
+ [121.423078999796, 31.2260769999536],
+ [121.423112999565, 31.2325180002056],
+ [121.426375999853, 31.2369539997273],
+ [121.431063000157, 31.2372679998184],
+ [121.441353999887, 31.2433169999796],
+ [121.444656000174, 31.2443770002984],
+ [121.445402000402, 31.24517400018],
+ [121.44371700004, 31.2470949997345],
+ [121.445817999801, 31.2496250003935],
+ [121.4460519998, 31.2526440002205],
+ [121.446694999775, 31.2526139997364],
+ [121.446877000074, 31.2538700001004],
+ [121.444723999713, 31.2547969996818],
+ [121.44645200026, 31.2581390000149],
+ [121.438108000384, 31.2692360000414],
+ [121.427784000032, 31.2737779999548],
+ [121.425202999719, 31.276758999828],
+ [121.420403999645, 31.2726829998206],
+ [121.419900999831, 31.2816840003164],
+ [121.418191000115, 31.2860799997922],
+ [121.41915599965, 31.2928760002273],
+ [121.415047999965, 31.2928839996969],
+ [121.413996000015, 31.2940700004302],
+ [121.414492000406, 31.2966509998438],
+ [121.415751000009, 31.2975340000941],
+ [121.415385000218, 31.2987260002048],
+ [121.422296999707, 31.3003499995529],
+ [121.421786000424, 31.3050199999731],
+ [121.426659000313, 31.3054580003865],
+ [121.426411999714, 31.3075899997787],
+ [121.427800999916, 31.3077370002624],
+ [121.427037999804, 31.3113990000638],
+ [121.427853999662, 31.312120000038],
+ [121.427532000102, 31.313507000148],
+ [121.429990000138, 31.3141209996845],
+ [121.427835999732, 31.3204829998906],
+ [121.428557999752, 31.3203599996144],
+ [121.429078000349, 31.3227429997897],
+ [121.431830999601, 31.322694000228],
+ [121.432063000407, 31.3214949997945],
+ [121.442110999723, 31.3216539999322],
+ [121.443282999811, 31.3189480001502],
+ [121.450116000153, 31.3211059998421],
+ [121.452555000213, 31.3228619998815],
+ [121.460821000089, 31.3232820003641],
+ [121.46066500009, 31.3222769998837],
+ [121.463590000079, 31.3222129996303],
+ ],
+ [
+ [121.251681999924, 31.2606400002359],
+ [121.25578700037, 31.2603310003754],
+ [121.259546000148, 31.2611620000263],
+ [121.260015000192, 31.258505999852],
+ [121.263077000203, 31.2565169998597],
+ [121.262617999721, 31.2553310000257],
+ [121.263337999649, 31.2535099996868],
+ [121.264076999554, 31.2561669999072],
+ [121.266845000397, 31.2542660003757],
+ [121.269213999926, 31.2555500002324],
+ [121.270854000012, 31.2555219998405],
+ [121.275906000062, 31.2538839998468],
+ [121.27889100012, 31.2543509997989],
+ [121.279768000093, 31.2538259998701],
+ [121.277138000219, 31.2497849996781],
+ [121.279880999908, 31.246714000151],
+ [121.282588999783, 31.2456899996938],
+ [121.283525999825, 31.2412560002642],
+ [121.287717999786, 31.2351419998035],
+ [121.292449000321, 31.2330300004342],
+ [121.298506999998, 31.2325800003668],
+ [121.310876000227, 31.229160000034],
+ [121.317550999579, 31.2314460002328],
+ [121.321587999587, 31.231510999633],
+ [121.329321000064, 31.2339169999696],
+ [121.330093999738, 31.2347169999896],
+ [121.330086000269, 31.237526000025],
+ [121.333782999886, 31.2394299996948],
+ [121.334470000091, 31.2387550000433],
+ [121.333704999886, 31.2382209996994],
+ [121.33420000023, 31.2374969995869],
+ [121.335535999787, 31.2379659996312],
+ [121.337333999964, 31.2372970002564],
+ [121.337897999893, 31.2360569997308],
+ [121.338930999866, 31.2362050002606],
+ [121.340796999582, 31.2322870003449],
+ [121.340094000438, 31.2321320003916],
+ [121.340788000066, 31.2297850000778],
+ [121.338532000352, 31.2294059996872],
+ [121.338601999982, 31.2286479998054],
+ [121.337004000035, 31.2281999998302],
+ [121.337350999849, 31.2271160002033],
+ [121.336222999991, 31.2264570003903],
+ [121.341049999558, 31.2254289997486],
+ [121.340736000366, 31.2246250004434],
+ [121.338514000421, 31.2249789996811],
+ [121.337645999963, 31.2192200003028],
+ [121.334798999974, 31.2185210004438],
+ [121.335154000157, 31.2148939995585],
+ [121.335692999832, 31.2163320002217],
+ [121.33665700022, 31.216214000176],
+ [121.335424000018, 31.2141870002299],
+ [121.3339480003, 31.2140959996307],
+ [121.334356000229, 31.198570999552],
+ [121.332733000028, 31.1975379995791],
+ [121.333488999818, 31.1945409998673],
+ [121.327256000164, 31.1915660002708],
+ [121.33377400037, 31.1820429999845],
+ [121.336846999989, 31.1813690003791],
+ [121.337177999965, 31.1797209999243],
+ [121.337785000078, 31.1801790003606],
+ [121.337534000194, 31.1816200002629],
+ [121.346830999951, 31.1854030002483],
+ [121.348072999669, 31.1848889999275],
+ [121.348705000036, 31.1835369996329],
+ [121.352352000045, 31.184661000205],
+ [121.353715999993, 31.1879079997544],
+ [121.356546000098, 31.1870400001959],
+ [121.36042600006, 31.1872039996649],
+ [121.377513000225, 31.1923729997142],
+ [121.387558000302, 31.1938179998009],
+ [121.407924999739, 31.1929739995505],
+ [121.408264000084, 31.1895869998402],
+ [121.40890900015, 31.1886950000742],
+ [121.410611000397, 31.189220000003],
+ [121.411131000096, 31.1876769998937],
+ [121.410514999568, 31.1852569998107],
+ [121.395450000018, 31.1806680004279],
+ [121.393704999586, 31.1817639997089],
+ [121.393044999727, 31.1814329997332],
+ [121.393428000302, 31.1800889998075],
+ [121.389802000362, 31.1797409999472],
+ [121.390776000312, 31.1764560004441],
+ [121.388052999746, 31.1749510002885],
+ [121.389408000179, 31.1713590001178],
+ [121.386863999774, 31.1705590000979],
+ [121.389927999877, 31.1614770003633],
+ [121.39799499957, 31.1640999999151],
+ [121.39992999977, 31.1594610000252],
+ [121.391255999965, 31.1577549995936],
+ [121.392293000122, 31.1545589996981],
+ [121.396804999551, 31.1556470004088],
+ [121.396329000083, 31.1570870002649],
+ [121.40030399993, 31.1585640000286],
+ [121.408310000406, 31.1405840000516],
+ [121.416889000327, 31.1290270003958],
+ [121.431892999762, 31.1309629997427],
+ [121.434328999684, 31.1215849998479],
+ [121.431121000134, 31.1154609998254],
+ [121.434809000235, 31.1139920004305],
+ [121.436944999812, 31.1144999995753],
+ [121.441346999564, 31.1173580000717],
+ [121.442043000184, 31.1161880000762],
+ [121.445075999758, 31.117210999588],
+ [121.447085999819, 31.1169589996582],
+ [121.445575000286, 31.1147619999664],
+ [121.447788999862, 31.1105439997059],
+ [121.447016000188, 31.110462000421],
+ [121.447016000188, 31.1095669996174],
+ [121.443040000296, 31.1093670002869],
+ [121.443082999581, 31.1087149998974],
+ [121.441563999679, 31.1085080002441],
+ [121.441685999909, 31.1076809998783],
+ [121.443473999625, 31.1078630001774],
+ [121.444003999785, 31.1066770003433],
+ [121.445956999916, 31.1069019999274],
+ [121.446104000399, 31.1057689998395],
+ [121.447302999934, 31.1058069997932],
+ [121.448049000161, 31.1031870003798],
+ [121.450854000012, 31.1027190003816],
+ [121.453745000232, 31.1034980003325],
+ [121.454552999721, 31.1029439999657],
+ [121.458311000352, 31.1039359998466],
+ [121.458694000028, 31.1105609995905],
+ [121.460664000044, 31.1140769998537],
+ [121.467036999858, 31.1121920001607],
+ [121.468443999991, 31.1131009998114],
+ [121.466907000158, 31.1139579997619],
+ [121.469468000448, 31.1149240002425],
+ [121.470014999593, 31.1164389999599],
+ [121.472514999767, 31.1132929996722],
+ [121.472593999813, 31.1113780003944],
+ [121.473523000386, 31.1114940003479],
+ [121.472819000297, 31.1128669998122],
+ [121.474033999669, 31.1133489995568],
+ [121.474824000128, 31.1120030004382],
+ [121.476873000189, 31.1127249995591],
+ [121.475127999757, 31.1157509997089],
+ [121.473260999995, 31.1171270002109],
+ [121.473582999556, 31.1185419998135],
+ [121.472948999996, 31.1193429998796],
+ [121.474484999783, 31.1198180002006],
+ [121.475076000057, 31.1192170003643],
+ [121.477385000417, 31.1205200001979],
+ [121.477428999749, 31.1221099997767],
+ [121.478982000319, 31.1221020003071],
+ [121.479597999948, 31.1226290003282],
+ [121.479269000064, 31.1236040003244],
+ [121.480484000336, 31.1233140004408],
+ [121.481230999711, 31.1239680000232],
+ [121.481656000424, 31.1266680004279],
+ [121.485814999763, 31.1263229998066],
+ [121.488358000122, 31.1207679999433],
+ [121.494114000261, 31.1235739998403],
+ [121.49470399959, 31.1232090000954],
+ [121.497160000434, 31.1167439996359],
+ [121.499052999596, 31.1177819998395],
+ [121.49954799994, 31.1168700000505],
+ [121.500892999912, 31.1175809995635],
+ [121.49945200001, 31.1204050002906],
+ [121.501310000256, 31.1214049996411],
+ [121.501093000142, 31.1220970000766],
+ [121.504921000404, 31.1226270002359],
+ [121.505354999734, 31.1235559999095],
+ [121.505554999963, 31.1229000002349],
+ [121.50696100005, 31.1232999997952],
+ [121.508417999791, 31.1215500000325],
+ [121.510146000338, 31.1173990001638],
+ [121.517071999573, 31.1184490000214],
+ [121.518530000259, 31.1173840003714],
+ [121.519944999862, 31.1178690002542],
+ [121.519598000048, 31.1188630002273],
+ [121.527106000042, 31.1205879997365],
+ [121.527938999785, 31.1193730003637],
+ [121.531047000119, 31.1201490001762],
+ [121.531254999818, 31.1186189997671],
+ [121.532375000206, 31.1189359999964],
+ [121.532644000021, 31.1177700001854],
+ [121.533251000134, 31.1179159997237],
+ [121.533589999579, 31.1161670000071],
+ [121.534953000381, 31.1164569998907],
+ [121.535238000034, 31.117817999701],
+ [121.537963999839, 31.1183509999987],
+ [121.539951999785, 31.1136629996478],
+ [121.541192000311, 31.1136400003858],
+ [121.541505000356, 31.1120859997691],
+ [121.543422999772, 31.1118660004157],
+ [121.546166000361, 31.1138340003389],
+ [121.544951000089, 31.115630999571],
+ [121.548058000376, 31.1161160003532],
+ [121.549081999934, 31.1149010000811],
+ [121.551035000065, 31.1171040000496],
+ [121.552458000037, 31.1153130001949],
+ [121.553932999708, 31.1156529996862],
+ [121.55562600044, 31.1141230001764],
+ [121.555165999911, 31.1130989997191],
+ [121.553282000264, 31.1128370002274],
+ [121.553630000124, 31.1111780001646],
+ [121.557162000226, 31.1084609998753],
+ [121.555902999724, 31.1076629999475],
+ [121.556900999881, 31.1075019997176],
+ [121.559418999987, 31.1041069996384],
+ [121.55783899997, 31.1034960002403],
+ [121.559089000057, 31.1012019996726],
+ [121.558724000312, 31.1003340001141],
+ [121.560780999843, 31.1009580001117],
+ [121.561294000118, 31.0986040003744],
+ [121.562604000274, 31.0988229996817],
+ [121.563045999973, 31.0958809998083],
+ [121.558880000312, 31.094024999654],
+ [121.557621999855, 31.0941120000688],
+ [121.557109999627, 31.0958219997855],
+ [121.556963000043, 31.0950500001574],
+ [121.554852999866, 31.094185999884],
+ [121.553446999779, 31.0943749996066],
+ [121.551520999994, 31.0931060004416],
+ [121.547355000333, 31.0923539999372],
+ [121.547848999732, 31.0912250000338],
+ [121.54677399962, 31.0908479997354],
+ [121.547285999849, 31.0903789996912],
+ [121.544282999861, 31.0891099996268],
+ [121.546304999576, 31.0850640001036],
+ [121.547519999848, 31.0849239999427],
+ [121.549307999565, 31.0825360004361],
+ [121.550280000322, 31.0833930003867],
+ [121.552171000292, 31.0833049999259],
+ [121.552796000335, 31.0849439999657],
+ [121.556832000297, 31.0859719997081],
+ [121.559357999872, 31.0847429996898],
+ [121.565546000148, 31.0838740000851],
+ [121.566969000119, 31.0823609995605],
+ [121.568444999837, 31.0835830001554],
+ [121.57123900008, 31.0830289997886],
+ [121.569061000365, 31.0813430002793],
+ [121.565658999963, 31.081432999933],
+ [121.56690900005, 31.0798909998698],
+ [121.564382999576, 31.0787880002661],
+ [121.561857000001, 31.0789699996658],
+ [121.562030999931, 31.0782450004065],
+ [121.558395000429, 31.0773739998103],
+ [121.558454999599, 31.0765640002285],
+ [121.55745700034, 31.0759830004152],
+ [121.556320000068, 31.0763969997218],
+ [121.55329099978, 31.0756100003013],
+ [121.554802000212, 31.0744269997063],
+ [121.55135599958, 31.0739290001233],
+ [121.548535999936, 31.0717500003623],
+ [121.549794000393, 31.0707079999743],
+ [121.548803999705, 31.070067000092],
+ [121.549047000119, 31.0692179996111],
+ [121.550756999836, 31.0705190002517],
+ [121.552509999737, 31.0696170000246],
+ [121.549515000117, 31.0680329998231],
+ [121.548015000192, 31.0682479998454],
+ [121.546843000104, 31.0660409996925],
+ [121.544292000276, 31.0658699999006],
+ [121.544733999974, 31.0646830000205],
+ [121.542936999843, 31.0638860001388],
+ [121.544420999929, 31.0601060002917],
+ [121.544126999861, 31.0591409998573],
+ [121.542590000029, 31.0598809998083],
+ [121.542850000327, 31.0590649999498],
+ [121.539882000154, 31.0581750002761],
+ [121.539499999625, 31.0574209996794],
+ [121.539039999996, 31.0579259995853],
+ [121.539013999696, 31.0562460003527],
+ [121.536514000421, 31.0547529998511],
+ [121.538034000369, 31.0513090002103],
+ [121.537192000211, 31.048622000405],
+ [121.538414999952, 31.0479459998081],
+ [121.538953999627, 31.0477259995553],
+ [121.540100000315, 31.0497480001701],
+ [121.541609999802, 31.0492840003564],
+ [121.543535999587, 31.0507939998433],
+ [121.545289000387, 31.0501600002838],
+ [121.546287999691, 31.0516459995633],
+ [121.548449000421, 31.0515489995867],
+ [121.550497000436, 31.0530789999959],
+ [121.551884999693, 31.0498939997084],
+ [121.552787999966, 31.0502410004219],
+ [121.55542600021, 31.0484139998063],
+ [121.554887999681, 31.0478879998314],
+ [121.55569600007, 31.0459270002309],
+ [121.556935999697, 31.0473090001103],
+ [121.557899000039, 31.0459040000696],
+ [121.55522599998, 31.0436670003319],
+ [121.555278999726, 31.0325549996136],
+ [121.556069000184, 31.032487000075],
+ [121.553725000009, 31.0314459997331],
+ [121.554124000422, 31.0296319997171],
+ [121.552952000335, 31.0290279997424],
+ [121.553255999964, 31.0284229997217],
+ [121.554315000237, 31.028768000343],
+ [121.554167999753, 31.0268029996587],
+ [121.551530000409, 31.0251859997342],
+ [121.548552999821, 31.0255330004476],
+ [121.547927999777, 31.0237449998319],
+ [121.549897999793, 31.0208820000043],
+ [121.552275999738, 31.0210149998424],
+ [121.552240999922, 31.0225319996521],
+ [121.554471000237, 31.0225359998366],
+ [121.554775999913, 31.0248939997583],
+ [121.555512999725, 31.0248050001507],
+ [121.556041999838, 31.0264090003751],
+ [121.558134000084, 31.0268209995895],
+ [121.557396000225, 31.0250020002422],
+ [121.559435999872, 31.0258329998931],
+ [121.5600779998, 31.0234760000174],
+ [121.561996000115, 31.0234279996026],
+ [121.563246000203, 31.0259580002615],
+ [121.564843000104, 31.0266889997976],
+ [121.563497000086, 31.0269069999582],
+ [121.564174999876, 31.0275790003706],
+ [121.565858000147, 31.0276039997249],
+ [121.568124000322, 31.0289729999041],
+ [121.567758999678, 31.0274719999329],
+ [121.568731000435, 31.0275239996329],
+ [121.570562000336, 31.0232569998108],
+ [121.570466999552, 31.020938999935],
+ [121.568592000321, 31.0206900001434],
+ [121.566804999751, 31.0187250003585],
+ [121.56685700035, 31.0163169999296],
+ [121.565614999732, 31.0147499996128],
+ [121.561024000257, 31.0138030000085],
+ [121.561284999703, 31.0127879999663],
+ [121.562004999631, 31.0127879999663],
+ [121.561831999747, 31.0135429997097],
+ [121.563314999788, 31.0133689997796],
+ [121.563966000131, 31.0123690004291],
+ [121.565519999848, 31.0129039999197],
+ [121.567254999818, 31.007942000423],
+ [121.566040000446, 31.0068690004041],
+ [121.566500000075, 31.0046079995596],
+ [121.563750000063, 31.0031859996342],
+ [121.566232000307, 31.0014850003325],
+ [121.566266000076, 31.0006630001973],
+ [121.559279999872, 30.9980749995617],
+ [121.551676999994, 30.9974379998638],
+ [121.551990000039, 30.9956690001243],
+ [121.549584999748, 30.9958149996626],
+ [121.548952000235, 30.9971190004416],
+ [121.54830900026, 30.9969459996582],
+ [121.548222999892, 30.9954659997562],
+ [121.54923899998, 30.9947989995742],
+ [121.548544000305, 30.9911450001417],
+ [121.547146999734, 30.9902450000068],
+ [121.545289000387, 30.9905939999132],
+ [121.544100000415, 30.9931469998342],
+ [121.541870000101, 30.995321000264],
+ [121.540854000012, 30.9952220001952],
+ [121.540742000243, 30.9962960002603],
+ [121.540419999783, 30.99525199978],
+ [121.538823999928, 30.9955989995942],
+ [121.539031999627, 30.9964700001904],
+ [121.533955000223, 30.9953990002637],
+ [121.533485000133, 30.9969350000503],
+ [121.530708999821, 30.9971389995652],
+ [121.53021300033, 30.9980959996307],
+ [121.527661999602, 30.9970530000959],
+ [121.526671999813, 30.9982119995842],
+ [121.524293999868, 30.9981539996074],
+ [121.520267000322, 31.0013660002408],
+ [121.518565000075, 31.0020169996848],
+ [121.515978000385, 31.0015549999633],
+ [121.515744000385, 31.004763999559],
+ [121.517774999617, 31.0044080002291],
+ [121.517906000262, 31.0051720003876],
+ [121.516830000105, 31.0054220002252],
+ [121.514971999858, 31.0084889995677],
+ [121.512854000212, 31.0087619995667],
+ [121.512653999982, 31.009817999701],
+ [121.511143999596, 31.009654000232],
+ [121.510188999623, 31.0080570003303],
+ [121.500355000283, 31.005704999786],
+ [121.494408000329, 31.0015620002861],
+ [121.494460000029, 31.000355000383],
+ [121.49178699997, 31.0001049996461],
+ [121.487507000448, 31.012147000084],
+ [121.488444999637, 31.0148650004195],
+ [121.484702999744, 31.0170559998346],
+ [121.471864000323, 31.0154060001868],
+ [121.466924000043, 31.0140000001],
+ [121.461062999558, 31.0107890004121],
+ [121.455403000248, 31.0094230003712],
+ [121.443725999555, 31.009461000325],
+ [121.436216000368, 31.0077729998241],
+ [121.43223900043, 31.0060470002689],
+ [121.426820999689, 31.0011500001724],
+ [121.419353999787, 30.9964910002595],
+ [121.404698000213, 30.9921939999532],
+ [121.386029999985, 30.9893839998717],
+ [121.354123999923, 30.9798679999083],
+ [121.346691999836, 30.9780070004228],
+ [121.341553000271, 30.9780610002151],
+ [121.329876999624, 30.9827489996666],
+ [121.325034000219, 30.9833739997104],
+ [121.322846000043, 30.9827230002663],
+ [121.321282999911, 30.9853659998411],
+ [121.322376999999, 30.9920260002997],
+ [121.322247000299, 30.9965349995906],
+ [121.322967000227, 30.997945999908],
+ [121.325815000262, 30.998958999858],
+ [121.333688000001, 31.0082280001222],
+ [121.335284999903, 31.0122880002911],
+ [121.339686999655, 31.0159480000003],
+ [121.338237000237, 31.016835000435],
+ [121.336065999946, 31.0154420000483],
+ [121.328530999606, 31.0153720004175],
+ [121.328392000391, 31.0167310001356],
+ [121.329182999996, 31.0176900002933],
+ [121.328627000436, 31.0232440001106],
+ [121.329217999811, 31.0256110004474],
+ [121.328713999951, 31.0281440003454],
+ [121.32935599988, 31.0289450004115],
+ [121.32874799972, 31.03157400024],
+ [121.32947800011, 31.0339429997697],
+ [121.328836000181, 31.0361340000841],
+ [121.329131000295, 31.0427090002202],
+ [121.329886000039, 31.04326499978],
+ [121.330796999782, 31.0501489997766],
+ [121.330527999967, 31.0600359997616],
+ [121.330789000312, 31.0624389999599],
+ [121.33163899994, 31.0632870003948],
+ [121.331179000311, 31.0649440003654],
+ [121.333540000371, 31.0631700003952],
+ [121.336898999689, 31.06474800032],
+ [121.338886999635, 31.0611230004262],
+ [121.348853999712, 31.0632569999107],
+ [121.353602000132, 31.0660049998309],
+ [121.352683000021, 31.0687240002125],
+ [121.359141000157, 31.0703030001833],
+ [121.358820999789, 31.071323999603],
+ [121.359818999947, 31.0718240001775],
+ [121.357509999587, 31.0745520000748],
+ [121.359732000432, 31.0756520004395],
+ [121.359142000203, 31.0771710003414],
+ [121.360757000036, 31.0778720002926],
+ [121.360871999943, 31.0798390001698],
+ [121.364189000022, 31.0810599998192],
+ [121.366009000315, 31.0803029999835],
+ [121.367404999941, 31.0818060000469],
+ [121.366364999645, 31.0852020001722],
+ [121.362363000352, 31.0932079997494],
+ [121.361259999849, 31.0937660003007],
+ [121.361312000448, 31.0957229997167],
+ [121.358152000415, 31.1017020002471],
+ [121.354488999668, 31.1008729997891],
+ [121.353793999993, 31.1027320000818],
+ [121.346583000205, 31.1013300001794],
+ [121.343958999708, 31.1086119996441],
+ [121.347092000296, 31.1096800003318],
+ [121.347638000294, 31.1084349995756],
+ [121.348644999967, 31.1085519995752],
+ [121.348697999713, 31.1097330000779],
+ [121.35241300016, 31.1124609999752],
+ [121.352284999653, 31.1131080001342],
+ [121.351436000071, 31.1144730001289],
+ [121.349180000357, 31.11345199981],
+ [121.346080000392, 31.1174950000942],
+ [121.348471000037, 31.1195450002016],
+ [121.347832000247, 31.1204430002443],
+ [121.345002000142, 31.1196959999705],
+ [121.344267000422, 31.1203230001064],
+ [121.342172000038, 31.1236020002322],
+ [121.342964999735, 31.1239160003232],
+ [121.340312999745, 31.1277120000088],
+ [121.341433000133, 31.1281490003761],
+ [121.339437999864, 31.1313990000639],
+ [121.340107000138, 31.132281000268],
+ [121.336520000198, 31.1379360002463],
+ [121.334762000066, 31.139191999711],
+ [121.332542000213, 31.1394580002865],
+ [121.332216999615, 31.1409289997736],
+ [121.333601999633, 31.1411079999343],
+ [121.334230999861, 31.1422779999298],
+ [121.332169000099, 31.145500000125],
+ [121.330830000404, 31.1459249999389],
+ [121.330025000154, 31.1482880000912],
+ [121.329181999949, 31.1479390001847],
+ [121.329338999995, 31.1505049998059],
+ [121.326743999936, 31.1517280004469],
+ [121.326986000304, 31.1540050002307],
+ [121.325527999618, 31.1554149996026],
+ [121.325041999689, 31.157594000263],
+ [121.324243999761, 31.1586270002359],
+ [121.322688999997, 31.1588180000507],
+ [121.320529000213, 31.1634939998482],
+ [121.317576999879, 31.1665199999981],
+ [121.317377999695, 31.1679830000155],
+ [121.313965999731, 31.1723429996298],
+ [121.312456000244, 31.1777600003238],
+ [121.308827000166, 31.1831960000954],
+ [121.307741999594, 31.1837090003701],
+ [121.306180000407, 31.187071999873],
+ [121.304149000276, 31.1892460003027],
+ [121.304296999907, 31.1901770000686],
+ [121.303158999588, 31.1906789998361],
+ [121.301249999688, 31.1936110001476],
+ [121.299340999787, 31.1946310004204],
+ [121.299321999811, 31.1959740002999],
+ [121.296988000096, 31.1978670003618],
+ [121.297178999911, 31.1988519999199],
+ [121.295877000123, 31.1991619998265],
+ [121.295989999939, 31.2001789999609],
+ [121.294800999966, 31.2005079998444],
+ [121.293872000293, 31.2026240002974],
+ [121.290183000145, 31.2051659997111],
+ [121.289306000172, 31.2041590000379],
+ [121.287969999716, 31.2045219996906],
+ [121.287891999716, 31.2030439998807],
+ [121.286651000044, 31.2015070000481],
+ [121.281381999879, 31.1973499999026],
+ [121.279585999794, 31.1964089996757],
+ [121.272946000258, 31.1955980000477],
+ [121.262287999791, 31.2052869998952],
+ [121.260352999591, 31.2053429997796],
+ [121.25862599999, 31.2077270000011],
+ [121.260249000191, 31.208758999928],
+ [121.259416000448, 31.2109450000118],
+ [121.254971999658, 31.2148039999047],
+ [121.256785999674, 31.2171080000342],
+ [121.255249999888, 31.2201730001839],
+ [121.254684999913, 31.2200000002998],
+ [121.253019000427, 31.2222349999453],
+ [121.254042999985, 31.2238780001696],
+ [121.252160000384, 31.2283470003139],
+ [121.253583000355, 31.2288890001273],
+ [121.252732999828, 31.2327249998589],
+ [121.24945199961, 31.235045999873],
+ [121.249634999955, 31.2366110000976],
+ [121.248366999937, 31.2389849998579],
+ [121.246648999852, 31.2402159999685],
+ [121.245269000064, 31.2385539997673],
+ [121.244366999837, 31.2393389999949],
+ [121.24349099991, 31.2429360003961],
+ [121.236964000189, 31.2422399997762],
+ [121.235505000355, 31.2430819999344],
+ [121.236997999958, 31.2447599999741],
+ [121.236201000076, 31.245823999578],
+ [121.236858999843, 31.2481230003762],
+ [121.237562999933, 31.2482439996609],
+ [121.237248999842, 31.2493630000025],
+ [121.241485000033, 31.2508389997201],
+ [121.24253499989, 31.2529869998502],
+ [121.243784999978, 31.2532369996878],
+ [121.242144999892, 31.2535630003322],
+ [121.242881999705, 31.2552940001181],
+ [121.246536000036, 31.2585100000366],
+ [121.24927000021, 31.2597010001011],
+ [121.249973000254, 31.2616370003473],
+ [121.25145700034, 31.2614519999099],
+ [121.251681999924, 31.2606400002359],
+ ],
+ [
+ [121.45667000022, 31.2136349999553],
+ [121.457712999755, 31.2050990002188],
+ [121.462326000245, 31.2061989996841],
+ [121.465065999796, 31.1983530002908],
+ [121.465814000116, 31.19325199978],
+ [121.469946000008, 31.1921839999916],
+ [121.471473000279, 31.1898569997009],
+ [121.464198000238, 31.1860690003841],
+ [121.461706999578, 31.1830349998654],
+ [121.460360999561, 31.1799709997619],
+ [121.460360999561, 31.1773520003945],
+ [121.463624999894, 31.1690529998961],
+ [121.464770999682, 31.1622190004066],
+ [121.463815999709, 31.1600500002074],
+ [121.452893999658, 31.1483939995834],
+ [121.452894999705, 31.1441800004067],
+ [121.454421999975, 31.141307000118],
+ [121.45787800017, 31.1364239997678],
+ [121.464198000238, 31.1298479995855],
+ [121.465153000211, 31.1268469996893],
+ [121.464770999682, 31.1207180003355],
+ [121.458694000028, 31.1105609995905],
+ [121.458311000352, 31.1039359998466],
+ [121.450854000012, 31.1027190003816],
+ [121.448049000161, 31.1031870003798],
+ [121.447302999934, 31.1058069997932],
+ [121.446104000399, 31.1057689998395],
+ [121.445956999916, 31.1069019999274],
+ [121.444003999785, 31.1066770003433],
+ [121.443473999625, 31.1078630001774],
+ [121.441685999909, 31.1076809998783],
+ [121.441563999679, 31.1085080002441],
+ [121.443082999581, 31.1087149998974],
+ [121.443040000296, 31.1093670002869],
+ [121.447016000188, 31.1095669996174],
+ [121.447016000188, 31.110462000421],
+ [121.447788999862, 31.1105439997059],
+ [121.445575000286, 31.1147619999664],
+ [121.447085999819, 31.1169589996582],
+ [121.445075999758, 31.117210999588],
+ [121.442043000184, 31.1161880000762],
+ [121.441346999564, 31.1173580000717],
+ [121.436944999812, 31.1144999995753],
+ [121.434809000235, 31.1139920004305],
+ [121.431431000041, 31.1151459996882],
+ [121.434328999684, 31.1215849998479],
+ [121.431892999762, 31.1309629997427],
+ [121.416889000327, 31.1290270003958],
+ [121.408310000406, 31.1405840000516],
+ [121.40030399993, 31.1585640000286],
+ [121.396329000083, 31.1570870002649],
+ [121.396804999551, 31.1556470004088],
+ [121.392293000122, 31.1545589996981],
+ [121.391255999965, 31.1577549995936],
+ [121.39992999977, 31.1594610000252],
+ [121.39799499957, 31.1640999999151],
+ [121.389927999877, 31.1614770003633],
+ [121.386863999774, 31.1705590000979],
+ [121.389408000179, 31.1713590001178],
+ [121.388052999746, 31.1749510002885],
+ [121.390776000312, 31.1764560004441],
+ [121.389802000362, 31.1797409999472],
+ [121.393428000302, 31.1800889998075],
+ [121.393044999727, 31.1814329997332],
+ [121.393704999586, 31.1817639997089],
+ [121.395450000018, 31.1806680004279],
+ [121.410514999568, 31.1852569998107],
+ [121.411131000096, 31.1876769998937],
+ [121.410611000397, 31.189220000003],
+ [121.40890900015, 31.1886950000742],
+ [121.408264000084, 31.1895869998402],
+ [121.407924999739, 31.1929739995505],
+ [121.410272000053, 31.1928680000582],
+ [121.41154800044, 31.1942859997991],
+ [121.412269000414, 31.1942590003526],
+ [121.412009000115, 31.1928160003582],
+ [121.416114999708, 31.1929409998273],
+ [121.417531000256, 31.194527000121],
+ [121.417001000096, 31.1972129998801],
+ [121.419159999834, 31.1991720002877],
+ [121.433312000448, 31.2058479996855],
+ [121.430601000436, 31.2129899998886],
+ [121.433218999757, 31.2136570000706],
+ [121.434851000373, 31.2163560004291],
+ [121.444252999576, 31.2181440001455],
+ [121.453114999957, 31.2221010000612],
+ [121.45667000022, 31.2136349999553],
+ ],
+ [
+ [121.085518000355, 31.2937180003855],
+ [121.087574999886, 31.2910190000269],
+ [121.088964000089, 31.2916929996323],
+ [121.088469999791, 31.2900250000538],
+ [121.089640999832, 31.2901319995922],
+ [121.090779000151, 31.2888190001968],
+ [121.093740000001, 31.2806609999053],
+ [121.093436000371, 31.279198999934],
+ [121.094182999746, 31.2780710000766],
+ [121.098558000052, 31.2759280001771],
+ [121.100825000274, 31.2754729998791],
+ [121.101190000019, 31.2768610000352],
+ [121.099227000326, 31.2765720001977],
+ [121.099201000026, 31.2771479997804],
+ [121.102049000061, 31.2785279995676],
+ [121.110376000052, 31.2870929997422],
+ [121.113100999811, 31.2875130002248],
+ [121.114674000405, 31.2869450001117],
+ [121.116487000375, 31.2879770000386],
+ [121.120407000383, 31.2862399999761],
+ [121.119718000086, 31.2849370001425],
+ [121.122604000075, 31.2830419999884],
+ [121.126450000267, 31.2819469998542],
+ [121.127078999596, 31.2832050003105],
+ [121.129589000232, 31.2821019998075],
+ [121.12909099975, 31.2807319995821],
+ [121.130575999883, 31.2802079996995],
+ [121.131266000226, 31.281487000225],
+ [121.133440999802, 31.280597999698],
+ [121.133008999666, 31.2794449995871],
+ [121.135112000419, 31.278784999728],
+ [121.136401999653, 31.2785279995676],
+ [121.136814999812, 31.2796279999323],
+ [121.138297999853, 31.2795190003017],
+ [121.138413999806, 31.277325999895],
+ [121.145823999778, 31.2773079999643],
+ [121.149174999627, 31.2785180000058],
+ [121.149557000155, 31.2747980002276],
+ [121.14721299998, 31.2695069999481],
+ [121.148219999653, 31.2693639996489],
+ [121.148315999584, 31.2686000003898],
+ [121.150981000173, 31.2680290001383],
+ [121.152846999889, 31.2723679996835],
+ [121.154678999836, 31.2718829998007],
+ [121.156502000267, 31.2695170004093],
+ [121.158072999869, 31.2710659998961],
+ [121.163125999965, 31.2658450001467],
+ [121.163507999595, 31.2615320000019],
+ [121.16585199977, 31.261037999704],
+ [121.164905000166, 31.2594599997792],
+ [121.163958999708, 31.2595060001019],
+ [121.164409999822, 31.258108000384],
+ [121.165495000394, 31.2583770001984],
+ [121.166893000112, 31.2568459997431],
+ [121.169731999732, 31.2587830000355],
+ [121.17225700016, 31.256530999606],
+ [121.173333000318, 31.2581509996689],
+ [121.174279999922, 31.2577910001546],
+ [121.17351699981, 31.2566190000668],
+ [121.174505999552, 31.2566190000668],
+ [121.174826999966, 31.2553560002792],
+ [121.177032000027, 31.2563480001601],
+ [121.179739999901, 31.2540959997307],
+ [121.181944999962, 31.2542759999375],
+ [121.184608999606, 31.2569360002962],
+ [121.188532999798, 31.2555819999094],
+ [121.188889000027, 31.2534169998947],
+ [121.191779000201, 31.2531910002645],
+ [121.191596999902, 31.2553560002792],
+ [121.190693999628, 31.25585199977],
+ [121.192447000429, 31.2567099997667],
+ [121.192855000358, 31.2556719995632],
+ [121.195380999933, 31.2572040000646],
+ [121.196144000046, 31.2567099997667],
+ [121.197906000362, 31.2580159997386],
+ [121.198669999621, 31.2577900001085],
+ [121.198401999852, 31.2590980001726],
+ [121.201907999655, 31.2620349998155],
+ [121.204017999831, 31.259467000102],
+ [121.205362999803, 31.2599960002153],
+ [121.204815999759, 31.2611500003723],
+ [121.2059610004, 31.2632880000412],
+ [121.207254999818, 31.262020000023],
+ [121.208139000115, 31.2628579999968],
+ [121.208850999674, 31.2624520001597],
+ [121.208165999561, 31.2618189997471],
+ [121.209589999579, 31.2588500004272],
+ [121.209737000063, 31.2563409998373],
+ [121.212879000166, 31.2574040002945],
+ [121.213138999565, 31.2554269999561],
+ [121.214101999907, 31.2552230004412],
+ [121.214119999838, 31.2577089999704],
+ [121.216836000081, 31.2582909998299],
+ [121.215769000339, 31.2594070000331],
+ [121.219422999772, 31.2610290001883],
+ [121.219092999842, 31.2625270000211],
+ [121.220230000114, 31.263843999601],
+ [121.220560000044, 31.263032999973],
+ [121.22476899989, 31.2637180000857],
+ [121.224647999705, 31.264704999736],
+ [121.230749999613, 31.2647029996438],
+ [121.233265999626, 31.2640960004301],
+ [121.237822000185, 31.2613780000947],
+ [121.242153000261, 31.2618050000008],
+ [121.242334999661, 31.2604569998907],
+ [121.245121000434, 31.2609520002347],
+ [121.246761999667, 31.260410999568],
+ [121.246553999967, 31.2619840001615],
+ [121.247541999664, 31.2619599999541],
+ [121.247584999848, 31.2607709999817],
+ [121.249756000139, 31.2606980002126],
+ [121.24927000021, 31.2597010001011],
+ [121.246536000036, 31.2585100000366],
+ [121.242881999705, 31.2552940001181],
+ [121.242144999892, 31.2535630003322],
+ [121.243784999978, 31.2532369996878],
+ [121.24253499989, 31.2529869998502],
+ [121.241485000033, 31.2508389997201],
+ [121.237248999842, 31.2493630000025],
+ [121.237562999933, 31.2482439996609],
+ [121.236858999843, 31.2481230003762],
+ [121.236201000076, 31.245823999578],
+ [121.236997999958, 31.2447599999741],
+ [121.235505000355, 31.2430819999344],
+ [121.236964000189, 31.2422399997762],
+ [121.24349099991, 31.2429360003961],
+ [121.244366999837, 31.2393389999949],
+ [121.245269000064, 31.2385539997673],
+ [121.246648999852, 31.2402159999685],
+ [121.248366999937, 31.2389849998579],
+ [121.249634999955, 31.2366110000976],
+ [121.24945199961, 31.235045999873],
+ [121.252732999828, 31.2327249998589],
+ [121.253583000355, 31.2288890001273],
+ [121.252160000384, 31.2283470003139],
+ [121.254042999985, 31.2238780001696],
+ [121.253019000427, 31.2222349999453],
+ [121.254684999913, 31.2200000002998],
+ [121.255249999888, 31.2201730001839],
+ [121.256785999674, 31.2171080000342],
+ [121.254971999658, 31.2148039999047],
+ [121.259416000448, 31.2109450000118],
+ [121.260249000191, 31.208758999928],
+ [121.25862599999, 31.2077270000011],
+ [121.260352999591, 31.2053429997796],
+ [121.262287999791, 31.2052869998952],
+ [121.272946000258, 31.1955980000477],
+ [121.279585999794, 31.1964089996757],
+ [121.281381999879, 31.1973499999026],
+ [121.286651000044, 31.2015070000481],
+ [121.287891999716, 31.2030439998807],
+ [121.287969999716, 31.2045219996906],
+ [121.289306000172, 31.2041590000379],
+ [121.290183000145, 31.2051659997111],
+ [121.29286499972, 31.2035400002708],
+ [121.294800999966, 31.2005079998444],
+ [121.295989999939, 31.2001789999609],
+ [121.295877000123, 31.1991619998265],
+ [121.297178999911, 31.1988519999199],
+ [121.296988000096, 31.1978670003618],
+ [121.299321999811, 31.1959740002999],
+ [121.299340999787, 31.1946310004204],
+ [121.301249999688, 31.1936110001476],
+ [121.303158999588, 31.1906789998361],
+ [121.304296999907, 31.1901770000686],
+ [121.304149000276, 31.1892460003027],
+ [121.306180000407, 31.187071999873],
+ [121.307741999594, 31.1837090003701],
+ [121.308827000166, 31.1831960000954],
+ [121.312456000244, 31.1777600003238],
+ [121.313965999731, 31.1723429996298],
+ [121.317377999695, 31.1679830000155],
+ [121.317784999578, 31.1662120001837],
+ [121.319304000379, 31.1651960000954],
+ [121.317966999877, 31.1643669996374],
+ [121.316279000276, 31.1602939997683],
+ [121.314937999589, 31.1597629995628],
+ [121.313547000194, 31.1595440002554],
+ [121.311710000017, 31.162173000084],
+ [121.294143000199, 31.1567219996206],
+ [121.285502000117, 31.1549050003655],
+ [121.285957999562, 31.1542869997453],
+ [121.282676000197, 31.1543469998143],
+ [121.280305999722, 31.155305999972],
+ [121.280393000137, 31.1546769997438],
+ [121.27868300042, 31.1541980001376],
+ [121.279378000095, 31.1528799996124],
+ [121.278622000305, 31.1526089997056],
+ [121.275836999578, 31.1525790001208],
+ [121.273830999701, 31.1548879995815],
+ [121.273319000372, 31.1543180002756],
+ [121.274282999861, 31.1503030003832],
+ [121.272989999589, 31.1497320001317],
+ [121.273354000187, 31.1485339997444],
+ [121.2719740004, 31.1479050004155],
+ [121.27257400019, 31.146228000422],
+ [121.274846999789, 31.1477539997474],
+ [121.277338000448, 31.1440679997385],
+ [121.279733000278, 31.1446660003357],
+ [121.283032000426, 31.1419989996542],
+ [121.27654799999, 31.135300000095],
+ [121.261307999565, 31.1384580000367],
+ [121.261151000418, 31.1368549998584],
+ [121.259199000334, 31.1374900003633],
+ [121.256985999904, 31.1360149997925],
+ [121.256196000345, 31.1343359997067],
+ [121.257541000317, 31.131511999879],
+ [121.257488999718, 31.1308499999276],
+ [121.256395999676, 31.1306980001127],
+ [121.257186000134, 31.1292469997493],
+ [121.2541040001, 31.1290689996347],
+ [121.253140999757, 31.130824999674],
+ [121.253626999686, 31.1344179998908],
+ [121.242570999752, 31.1362279997225],
+ [121.241060000219, 31.1328359997816],
+ [121.235002999689, 31.1325570004053],
+ [121.234923999643, 31.1320240001075],
+ [121.24090400022, 31.1313650002946],
+ [121.240113999761, 31.1274689995947],
+ [121.235435999872, 31.1283079996145],
+ [121.232406999583, 31.12777400017],
+ [121.23157399984, 31.1214400003558],
+ [121.232024999954, 31.119862000431],
+ [121.231391000394, 31.1210320004265],
+ [121.230280999569, 31.1210650001497],
+ [121.22946499971, 31.1193920003406],
+ [121.226801000066, 31.1193409997874],
+ [121.219666000186, 31.1172100004412],
+ [121.216870999897, 31.1171409999573],
+ [121.216724000312, 31.1187919996511],
+ [121.218382000329, 31.1260279996925],
+ [121.223563000033, 31.1411520001647],
+ [121.216116000153, 31.1404399997062],
+ [121.203836000431, 31.1377259995553],
+ [121.20171699984, 31.1403399995913],
+ [121.197446999879, 31.1402000003298],
+ [121.196110000276, 31.1391569998957],
+ [121.195893000162, 31.1398620000313],
+ [121.197516000363, 31.1416620003011],
+ [121.197169999696, 31.1429680002731],
+ [121.191223999788, 31.1400050003306],
+ [121.177466000256, 31.1454739998253],
+ [121.177161999727, 31.1337790001008],
+ [121.175364999595, 31.1338659996163],
+ [121.175417000194, 31.1313959999255],
+ [121.175843000054, 31.1294209996794],
+ [121.177353000441, 31.1289630001424],
+ [121.177317999726, 31.1262989995992],
+ [121.179365999741, 31.1262979995531],
+ [121.179471000087, 31.1231229997267],
+ [121.180633999759, 31.1226830001204],
+ [121.179635999602, 31.1224700001904],
+ [121.179331999972, 31.120704999736],
+ [121.174800999666, 31.1191720000878],
+ [121.173933000108, 31.1206540000821],
+ [121.17268300002, 31.1203539997373],
+ [121.171911000392, 31.1210050000807],
+ [121.169809999732, 31.1198600003388],
+ [121.17070399959, 31.117230999611],
+ [121.168480999599, 31.116085999869],
+ [121.170409000375, 31.1108619999814],
+ [121.165983000415, 31.111040000096],
+ [121.166050999954, 31.1098059998471],
+ [121.161927000431, 31.1102980000527],
+ [121.162274000245, 31.1062719996531],
+ [121.160668999974, 31.1062460002528],
+ [121.160972999604, 31.1034170001944],
+ [121.160043999931, 31.1033380001487],
+ [121.16012199993, 31.1026370001974],
+ [121.155034000019, 31.1025069995984],
+ [121.154723000066, 31.1031040001495],
+ [121.14985200027, 31.1038040000546],
+ [121.149791000155, 31.1008509996739],
+ [121.152248000145, 31.100911999789],
+ [121.15218700003, 31.0951280001572],
+ [121.150833999689, 31.0951290002033],
+ [121.150616999575, 31.092442000398],
+ [121.148922999697, 31.0921119995692],
+ [121.148315999584, 31.0939980002076],
+ [121.146604999821, 31.0936110003474],
+ [121.14490399962, 31.097254000172],
+ [121.141292000326, 31.095907000108],
+ [121.139921000054, 31.099401000256],
+ [121.137323999903, 31.098834000189],
+ [121.13703900025, 31.1006290002283],
+ [121.13118700018, 31.1000139997464],
+ [121.130197000391, 31.1012409996724],
+ [121.128730000189, 31.1010049995811],
+ [121.127357999872, 31.103980000077],
+ [121.126100000315, 31.1024539998523],
+ [121.12310399975, 31.1052310002106],
+ [121.120915999574, 31.1052920003256],
+ [121.1198570002, 31.1076829999705],
+ [121.119119000342, 31.1072139999262],
+ [121.116358999868, 31.1096560001243],
+ [121.116037000307, 31.1109860003037],
+ [121.114898999989, 31.1102210000991],
+ [121.113866000016, 31.1112829996108],
+ [121.113128000157, 31.1107880001661],
+ [121.111520999794, 31.1128829996508],
+ [121.109767999893, 31.111708000324],
+ [121.107987999647, 31.1138399997163],
+ [121.10562600044, 31.1110339998193],
+ [121.10612199993, 31.1095539999172],
+ [121.104150999869, 31.1090609996655],
+ [121.1000260003, 31.1052880001412],
+ [121.101042000388, 31.1053619999564],
+ [121.101781000293, 31.1038830001004],
+ [121.100424999814, 31.1036849999628],
+ [121.101095000134, 31.1027730001739],
+ [121.098940999727, 31.1045480001901],
+ [121.098055000238, 31.1038579998469],
+ [121.099235999842, 31.10245199976],
+ [121.096006000177, 31.1003309999757],
+ [121.094599000044, 31.1019829997157],
+ [121.093366999887, 31.1012419997186],
+ [121.095294999765, 31.0974199997332],
+ [121.094920999604, 31.0960640001535],
+ [121.093002000142, 31.0954469995794],
+ [121.096231999807, 31.09059999999],
+ [121.095119999788, 31.0897290002932],
+ [121.096084000177, 31.0885709999517],
+ [121.09480000032, 31.0878540001621],
+ [121.09490399972, 31.0854869998252],
+ [121.096085000223, 31.0828499996279],
+ [121.097534999641, 31.0822079996995],
+ [121.101684000316, 31.0830499998577],
+ [121.102665999736, 31.084034000269],
+ [121.107997000062, 31.0795470001939],
+ [121.108908999851, 31.0797689996397],
+ [121.110662999798, 31.0783390002447],
+ [121.11157400044, 31.0787339995745],
+ [121.112529000413, 31.0775519999249],
+ [121.113788000016, 31.0778740003848],
+ [121.11694800005, 31.0721210003839],
+ [121.117651000094, 31.0691150002571],
+ [121.121637000447, 31.068588000236],
+ [121.121810000331, 31.0617539998473],
+ [121.12317400028, 31.0616959998706],
+ [121.12322599998, 31.0608640001735],
+ [121.121550000033, 31.0602030002683],
+ [121.121298000103, 31.0593240002025],
+ [121.116115000307, 31.059208000249],
+ [121.115402999849, 31.0605209996445],
+ [121.113406000387, 31.0603469997143],
+ [121.113615000132, 31.0580059996772],
+ [121.104959000258, 31.058327000091],
+ [121.104037000008, 31.0585569999056],
+ [121.10379499964, 31.059875000431],
+ [121.09721300008, 31.0592050001107],
+ [121.097499999825, 31.0573879999563],
+ [121.096543999806, 31.0555739999402],
+ [121.095207000203, 31.0559949995696],
+ [121.09490399972, 31.0579800002769],
+ [121.093740000001, 31.0585549998135],
+ [121.090031999877, 31.058265999976],
+ [121.089814999762, 31.0599480002001],
+ [121.088408999676, 31.0603689998295],
+ [121.089111999719, 31.0633509997489],
+ [121.089936999993, 31.063827000116],
+ [121.08825199963, 31.0654139995565],
+ [121.088330999676, 31.0664640003134],
+ [121.086072999869, 31.0669609998503],
+ [121.083608000409, 31.0665980001976],
+ [121.081342000233, 31.0647789999509],
+ [121.081923000046, 31.0630999998651],
+ [121.078579999667, 31.0618760000774],
+ [121.079822000285, 31.0607090002202],
+ [121.076374999607, 31.0588360001813],
+ [121.081271999703, 31.0521609999303],
+ [121.082556999606, 31.0548829995508],
+ [121.085326999641, 31.0538699996009],
+ [121.085039999896, 31.0522660002757],
+ [121.086611000397, 31.0507179999358],
+ [121.085656000424, 31.0500679996385],
+ [121.09161299994, 31.0467470002739],
+ [121.090422999922, 31.0441609997304],
+ [121.08850399956, 31.0426559995748],
+ [121.089182000249, 31.0418959996007],
+ [121.091266000126, 31.0424160001983],
+ [121.091785999824, 31.0404240000676],
+ [121.093166999657, 31.0408119999739],
+ [121.095684999763, 31.035353000041],
+ [121.095336999903, 31.0331439997958],
+ [121.09236899973, 31.0333969997718],
+ [121.091812000124, 31.0283879999063],
+ [121.086585000098, 31.0278860001388],
+ [121.084917999666, 31.0298469997393],
+ [121.082972999904, 31.0292760003871],
+ [121.080941999774, 31.0274509998638],
+ [121.088434999975, 31.0221570003453],
+ [121.097455999595, 31.0137189997321],
+ [121.098185999984, 31.0113429998796],
+ [121.099608999955, 31.0099559997696],
+ [121.099514000071, 30.9970489999114],
+ [121.095554000017, 30.9969079997045],
+ [121.094572999744, 30.9750509999038],
+ [121.090961999597, 30.9762250000837],
+ [121.09118700008, 30.9703970002215],
+ [121.092975999843, 30.9684549996985],
+ [121.092897999843, 30.9676209999093],
+ [121.083442999995, 30.9661579998918],
+ [121.083590999625, 30.9641400003608],
+ [121.076654999928, 30.9642700000605],
+ [121.075753999747, 30.9638339997393],
+ [121.076148999976, 30.9621720004375],
+ [121.073952000285, 30.9620189996771],
+ [121.074534000144, 30.9602790003756],
+ [121.072059000223, 30.9595710001016],
+ [121.071911999739, 30.9578069996933],
+ [121.064159000138, 30.956921000204],
+ [121.058809999882, 30.9580049998309],
+ [121.057749999563, 30.9575759998326],
+ [121.055787999916, 30.9585349999903],
+ [121.054955000173, 30.9612090000953],
+ [121.053592000271, 30.9615359998866],
+ [121.053314000041, 30.9636540004318],
+ [121.052349999653, 30.9639319997621],
+ [121.052811000228, 30.9673629997027],
+ [121.048721999621, 30.9664780002595],
+ [121.046498999629, 30.971397999618],
+ [121.042895999851, 30.9710689997346],
+ [121.042184000291, 30.9722809998683],
+ [121.038606999913, 30.9714730003787],
+ [121.041428999649, 30.9654949998944],
+ [121.038120999984, 30.962492999952],
+ [121.039415000302, 30.9612819998645],
+ [121.039006000327, 30.9595659998711],
+ [121.035907000408, 30.9585560000594],
+ [121.031765000055, 30.959160000034],
+ [121.028735999767, 30.9491970001415],
+ [121.023448999672, 30.9479320002616],
+ [121.023579000271, 30.9460370001075],
+ [121.015036000211, 30.9432949995646],
+ [121.014629000328, 30.944198999884],
+ [121.012509999737, 30.9434690003941],
+ [121.013274999941, 30.9413539999871],
+ [121.01087800002, 30.9424280000522],
+ [121.009420000233, 30.946314000291],
+ [121.007198000288, 30.9457579998319],
+ [121.006954999873, 30.9466260002897],
+ [121.007858000147, 30.9470059998271],
+ [121.006399000314, 30.9469370002424],
+ [121.006676999644, 30.9493310000257],
+ [121.008656000074, 30.9497470003238],
+ [121.008933000258, 30.948950999589],
+ [121.010947999651, 30.9503029998836],
+ [121.01059999979, 30.9518629998776],
+ [121.008621000259, 30.9516219995557],
+ [121.007232000057, 30.9521060002917],
+ [121.006850999574, 30.953112999965],
+ [121.004429000298, 30.9513090004101],
+ [121.005669999971, 30.9507889998125],
+ [120.998282000114, 30.9491940000032],
+ [120.997691999886, 30.9532170002644],
+ [120.99102600005, 30.9525599996443],
+ [120.990452999706, 30.9570170001345],
+ [120.988195999945, 30.9572259998801],
+ [120.987353999787, 30.9604160003981],
+ [120.990417999891, 30.9608889997276],
+ [120.988265999576, 30.9650289999884],
+ [120.989333000218, 30.9673279998873],
+ [120.988848000335, 30.9684900004132],
+ [120.987779999647, 30.9682480000452],
+ [120.987102999904, 30.9705720001977],
+ [120.988117999946, 30.9708630001274],
+ [120.987519000202, 30.9727030004432],
+ [120.988777999805, 30.9729219997506],
+ [120.988804000105, 30.974302000437],
+ [120.994758000381, 30.9751000003648],
+ [120.994984000012, 30.9760360003612],
+ [120.996146999684, 30.9761019998075],
+ [120.996208999846, 30.9791680000033],
+ [120.997988000046, 30.979782000439],
+ [120.997631999817, 30.9816549995786],
+ [120.996468000098, 30.9826230001514],
+ [120.994984000012, 30.9822659998761],
+ [120.992778999951, 30.9913970000716],
+ [120.991859999839, 30.9913970000716],
+ [120.990253000376, 30.9940940003379],
+ [120.991000999796, 30.9948969995969],
+ [120.990488000421, 30.9974230000714],
+ [120.9861819997, 30.9967339997743],
+ [120.985514000371, 30.9988510002735],
+ [120.987710000017, 30.9992859996492],
+ [120.987285000203, 31.0034710001866],
+ [120.986320999814, 31.0037620001162],
+ [120.986207999999, 31.0054309997409],
+ [120.987754000247, 31.0055919999709],
+ [120.987164000019, 31.0073380004484],
+ [120.987753000201, 31.007457999687],
+ [120.986721000274, 31.0096429997247],
+ [120.987598000248, 31.0103200003678],
+ [120.984733000328, 31.0150879999113],
+ [120.986086999815, 31.0159829998157],
+ [120.979550999679, 31.0166380003435],
+ [120.97868300012, 31.0182789995762],
+ [120.958963999989, 31.0188430004042],
+ [120.958624999644, 31.0198039997549],
+ [120.960612000444, 31.0219869997003],
+ [120.960047999616, 31.0230069999731],
+ [120.956246999699, 31.0239149995776],
+ [120.954077000353, 31.0308209996894],
+ [120.950596999952, 31.032314000191],
+ [120.947993000377, 31.0325209998443],
+ [120.946882000404, 31.0313499998027],
+ [120.944920999904, 31.0322279998224],
+ [120.943982999816, 31.0307069998282],
+ [120.945242000318, 31.0300039997848],
+ [120.944539000275, 31.0273410001871],
+ [120.946968999919, 31.0262860000989],
+ [120.945771999578, 31.0199090001003],
+ [120.932137000322, 31.0194119996641],
+ [120.931373000164, 31.0188279997125],
+ [120.935911999939, 31.0123300004292],
+ [120.935616999825, 31.0116869995554],
+ [120.933915999624, 31.011305999972],
+ [120.929620000263, 31.012330999576],
+ [120.927214999972, 31.0140869996154],
+ [120.922833000243, 31.0143809996835],
+ [120.922007999969, 31.0127419996436],
+ [120.913964000438, 31.015114000211],
+ [120.906881000258, 31.0128900001734],
+ [120.905806000147, 31.0149689998195],
+ [120.905917999916, 31.0192710003564],
+ [120.897221999995, 31.01982599987],
+ [120.896424000068, 31.022752999951],
+ [120.897837999624, 31.0399580001616],
+ [120.895598999794, 31.0419159996237],
+ [120.892882999551, 31.0478889998775],
+ [120.893074000265, 31.0505320003516],
+ [120.891303000433, 31.0526330001129],
+ [120.890426999606, 31.0561969998917],
+ [120.890479000206, 31.0609620001962],
+ [120.894722999867, 31.0728099997817],
+ [120.89547799961, 31.080652999936],
+ [120.899261999642, 31.080358999868],
+ [120.900883999797, 31.0816780004394],
+ [120.89753500004, 31.0863819997296],
+ [120.897969000269, 31.0879469999541],
+ [120.895157000096, 31.0892230003412],
+ [120.892552999621, 31.0889329995583],
+ [120.891277000134, 31.092990999635],
+ [120.888553000421, 31.095107000088],
+ [120.888204999661, 31.0997730003238],
+ [120.887076999804, 31.0994540000021],
+ [120.886876999574, 31.0965849998979],
+ [120.88612199983, 31.0962659995762],
+ [120.874474999622, 31.0976890004471],
+ [120.873928999624, 31.0980289999384],
+ [120.87481299992, 31.1006539995824],
+ [120.871854000162, 31.1001289996536],
+ [120.872479000206, 31.1022090002452],
+ [120.869728000147, 31.1027130001049],
+ [120.868382000129, 31.1011499999726],
+ [120.865649000001, 31.1012019996726],
+ [120.865413999956, 31.099481000348],
+ [120.861578000225, 31.099878999816],
+ [120.860328000137, 31.1006209998593],
+ [120.859824000277, 31.1025539999672],
+ [120.858582999706, 31.1023690004291],
+ [120.857889000077, 31.1032970000566],
+ [120.855589000132, 31.1025289997136],
+ [120.854372999814, 31.1030850001727],
+ [120.852619999913, 31.1050699999806],
+ [120.852671999613, 31.1061339995845],
+ [120.853731999932, 31.1107609998203],
+ [120.856040000246, 31.1115660000709],
+ [120.858071000376, 31.1147450000817],
+ [120.861795000339, 31.1169920002806],
+ [120.866428999998, 31.1219610001001],
+ [120.866853999812, 31.1260509998538],
+ [120.868182999946, 31.1294049998409],
+ [120.872270999607, 31.1337380000087],
+ [120.877139000165, 31.1369729999041],
+ [120.895069999681, 31.1383129996453],
+ [120.902256000114, 31.1365330002978],
+ [120.912766000051, 31.1384450003366],
+ [120.926166000161, 31.1436490002013],
+ [120.948426999706, 31.140455000398],
+ [120.979593999863, 31.1338339999392],
+ [120.986912000089, 31.1352790000259],
+ [121.014046000423, 31.1361159999535],
+ [121.018353000291, 31.1403160002832],
+ [121.017814999762, 31.1424669996524],
+ [121.021208999796, 31.1427680000432],
+ [121.022719000182, 31.1446499995978],
+ [121.022251000184, 31.1457570002854],
+ [121.023891000269, 31.1458589995932],
+ [121.024300000245, 31.1432400002259],
+ [121.028596999652, 31.1441800004067],
+ [121.031617999571, 31.1422989999989],
+ [121.031756999686, 31.1393420003331],
+ [121.033597000002, 31.1398129995703],
+ [121.034135999677, 31.138875000381],
+ [121.036253000176, 31.139544999802],
+ [121.040246999999, 31.1474740003249],
+ [121.03702599985, 31.1488829996508],
+ [121.036957000265, 31.151771999778],
+ [121.040724999559, 31.1535170002094],
+ [121.040889999974, 31.1559700000155],
+ [121.044588999683, 31.1565400002209],
+ [121.045725999955, 31.1526449995671],
+ [121.047340999787, 31.152410999568],
+ [121.051274000395, 31.1525790001208],
+ [121.051099999565, 31.1537209997244],
+ [121.052818999697, 31.1546949996745],
+ [121.057984999608, 31.1550319999269],
+ [121.058124999769, 31.1540260002997],
+ [121.05949600004, 31.1540590000229],
+ [121.059564999625, 31.1527469997743],
+ [121.061483999987, 31.1528500000275],
+ [121.061144999642, 31.1504999995753],
+ [121.064539999721, 31.1505999996903],
+ [121.063194999749, 31.1541929999071],
+ [121.066319999968, 31.1554019999024],
+ [121.065980999624, 31.1570149996426],
+ [121.066823999828, 31.1573170000796],
+ [121.067458000287, 31.1554029999485],
+ [121.06843899966, 31.1557400002009],
+ [121.06843899966, 31.1581570001455],
+ [121.072433000383, 31.1603410001371],
+ [121.071459999579, 31.1624239999677],
+ [121.072467000152, 31.1625919996212],
+ [121.072199000384, 31.164504999706],
+ [121.069107999934, 31.1635980001477],
+ [121.068534999591, 31.1651430003492],
+ [121.072771999828, 31.1664199998831],
+ [121.072702000197, 31.167897999693],
+ [121.070874000435, 31.1721980001377],
+ [121.067795999686, 31.1714899998636],
+ [121.067327999687, 31.1723970003214],
+ [121.068169999846, 31.1735070002479],
+ [121.067935999847, 31.174581000313],
+ [121.070835999582, 31.1753230003562],
+ [121.069637000048, 31.1781029999535],
+ [121.066815000312, 31.1813549997335],
+ [121.066633000013, 31.1833459998181],
+ [121.070991999581, 31.1847240004124],
+ [121.070392999837, 31.1862590001528],
+ [121.064887999582, 31.184772999974],
+ [121.064166999607, 31.1867759997127],
+ [121.067092999642, 31.1878360000314],
+ [121.066876000427, 31.1903099999066],
+ [121.065756000039, 31.1906149995826],
+ [121.066024999854, 31.1931699995959],
+ [121.067969999616, 31.1934059996872],
+ [121.067597000401, 31.1950410004418],
+ [121.06552200004, 31.1954830001404],
+ [121.065008999766, 31.1971840003414],
+ [121.06221300033, 31.1968429999046],
+ [121.062021999616, 31.1990649998499],
+ [121.064627000136, 31.1983940003828],
+ [121.058054000092, 31.2265360004361],
+ [121.058228000022, 31.2288340002889],
+ [121.060137999969, 31.2291400000111],
+ [121.060069000384, 31.2326459998131],
+ [121.06258699959, 31.2327829998356],
+ [121.062795000189, 31.2347899997587],
+ [121.059998999854, 31.2348240004274],
+ [121.059149000226, 31.2370030001883],
+ [121.058028999838, 31.2365600004437],
+ [121.057420999679, 31.2371050003955],
+ [121.05666499989, 31.2396889999474],
+ [121.05932200011, 31.2403030003832],
+ [121.058982999766, 31.244080000092],
+ [121.060137999969, 31.2440119996541],
+ [121.060477000313, 31.2450000002499],
+ [121.059590999925, 31.2454429999945],
+ [121.059763999809, 31.2479939998233],
+ [121.057690000393, 31.2482330000529],
+ [121.057073999865, 31.2471090003801],
+ [121.053108000434, 31.2486230000515],
+ [121.054537999829, 31.249104999796],
+ [121.056404999591, 31.2483520001447],
+ [121.057317000279, 31.2548280002121],
+ [121.057333000118, 31.2570150003421],
+ [121.05665700042, 31.2575580002016],
+ [121.057507000048, 31.2578890001773],
+ [121.058072000023, 31.2595549996636],
+ [121.057367999933, 31.2598000001699],
+ [121.058349000206, 31.2685150000672],
+ [121.057690000393, 31.2685659997211],
+ [121.057881000208, 31.2693030004332],
+ [121.074568999959, 31.2717130000549],
+ [121.077538000179, 31.273364999795],
+ [121.0799350001, 31.2775320004015],
+ [121.076747999721, 31.2790840000266],
+ [121.077806999993, 31.2827439997358],
+ [121.080081999685, 31.289420000033],
+ [121.082712999605, 31.2924739996754],
+ [121.082286999745, 31.2935390002247],
+ [121.084172000338, 31.2938959996007],
+ [121.085518000355, 31.2937180003855],
+ ],
+];
+
+
+export default district_boundary_shanghai
\ No newline at end of file
diff --git a/bigScreen/src/utils/district_extent.js b/bigScreen/src/utils/district_extent.js
new file mode 100644
index 0000000..e6bd9db
--- /dev/null
+++ b/bigScreen/src/utils/district_extent.js
@@ -0,0 +1,77 @@
+锘縱ar district_extent_jinshan = [
+ 120.984811000327, 30.6777900000085, 121.474303000383, 30.9532170002644,
+];
+var district_extent_chongming = [
+ 121.113839999716, 31.2574709997868, 122.242919000312, 31.8746250000437,
+];
+var district_extent_pudong = [
+ 121.452893999658, 30.7795099999865, 122.008292000176, 31.3968069996434,
+];
+var district_extent_fengxian = [
+ 121.346588000436, 30.7585639999287, 121.789478999956, 31.0170559998346,
+];
+var district_extent_jiading = [
+ 121.102127000061, 31.2290870002649, 121.376248000345, 31.4986410003819,
+];
+var district_extent_putuo = [
+ 121.321526000325, 31.220134000184, 121.446877000074, 31.3045719999978,
+];
+var district_extent_baoshan = [
+ 121.29542600001,
+ 31.26706499975,
+ ,
+ 121.52113499988,
+ 31.513867000162,
+];
+var district_extent_huangpu = [
+ 121.452183000145, 31.1898569997009, 121.505510999733, 31.2462159996687,
+];
+var district_extent_yangpu = [
+ 121.48091699962, 31.2490109999578, 121.565293000172, 31.3488450001967,
+];
+var district_extent_songjiang = [
+ 121.020714000351, 30.8966460004127, 121.367404999941, 31.1649020000273,
+];
+var district_extent_hongkou = [
+ 121.455481000248, 31.2438830000005, 121.513281000118, 31.3179269998312,
+];
+var district_extent_changning = [
+ 121.327256000164, 31.1797080002241, 121.434851000373, 31.2458679998084,
+];
+var district_extent_jingan = [
+ 121.413996000015, 31.2162829997607, 121.47849600039, 31.3232820003641,
+];
+var district_extent_minhang = [
+ 121.235505000355, 30.9780070004228, 121.57123900008, 31.2616370003473,
+];
+var district_extent_xuhui = [
+ 121.386863999774, 31.1027190003816, 121.471473000279, 31.2221010000612,
+];
+var district_extent_qingpu = [
+ 120.852619999913, 30.9413539999871, 121.319304000379, 31.2938959996007,
+];
+var district_extent_shanghai = [
+ 120.852619999913, 30.6777900000085, 122.242919000312, 31.8746250000437,
+];
+
+let district_extent = new Map();
+district_extent.set(310101, district_extent_huangpu);
+district_extent.set(310104, district_extent_xuhui);
+district_extent.set(310105, district_extent_changning);
+district_extent.set(310106, district_extent_jingan);
+district_extent.set(310107, district_extent_putuo);
+district_extent.set(310109, district_extent_hongkou);
+district_extent.set(310110, district_extent_yangpu);
+district_extent.set(310112, district_extent_minhang);
+district_extent.set(310113, district_extent_baoshan);
+district_extent.set(310114, district_extent_jiading);
+district_extent.set(310115, district_extent_pudong);
+district_extent.set(310116, district_extent_jinshan);
+district_extent.set(310117, district_extent_songjiang);
+district_extent.set(310118, district_extent_qingpu);
+district_extent.set(310120, district_extent_fengxian);
+district_extent.set(310151, district_extent_chongming);
+district_extent.set(310000, district_extent_shanghai);
+
+
+export default district_extent_shanghai
\ No newline at end of file
diff --git a/bigScreen/src/utils/filterOptions.js b/bigScreen/src/utils/filterOptions.js
new file mode 100644
index 0000000..16fee46
--- /dev/null
+++ b/bigScreen/src/utils/filterOptions.js
@@ -0,0 +1,249 @@
+/**
+ * 鏌ヨ瀛楁鍚�:{
+ * type:缁勪欢鏌ヨ绫诲瀷,
+ * sql_type:鏁版嵁搴撴煡璇㈢被鍨�,
+ * meltiple:鏄惁澶氶��(select鏃剁敓鏁�),
+ * width:缁勪欢瀹藉害,
+ * placeholder:placeholder,
+ * options:閫夐」(select鏃剁敓鏁�)
+ * default:榛樿閫夐」
+ * text:label鏂囧瓧
+ * }
+ */
+
+let filterOptions = {
+ Device: {
+ address: {
+ type: "input",
+ text: "鍦板潃",
+ multiple: false,
+ sql_type: "8",
+ width: "140px",
+ placeholder: "璇疯緭鍏ュ湴鍧�"
+ },
+ log_id: {
+ type: 'input',
+ text: '閫昏緫缂栧彿',
+ multiple: false,
+ sql_type: '8',
+ width: '140px',
+ placeholder: '璇疯緭鍏ラ�昏緫缂栧彿'
+ },
+ phy_id: {
+ type: 'input',
+ text: '鐗╃悊缂栧彿',
+ multiple: false,
+ sql_type: '8',
+ width: '140px',
+ placeholder: '璇疯緭鍏ョ墿鐞嗙紪鍙�'
+ }
+ },
+ Cycle: {
+ detail: {
+ type: "input",
+ text: "浠诲姟璇存槑",
+ multiple: false,
+ sql_type: "8",
+ width: "140px",
+ placeholder: "璇疯緭鍏ヨ鏄�"
+ }
+ },
+ TaskRecord: {
+ task_type: {
+ type: "select",
+ text: "浠诲姟绫诲瀷",
+ width: "150px",
+ sql_type: "1",
+ placeholder: "璇烽�夋嫨",
+ options: [
+ { name: "鍛ㄦ湡浠诲姟", id: "鍛ㄦ湡浠诲姟" },
+ { name: "鍗虫椂浠诲姟", id: "鍗虫椂浠诲姟" }
+ ]
+ },
+ task_id: {
+ type: "input",
+ text: "浠诲姟鍙�",
+ width: "150px",
+ sql_type: "8",
+ placeholder: "璇疯緭鍏ヤ换鍔″彿"
+ },
+ start_time: {
+ sql_type: "4",
+ type: "daterange",
+ text: "鎵ц鏃堕棿",
+ width: "300px"
+ }
+ },
+ RadioRecord: {
+ result: {
+ type: "select",
+ sql_type: "1",
+ text: "鐢靛彴绫诲瀷",
+ width: "120px",
+ placeholder: "璇烽�夋嫨",
+ options: [{ name: '鍚堟硶鐢靛彴', id: '1' }, { name: '鍖哄煙闈炴硶', id: '2' }, { name: '鏃堕棿闈炴硶', id: '3' }, { name: '棰戠巼闈炴硶', id: '4' }, { name: '鍐呭闈炴硶', id: '5' }]
+ },
+ frequency: {
+ type: "input",
+ text: "棰戠巼",
+ sql_type: "8",
+ width: "120px",
+ placeholder: "璇疯緭鍏ラ鐜�"
+ },
+ upload_day: {
+ type: "daterange",
+ text: "涓婁紶鏃堕棿",
+ width: "300px",
+ sql_type: "4"
+ }
+ },
+ WhiteList: {
+ name: {
+ type: "input",
+ sql_type: "8",
+ text: "鐢靛彴鍚嶇О",
+ width: "170px",
+ placeholder: "璇疯緭鍏ョ數鍙板悕绉�",
+ options: null
+ }
+ },
+ Keyword: {
+ name: {
+ type: "input",
+ sql_type: "8",
+ text: "鍏抽敭璇�",
+ width: "170px",
+ placeholder: "璇疯緭鍏ュ叧閿瘝",
+ options: null
+ }
+ },
+ roleMembers: {
+ role_key: {
+ type: "select",
+ sql_type: "1",
+ text: "鐢ㄦ埛鏉冮檺",
+ width: "170px",
+ placeholder: "璇烽�夋嫨",
+ options: null
+ },
+ user_name: {
+ type: "input",
+ sql_type: "8",
+ text: "鐢ㄦ埛鍚嶇О",
+ width: "170px",
+ placeholder: "璇疯緭鍏ョ敤鎴峰悕绉�"
+ }
+ },
+ systemLog: {
+ log_type: {
+ type: "select",
+ sql_type: "1",
+ text: "鏃ュ織绫诲瀷",
+ width: "150px",
+ placeholder: "璇烽�夋嫨",
+ options: [
+ { name: "鍝嶅簲鏃ュ織", id: "鍝嶅簲鏃ュ織" },
+ { name: "閿欒鏃ュ織", id: "閿欒鏃ュ織" },
+ { name: "鐧诲叆鐧诲嚭", id: "鐧诲叆鐧诲嚭" }
+ ]
+ },
+ create_day: {
+ type: "date",
+ sql_type: "1",
+ text: "璁板綍鏃ユ湡",
+ width: "150px",
+ placeholder: "璇烽�夋嫨鏃ユ湡"
+ },
+ response_status: {
+ type: "select",
+ sql_type: "1",
+ text: "鍝嶅簲鐘舵��",
+ width: "150px",
+ options: [
+ { name: "200", id: "200" },
+ { name: "201", id: "201" },
+ { name: "400", id: "400" },
+ { name: "403", id: "403" },
+ { name: "404", id: "404" },
+ { name: "500", id: "500" },
+ { name: "503", id: "503" },
+ { name: "505", id: "505" }
+ ]
+ },
+ logDes: {
+ type: "input",
+ sql_type: "8",
+ text: "鎻忚堪鏌ヨ",
+ width: "150px",
+ placeholder: "璇锋弿杩板叧閿瘝"
+ }
+ },
+ version: {
+ version_name: {
+ type: "input",
+ sql_type: "8",
+ text: "鐗堟湰鍙�",
+ width: "170px",
+ placeholder: "璇疯緭鍏ョ増鏈彿",
+ options: null
+ }
+ },
+ InforRelease: {
+ type: {
+ type: "radioGroup",
+ sql_type: "1",
+ width: "200px",
+ placeholder: "璇烽�夋嫨",
+ options: [
+ { name: "閫氱煡鐭俊", id: "SMS" },
+ { name: "閭欢閫氱煡", id: "EMAIL" }
+ ]
+ },
+ send_day: {
+ type: "date",
+ sql_type: "1",
+ text: '鍙戦�佹棩鏈�',
+ width: "150px",
+ placeholder: "璇烽�夋嫨"
+ }
+ },
+ ReportExport: {
+ user_name: {
+ type: "input",
+ sql_type: "8",
+ text: "濮撳悕",
+ width: "170px",
+ placeholder: "璇疯緭鍏ョ敤鎴峰悕",
+ options: null
+ }
+ },
+ frequencyAddress: {
+ frequency: {
+ type: "input",
+ sql_type: "8",
+ text: "骞挎挱棰戠巼",
+ width: "170px",
+ placeholder: "璇疯緭鍏ラ鐜�"
+ }
+ },
+ manageDay: {
+ send_day: {
+ type: "date",
+ sql_type: "1",
+ text: '鍙戦�佹棩鏈�',
+ width: "150px",
+ placeholder: "璇烽�夋嫨"
+ }
+ },
+ dictionary: {
+ prarm_id: {
+ type: "input",
+ sql_type: "8",
+ text: '鍙傛暟ID',
+ width: "150px",
+ placeholder: "璇烽�夋嫨"
+ }
+ }
+};
+
+export default filterOptions;
diff --git a/bigScreen/src/utils/kriging.js b/bigScreen/src/utils/kriging.js
new file mode 100644
index 0000000..281062f
--- /dev/null
+++ b/bigScreen/src/utils/kriging.js
@@ -0,0 +1,580 @@
+// Extend the Array class
+Array.prototype.max = function () {
+ return Math.max.apply(null, this);
+};
+Array.prototype.min = function () {
+ return Math.min.apply(null, this);
+};
+Array.prototype.mean = function () {
+ var i, sum;
+ for (i = 0, sum = 0; i < this.length; i++) sum += this[i];
+ return sum / this.length;
+};
+Array.prototype.pip = function (x, y) {
+ var i,
+ j,
+ c = false;
+ for (i = 0, j = this.length - 1; i < this.length; j = i++) {
+ if (
+ this[i][1] > y != this[j][1] > y &&
+ x <
+ ((this[j][0] - this[i][0]) * (y - this[i][1])) /
+ (this[j][1] - this[i][1]) +
+ this[i][0]
+ ) {
+ c = !c;
+ }
+ }
+ return c;
+};
+
+// var kriging_default_params = {
+// krigingModel: "exponential", //model杩樺彲閫�'exponential','gaussian','spherical'
+// krigingSigma2: 0,
+// krigingAlpha: 226,
+// canvasAlpha: 0.9, //canvas鍥惧眰閫忔槑搴�
+// // colors: ["#e8f8f5", "#d1f2eb", "#a3e4d7", "#76d7c4", "#48c9b0", "#1abc9c"],
+// colors: [
+// "#f1c40f",
+// "#f4d03f",
+// "#f7dc6f",
+// "#f9e79f",
+// "#fcf3cf",
+// "#fef9e7",
+// "#eafaf1",
+// "#d5f5e3",
+// "#abebc6",
+// "#82e0aa",
+// "#58d68d",
+// "#2ecc71",
+// "#28b463",
+// "#239b56",
+// "#1d8348",
+// "#186a3b",
+// "#145a32",
+// "#196f3d",
+// "#1e8449",
+// ],
+// };
+
+var kriging = (function () {
+ var kriging = {};
+ var createArrayWithValues = function (value, n) {
+ var array = [];
+ for (var i = 0; i < n; i++) {
+ array.push(value);
+ }
+ return array;
+ };
+ // Matrix algebra
+ kriging_matrix_diag = function (c, n) {
+ var Z = createArrayWithValues(0, n * n);
+ for (i = 0; i < n; i++) Z[i * n + i] = c;
+ return Z;
+ };
+ kriging_matrix_transpose = function (X, n, m) {
+ var i,
+ j,
+ Z = Array(m * n);
+ for (i = 0; i < n; i++) for (j = 0; j < m; j++) Z[j * n + i] = X[i * m + j];
+ return Z;
+ };
+ kriging_matrix_scale = function (X, c, n, m) {
+ var i, j;
+ for (i = 0; i < n; i++) for (j = 0; j < m; j++) X[i * m + j] *= c;
+ };
+ kriging_matrix_add = function (X, Y, n, m) {
+ var i,
+ j,
+ Z = Array(n * m);
+ for (i = 0; i < n; i++)
+ for (j = 0; j < m; j++) Z[i * m + j] = X[i * m + j] + Y[i * m + j];
+ return Z;
+ };
+ // Naive matrix multiplication
+ kriging_matrix_multiply = function (X, Y, n, m, p) {
+ var i,
+ j,
+ k,
+ Z = Array(n * p);
+ for (i = 0; i < n; i++) {
+ for (j = 0; j < p; j++) {
+ Z[i * p + j] = 0;
+ for (k = 0; k < m; k++) Z[i * p + j] += X[i * m + k] * Y[k * p + j];
+ }
+ }
+ return Z;
+ };
+ // Cholesky decomposition
+ kriging_matrix_chol = function (X, n) {
+ var i,
+ j,
+ k,
+ sum,
+ p = Array(n);
+ for (i = 0; i < n; i++) p[i] = X[i * n + i];
+ for (i = 0; i < n; i++) {
+ for (j = 0; j < i; j++) p[i] -= X[i * n + j] * X[i * n + j];
+ if (p[i] <= 0) return false;
+ p[i] = Math.sqrt(p[i]);
+ for (j = i + 1; j < n; j++) {
+ for (k = 0; k < i; k++) X[j * n + i] -= X[j * n + k] * X[i * n + k];
+ X[j * n + i] /= p[i];
+ }
+ }
+ for (i = 0; i < n; i++) X[i * n + i] = p[i];
+ return true;
+ };
+ // Inversion of cholesky decomposition
+ kriging_matrix_chol2inv = function (X, n) {
+ var i, j, k, sum;
+ for (i = 0; i < n; i++) {
+ X[i * n + i] = 1 / X[i * n + i];
+ for (j = i + 1; j < n; j++) {
+ sum = 0;
+ for (k = i; k < j; k++) sum -= X[j * n + k] * X[k * n + i];
+ X[j * n + i] = sum / X[j * n + j];
+ }
+ }
+ for (i = 0; i < n; i++) for (j = i + 1; j < n; j++) X[i * n + j] = 0;
+ for (i = 0; i < n; i++) {
+ X[i * n + i] *= X[i * n + i];
+ for (k = i + 1; k < n; k++) X[i * n + i] += X[k * n + i] * X[k * n + i];
+ for (j = i + 1; j < n; j++)
+ for (k = j; k < n; k++) X[i * n + j] += X[k * n + i] * X[k * n + j];
+ }
+ for (i = 0; i < n; i++) for (j = 0; j < i; j++) X[i * n + j] = X[j * n + i];
+ };
+ // Inversion via gauss-jordan elimination
+ kriging_matrix_solve = function (X, n) {
+ var m = n;
+ var b = Array(n * n);
+ var indxc = Array(n);
+ var indxr = Array(n);
+ var ipiv = Array(n);
+ var i, icol, irow, j, k, l, ll;
+ var big, dum, pivinv, temp;
+
+ for (i = 0; i < n; i++)
+ for (j = 0; j < n; j++) {
+ if (i == j) b[i * n + j] = 1;
+ else b[i * n + j] = 0;
+ }
+ for (j = 0; j < n; j++) ipiv[j] = 0;
+ for (i = 0; i < n; i++) {
+ big = 0;
+ for (j = 0; j < n; j++) {
+ if (ipiv[j] != 1) {
+ for (k = 0; k < n; k++) {
+ if (ipiv[k] == 0) {
+ if (Math.abs(X[j * n + k]) >= big) {
+ big = Math.abs(X[j * n + k]);
+ irow = j;
+ icol = k;
+ }
+ }
+ }
+ }
+ }
+ ++ipiv[icol];
+
+ if (irow != icol) {
+ for (l = 0; l < n; l++) {
+ temp = X[irow * n + l];
+ X[irow * n + l] = X[icol * n + l];
+ X[icol * n + l] = temp;
+ }
+ for (l = 0; l < m; l++) {
+ temp = b[irow * n + l];
+ b[irow * n + l] = b[icol * n + l];
+ b[icol * n + l] = temp;
+ }
+ }
+ indxr[i] = irow;
+ indxc[i] = icol;
+
+ if (X[icol * n + icol] == 0) return false; // Singular
+
+ pivinv = 1 / X[icol * n + icol];
+ X[icol * n + icol] = 1;
+ for (l = 0; l < n; l++) X[icol * n + l] *= pivinv;
+ for (l = 0; l < m; l++) b[icol * n + l] *= pivinv;
+
+ for (ll = 0; ll < n; ll++) {
+ if (ll != icol) {
+ dum = X[ll * n + icol];
+ X[ll * n + icol] = 0;
+ for (l = 0; l < n; l++) X[ll * n + l] -= X[icol * n + l] * dum;
+ for (l = 0; l < m; l++) b[ll * n + l] -= b[icol * n + l] * dum;
+ }
+ }
+ }
+ for (l = n - 1; l >= 0; l--)
+ if (indxr[l] != indxc[l]) {
+ for (k = 0; k < n; k++) {
+ temp = X[k * n + indxr[l]];
+ X[k * n + indxr[l]] = X[k * n + indxc[l]];
+ X[k * n + indxc[l]] = temp;
+ }
+ }
+
+ return true;
+ };
+
+ // Variogram models
+ kriging_variogram_gaussian = function (h, nugget, range, sill, A) {
+ return (
+ nugget +
+ ((sill - nugget) / range) *
+ (1.0 - Math.exp(-(1.0 / A) * Math.pow(h / range, 2)))
+ );
+ };
+ kriging_variogram_exponential = function (h, nugget, range, sill, A) {
+ return (
+ nugget +
+ ((sill - nugget) / range) * (1.0 - Math.exp(-(1.0 / A) * (h / range)))
+ );
+ };
+ kriging_variogram_spherical = function (h, nugget, range, sill, A) {
+ if (h > range) return nugget + (sill - nugget) / range;
+ return (
+ nugget +
+ ((sill - nugget) / range) *
+ (1.5 * (h / range) - 0.5 * Math.pow(h / range, 3))
+ );
+ };
+
+ // Train using gaussian processes with bayesian priors
+ kriging.train = function (t, x, y, model, sigma2, alpha) {
+ var variogram = {
+ t: t,
+ x: x,
+ y: y,
+ nugget: 0.0,
+ range: 0.0,
+ sill: 0.0,
+ A: 1 / 3,
+ n: 0,
+ };
+ switch (model) {
+ case "gaussian":
+ variogram.model = kriging_variogram_gaussian;
+ break;
+ case "exponential":
+ variogram.model = kriging_variogram_exponential;
+ break;
+ case "spherical":
+ variogram.model = kriging_variogram_spherical;
+ break;
+ }
+
+ // Lag distance/semivariance
+ var i,
+ j,
+ k,
+ l,
+ n = t.length;
+ var distance = Array((n * n - n) / 2);
+ for (i = 0, k = 0; i < n; i++)
+ for (j = 0; j < i; j++, k++) {
+ distance[k] = Array(2);
+ distance[k][0] = Math.pow(
+ Math.pow(x[i] - x[j], 2) + Math.pow(y[i] - y[j], 2),
+ 0.5
+ );
+ distance[k][1] = Math.abs(t[i] - t[j]);
+ }
+ distance.sort(function (a, b) {
+ return a[0] - b[0];
+ });
+ variogram.range = distance[(n * n - n) / 2 - 1][0];
+
+ // Bin lag distance
+ var lags = (n * n - n) / 2 > 30 ? 30 : (n * n - n) / 2;
+ var tolerance = variogram.range / lags;
+ var lag = createArrayWithValues(0, lags);
+ var semi = createArrayWithValues(0, lags);
+ if (lags < 30) {
+ for (l = 0; l < lags; l++) {
+ lag[l] = distance[l][0];
+ semi[l] = distance[l][1];
+ }
+ } else {
+ for (
+ i = 0, j = 0, k = 0, l = 0;
+ i < lags && j < (n * n - n) / 2;
+ i++, k = 0
+ ) {
+ while (distance[j][0] <= (i + 1) * tolerance) {
+ lag[l] += distance[j][0];
+ semi[l] += distance[j][1];
+ j++;
+ k++;
+ if (j >= (n * n - n) / 2) break;
+ }
+ if (k > 0) {
+ lag[l] /= k;
+ semi[l] /= k;
+ l++;
+ }
+ }
+ if (l < 2) return variogram; // Error: Not enough points
+ }
+
+ // Feature transformation
+ n = l;
+ variogram.range = lag[n - 1] - lag[0];
+ var X = createArrayWithValues(1, 2 * n);
+ var Y = Array(n);
+ var A = variogram.A;
+ for (i = 0; i < n; i++) {
+ switch (model) {
+ case "gaussian":
+ X[i * 2 + 1] =
+ 1.0 - Math.exp(-(1.0 / A) * Math.pow(lag[i] / variogram.range, 2));
+ break;
+ case "exponential":
+ X[i * 2 + 1] =
+ 1.0 - Math.exp((-(1.0 / A) * lag[i]) / variogram.range);
+ break;
+ case "spherical":
+ X[i * 2 + 1] =
+ 1.5 * (lag[i] / variogram.range) -
+ 0.5 * Math.pow(lag[i] / variogram.range, 3);
+ break;
+ }
+ Y[i] = semi[i];
+ }
+
+ // Least squares
+ var Xt = kriging_matrix_transpose(X, n, 2);
+ var Z = kriging_matrix_multiply(Xt, X, 2, n, 2);
+ Z = kriging_matrix_add(Z, kriging_matrix_diag(1 / alpha, 2), 2, 2);
+ var cloneZ = Z.slice(0);
+ if (kriging_matrix_chol(Z, 2)) kriging_matrix_chol2inv(Z, 2);
+ else {
+ kriging_matrix_solve(cloneZ, 2);
+ Z = cloneZ;
+ }
+ var W = kriging_matrix_multiply(
+ kriging_matrix_multiply(Z, Xt, 2, 2, n),
+ Y,
+ 2,
+ n,
+ 1
+ );
+
+ // Variogram parameters
+ variogram.nugget = W[0];
+ variogram.sill = W[1] * variogram.range + variogram.nugget;
+ variogram.n = x.length;
+
+ // Gram matrix with prior
+ n = x.length;
+ var K = Array(n * n);
+ for (i = 0; i < n; i++) {
+ for (j = 0; j < i; j++) {
+ K[i * n + j] = variogram.model(
+ Math.pow(Math.pow(x[i] - x[j], 2) + Math.pow(y[i] - y[j], 2), 0.5),
+ variogram.nugget,
+ variogram.range,
+ variogram.sill,
+ variogram.A
+ );
+ K[j * n + i] = K[i * n + j];
+ }
+ K[i * n + i] = variogram.model(
+ 0,
+ variogram.nugget,
+ variogram.range,
+ variogram.sill,
+ variogram.A
+ );
+ }
+
+ // Inverse penalized Gram matrix projected to target vector
+ var C = kriging_matrix_add(K, kriging_matrix_diag(sigma2, n), n, n);
+ var cloneC = C.slice(0);
+ if (kriging_matrix_chol(C, n)) kriging_matrix_chol2inv(C, n);
+ else {
+ kriging_matrix_solve(cloneC, n);
+ C = cloneC;
+ }
+
+ // Copy unprojected inverted matrix as K
+ var K = C.slice(0);
+ var M = kriging_matrix_multiply(C, t, n, n, 1);
+ variogram.K = K;
+ variogram.M = M;
+
+ return variogram;
+ };
+
+ // Model prediction
+ kriging.predict = function (x, y, variogram) {
+ var i,
+ k = Array(variogram.n);
+ for (i = 0; i < variogram.n; i++)
+ k[i] = variogram.model(
+ Math.pow(
+ Math.pow(x - variogram.x[i], 2) + Math.pow(y - variogram.y[i], 2),
+ 0.5
+ ),
+ variogram.nugget,
+ variogram.range,
+ variogram.sill,
+ variogram.A
+ );
+ return kriging_matrix_multiply(k, variogram.M, 1, variogram.n, 1)[0];
+ };
+ kriging.variance = function (x, y, variogram) {
+ var i,
+ k = Array(variogram.n);
+ for (i = 0; i < variogram.n; i++)
+ k[i] = variogram.model(
+ Math.pow(
+ Math.pow(x - variogram.x[i], 2) + Math.pow(y - variogram.y[i], 2),
+ 0.5
+ ),
+ variogram.nugget,
+ variogram.range,
+ variogram.sill,
+ variogram.A
+ );
+ return (
+ variogram.model(
+ 0,
+ variogram.nugget,
+ variogram.range,
+ variogram.sill,
+ variogram.A
+ ) +
+ kriging_matrix_multiply(
+ kriging_matrix_multiply(k, variogram.K, 1, variogram.n, variogram.n),
+ k,
+ 1,
+ variogram.n,
+ 1
+ )[0]
+ );
+ };
+
+ // Gridded matrices or contour paths
+ kriging.grid = function (polygons, variogram, width) {
+ var i,
+ j,
+ k,
+ n = polygons.length;
+ if (n == 0) return;
+
+ // Boundaries of polygons space
+ var xlim = [polygons[0][0][0], polygons[0][0][0]];
+ var ylim = [polygons[0][0][1], polygons[0][0][1]];
+ for (
+ i = 0;
+ i < n;
+ i++ // Polygons
+ )
+ for (j = 0; j < polygons[i].length; j++) {
+ // Vertices
+ if (polygons[i][j][0] < xlim[0]) xlim[0] = polygons[i][j][0];
+ if (polygons[i][j][0] > xlim[1]) xlim[1] = polygons[i][j][0];
+ if (polygons[i][j][1] < ylim[0]) ylim[0] = polygons[i][j][1];
+ if (polygons[i][j][1] > ylim[1]) ylim[1] = polygons[i][j][1];
+ }
+
+ // Alloc for O(n^2) space
+ var xtarget, ytarget;
+ var a = Array(2),
+ b = Array(2);
+ var lxlim = Array(2); // Local dimensions
+ var lylim = Array(2); // Local dimensions
+ var x = Math.ceil((xlim[1] - xlim[0]) / width);
+ var y = Math.ceil((ylim[1] - ylim[0]) / width);
+
+ var A = Array(x + 1);
+ for (i = 0; i <= x; i++) A[i] = Array(y + 1);
+ for (i = 0; i < n; i++) {
+ // Range for polygons[i]
+ lxlim[0] = polygons[i][0][0];
+ lxlim[1] = lxlim[0];
+ lylim[0] = polygons[i][0][1];
+ lylim[1] = lylim[0];
+ for (j = 1; j < polygons[i].length; j++) {
+ // Vertices
+ if (polygons[i][j][0] < lxlim[0]) lxlim[0] = polygons[i][j][0];
+ if (polygons[i][j][0] > lxlim[1]) lxlim[1] = polygons[i][j][0];
+ if (polygons[i][j][1] < lylim[0]) lylim[0] = polygons[i][j][1];
+ if (polygons[i][j][1] > lylim[1]) lylim[1] = polygons[i][j][1];
+ }
+
+ // Loop through polygon subspace
+ a[0] = Math.floor(
+ (lxlim[0] - ((lxlim[0] - xlim[0]) % width) - xlim[0]) / width
+ );
+ a[1] = Math.ceil(
+ (lxlim[1] - ((lxlim[1] - xlim[1]) % width) - xlim[0]) / width
+ );
+ b[0] = Math.floor(
+ (lylim[0] - ((lylim[0] - ylim[0]) % width) - ylim[0]) / width
+ );
+ b[1] = Math.ceil(
+ (lylim[1] - ((lylim[1] - ylim[1]) % width) - ylim[0]) / width
+ );
+ for (j = a[0]; j <= a[1]; j++)
+ for (k = b[0]; k <= b[1]; k++) {
+ xtarget = xlim[0] + j * width;
+ ytarget = ylim[0] + k * width;
+ if (polygons[i].pip(xtarget, ytarget))
+ A[j][k] = kriging.predict(xtarget, ytarget, variogram);
+ }
+ }
+ A.xlim = xlim;
+ A.ylim = ylim;
+ A.zlim = [variogram.t.min(), variogram.t.max()];
+ A.width = width;
+ return A;
+ };
+ kriging.contour = function (value, polygons, variogram) {};
+
+ // Plotting on the DOM
+ kriging.plot = function (canvas, grid, xlim, ylim, colors) {
+ // Clear screen
+ var ctx = canvas.getContext("2d");
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+
+ var range = [
+ xlim[1] - xlim[0],
+ ylim[1] - ylim[0],
+ grid.zlim[1] - grid.zlim[0],
+ ];
+ var i, j, x, y, z;
+ var n = grid.length;
+ var m = grid[0].length;
+ var wx = Math.ceil((grid.width * canvas.width) / (xlim[1] - xlim[0]));
+ var wy = Math.ceil((grid.width * canvas.height) / (ylim[1] - ylim[0]));
+
+ for (i = 0; i < n; i++) {
+ for (j = 0; j < m; j++) {
+ if (grid[i][j] == undefined) continue;
+ x =
+ (canvas.width * (i * grid.width + grid.xlim[0] - xlim[0])) / range[0];
+ y =
+ canvas.height *
+ (1 - (j * grid.width + grid.ylim[0] - ylim[0]) / range[1]);
+ z = (grid[i][j] - grid.zlim[0]) / range[2];
+
+ if (z < 0.0) z = 0.0;
+ if (z > 1.0) z = 1.0;
+ ctx.fillStyle = colors[Math.floor((colors.length - 1) * z)];
+ ctx.fillRect(Math.round(x - wx / 2), Math.round(y - wy / 2), wx, wy);
+ }
+ }
+ };
+
+ return kriging;
+})();
+
+if (module && module.exports) {
+ module.exports = kriging;
+}
diff --git a/bigScreen/src/utils/kriging2.js b/bigScreen/src/utils/kriging2.js
new file mode 100755
index 0000000..27ea5d9
--- /dev/null
+++ b/bigScreen/src/utils/kriging2.js
@@ -0,0 +1,485 @@
+// Extend the Array class
+Array.prototype.max = function() {
+ return Math.max.apply(null, this);
+};
+Array.prototype.min = function() {
+ return Math.min.apply(null, this);
+};
+Array.prototype.mean = function() {
+ var i, sum;
+ for(i=0,sum=0;i<this.length;i++)
+ sum += this[i];
+ return sum / this.length;
+};
+Array.prototype.pip = function(x, y) {
+ var i, j, c = false;
+ for(i=0,j=this.length-1;i<this.length;j=i++) {
+ if( ((this[i][1]>y) != (this[j][1]>y)) &&
+ (x<(this[j][0]-this[i][0]) * (y-this[i][1]) / (this[j][1]-this[i][1]) + this[i][0]) ) {
+ c = !c;
+ }
+ }
+ return c;
+}
+
+var kriging = function() {
+ var kriging = {};
+
+ var createArrayWithValues = function(value, n) {
+ var array = [];
+ for ( var i = 0; i < n; i++) {
+ array.push(value);
+ }
+ return array;
+ };
+
+ // Matrix algebra
+ kriging_matrix_diag = function(c, n) {
+ var Z = createArrayWithValues(0, n * n);
+ for(i=0;i<n;i++) Z[i*n+i] = c;
+ return Z;
+ };
+ kriging_matrix_transpose = function(X, n, m) {
+ var i, j, Z = Array(m*n);
+ for(i=0;i<n;i++)
+ for(j=0;j<m;j++)
+ Z[j*n+i] = X[i*m+j];
+ return Z;
+ };
+ kriging_matrix_scale = function(X, c, n, m) {
+ var i, j;
+ for(i=0;i<n;i++)
+ for(j=0;j<m;j++)
+ X[i*m+j] *= c;
+ };
+ kriging_matrix_add = function(X, Y, n, m) {
+ var i, j, Z = Array(n*m);
+ for(i=0;i<n;i++)
+ for(j=0;j<m;j++)
+ Z[i*m+j] = X[i*m+j] + Y[i*m+j];
+ return Z;
+ };
+ // Naive matrix multiplication
+ kriging_matrix_multiply = function(X, Y, n, m, p) {
+ var i, j, k, Z = Array(n*p);
+ for(i=0;i<n;i++) {
+ for(j=0;j<p;j++) {
+ Z[i*p+j] = 0;
+ for(k=0;k<m;k++)
+ Z[i*p+j] += X[i*m+k]*Y[k*p+j];
+ }
+ }
+ return Z;
+ };
+ // Cholesky decomposition
+ kriging_matrix_chol = function(X, n) {
+ var i, j, k, sum, p = Array(n);
+ for(i=0;i<n;i++) p[i] = X[i*n+i];
+ for(i=0;i<n;i++) {
+ for(j=0;j<i;j++)
+ p[i] -= X[i*n+j]*X[i*n+j];
+ if(p[i]<=0) return false;
+ p[i] = Math.sqrt(p[i]);
+ for(j=i+1;j<n;j++) {
+ for(k=0;k<i;k++)
+ X[j*n+i] -= X[j*n+k]*X[i*n+k];
+ X[j*n+i] /= p[i];
+ }
+ }
+ for(i=0;i<n;i++) X[i*n+i] = p[i];
+ return true;
+ };
+ // Inversion of cholesky decomposition
+ kriging_matrix_chol2inv = function(X, n) {
+ var i, j, k, sum;
+ for(i=0;i<n;i++) {
+ X[i*n+i] = 1/X[i*n+i];
+ for(j=i+1;j<n;j++) {
+ sum = 0;
+ for(k=i;k<j;k++)
+ sum -= X[j*n+k]*X[k*n+i];
+ X[j*n+i] = sum/X[j*n+j];
+ }
+ }
+ for(i=0;i<n;i++)
+ for(j=i+1;j<n;j++)
+ X[i*n+j] = 0;
+ for(i=0;i<n;i++) {
+ X[i*n+i] *= X[i*n+i];
+ for(k=i+1;k<n;k++)
+ X[i*n+i] += X[k*n+i]*X[k*n+i];
+ for(j=i+1;j<n;j++)
+ for(k=j;k<n;k++)
+ X[i*n+j] += X[k*n+i]*X[k*n+j];
+ }
+ for(i=0;i<n;i++)
+ for(j=0;j<i;j++)
+ X[i*n+j] = X[j*n+i];
+
+ };
+ // Inversion via gauss-jordan elimination
+ kriging_matrix_solve = function(X, n) {
+ var m = n;
+ var b = Array(n*n);
+ var indxc = Array(n);
+ var indxr = Array(n);
+ var ipiv = Array(n);
+ var i, icol, irow, j, k, l, ll;
+ var big, dum, pivinv, temp;
+
+ for(i=0;i<n;i++)
+ for(j=0;j<n;j++) {
+ if(i==j) b[i*n+j] = 1;
+ else b[i*n+j] = 0;
+ }
+ for(j=0;j<n;j++) ipiv[j] = 0;
+ for(i=0;i<n;i++) {
+ big = 0;
+ for(j=0;j<n;j++) {
+ if(ipiv[j]!=1) {
+ for(k=0;k<n;k++) {
+ if(ipiv[k]==0) {
+ if(Math.abs(X[j*n+k])>=big) {
+ big = Math.abs(X[j*n+k]);
+ irow = j;
+ icol = k;
+ }
+ }
+ }
+ }
+ }
+ ++(ipiv[icol]);
+
+ if(irow!=icol) {
+ for(l=0;l<n;l++) {
+ temp = X[irow*n+l];
+ X[irow*n+l] = X[icol*n+l];
+ X[icol*n+l] = temp;
+ }
+ for(l=0;l<m;l++) {
+ temp = b[irow*n+l];
+ b[irow*n+l] = b[icol*n+l];
+ b[icol*n+l] = temp;
+ }
+ }
+ indxr[i] = irow;
+ indxc[i] = icol;
+
+ if(X[icol*n+icol]==0) return false; // Singular
+
+ pivinv = 1 / X[icol*n+icol];
+ X[icol*n+icol] = 1;
+ for(l=0;l<n;l++) X[icol*n+l] *= pivinv;
+ for(l=0;l<m;l++) b[icol*n+l] *= pivinv;
+
+ for(ll=0;ll<n;ll++) {
+ if(ll!=icol) {
+ dum = X[ll*n+icol];
+ X[ll*n+icol] = 0;
+ for(l=0;l<n;l++) X[ll*n+l] -= X[icol*n+l]*dum;
+ for(l=0;l<m;l++) b[ll*n+l] -= b[icol*n+l]*dum;
+ }
+ }
+ }
+ for(l=(n-1);l>=0;l--)
+ if(indxr[l]!=indxc[l]) {
+ for(k=0;k<n;k++) {
+ temp = X[k*n+indxr[l]];
+ X[k*n+indxr[l]] = X[k*n+indxc[l]];
+ X[k*n+indxc[l]] = temp;
+ }
+ }
+
+ return true;
+ }
+
+ // Variogram models
+ kriging_variogram_gaussian = function(h, nugget, range, sill, A) {
+ return nugget + ((sill-nugget)/range)*
+ ( 1.0 - Math.exp(-(1.0/A)*Math.pow(h/range, 2)) );
+ };
+ kriging_variogram_exponential = function(h, nugget, range, sill, A) {
+ return nugget + ((sill-nugget)/range)*
+ ( 1.0 - Math.exp(-(1.0/A) * (h/range)) );
+ };
+ kriging_variogram_spherical = function(h, nugget, range, sill, A) {
+ if(h>range) return nugget + (sill-nugget)/range;
+ return nugget + ((sill-nugget)/range)*
+ ( 1.5*(h/range) - 0.5*Math.pow(h/range, 3) );
+ };
+
+ // Train using gaussian processes with bayesian priors
+ kriging.train = function(t, x, y, model, sigma2, alpha) {
+ var variogram = {
+ t : t,
+ x : x,
+ y : y,
+ nugget : 0.0,
+ range : 0.0,
+ sill : 0.0,
+ A : 1/3,
+ n : 0
+ };
+ switch(model) {
+ case "gaussian":
+ variogram.model = kriging_variogram_gaussian;
+ break;
+ case "exponential":
+ variogram.model = kriging_variogram_exponential;
+ break;
+ case "spherical":
+ variogram.model = kriging_variogram_spherical;
+ break;
+ };
+
+ // Lag distance/semivariance
+ var i, j, k, l, n = t.length;
+ var distance = Array((n*n-n)/2);
+ for(i=0,k=0;i<n;i++)
+ for(j=0;j<i;j++,k++) {
+ distance[k] = Array(2);
+ distance[k][0] = Math.pow(
+ Math.pow(x[i]-x[j], 2)+
+ Math.pow(y[i]-y[j], 2), 0.5);
+ distance[k][1] = Math.abs(t[i]-t[j]);
+ }
+ distance.sort(function(a, b) { return a[0] - b[0]; });
+ variogram.range = distance[(n*n-n)/2-1][0];
+
+ // Bin lag distance
+ var lags = ((n*n-n)/2)>30?30:(n*n-n)/2;
+ var tolerance = variogram.range/lags;
+ var lag = createArrayWithValues(0,lags);
+ var semi = createArrayWithValues(0,lags);
+ if(lags<30) {
+ for(l=0;l<lags;l++) {
+ lag[l] = distance[l][0];
+ semi[l] = distance[l][1];
+ }
+ }
+ else {
+ for(i=0,j=0,k=0,l=0;i<lags&&j<((n*n-n)/2);i++,k=0) {
+ while( distance[j][0]<=((i+1)*tolerance) ) {
+ lag[l] += distance[j][0];
+ semi[l] += distance[j][1];
+ j++;k++;
+ if(j>=((n*n-n)/2)) break;
+ }
+ if(k>0) {
+ lag[l] /= k;
+ semi[l] /= k;
+ l++;
+ }
+ }
+ if(l<2) return variogram; // Error: Not enough points
+ }
+
+ // Feature transformation
+ n = l;
+ variogram.range = lag[n-1]-lag[0];
+ var X = createArrayWithValues(1,2 * n);
+ var Y = Array(n);
+ var A = variogram.A;
+ for(i=0;i<n;i++) {
+ switch(model) {
+ case "gaussian":
+ X[i*2+1] = 1.0-Math.exp(-(1.0/A)*Math.pow(lag[i]/variogram.range, 2));
+ break;
+ case "exponential":
+ X[i*2+1] = 1.0-Math.exp(-(1.0/A)*lag[i]/variogram.range);
+ break;
+ case "spherical":
+ X[i*2+1] = 1.5*(lag[i]/variogram.range)-
+ 0.5*Math.pow(lag[i]/variogram.range, 3);
+ break;
+ };
+ Y[i] = semi[i];
+ }
+
+ // Least squares
+ var Xt = kriging_matrix_transpose(X, n, 2);
+ var Z = kriging_matrix_multiply(Xt, X, 2, n, 2);
+ Z = kriging_matrix_add(Z, kriging_matrix_diag(1/alpha, 2), 2, 2);
+ var cloneZ = Z.slice(0);
+ if(kriging_matrix_chol(Z, 2))
+ kriging_matrix_chol2inv(Z, 2);
+ else {
+ kriging_matrix_solve(cloneZ, 2);
+ Z = cloneZ;
+ }
+ var W = kriging_matrix_multiply(kriging_matrix_multiply(Z, Xt, 2, 2, n), Y, 2, n, 1);
+
+ // Variogram parameters
+ variogram.nugget = W[0];
+ variogram.sill = W[1]*variogram.range+variogram.nugget;
+ variogram.n = x.length;
+
+ // Gram matrix with prior
+ n = x.length;
+ var K = Array(n*n);
+ for(i=0;i<n;i++) {
+ for(j=0;j<i;j++) {
+ K[i*n+j] = variogram.model(Math.pow(Math.pow(x[i]-x[j], 2)+
+ Math.pow(y[i]-y[j], 2), 0.5),
+ variogram.nugget,
+ variogram.range,
+ variogram.sill,
+ variogram.A);
+ K[j*n+i] = K[i*n+j];
+ }
+ K[i*n+i] = variogram.model(0, variogram.nugget,
+ variogram.range,
+ variogram.sill,
+ variogram.A);
+ }
+
+ // Inverse penalized Gram matrix projected to target vector
+ var C = kriging_matrix_add(K, kriging_matrix_diag(sigma2, n), n, n);
+ var cloneC = C.slice(0);
+ if(kriging_matrix_chol(C, n))
+ kriging_matrix_chol2inv(C, n);
+ else {
+ kriging_matrix_solve(cloneC, n);
+ C = cloneC;
+ }
+
+ // Copy unprojected inverted matrix as K
+ var K = C.slice(0);
+ var M = kriging_matrix_multiply(C, t, n, n, 1);
+ variogram.K = K;
+ variogram.M = M;
+
+ return variogram;
+ };
+
+ // Model prediction
+ kriging.predict = function(x, y, variogram) {
+ var i, k = Array(variogram.n);
+ for(i=0;i<variogram.n;i++)
+ k[i] = variogram.model(Math.pow(Math.pow(x-variogram.x[i], 2)+
+ Math.pow(y-variogram.y[i], 2), 0.5),
+ variogram.nugget, variogram.range,
+ variogram.sill, variogram.A);
+ return kriging_matrix_multiply(k, variogram.M, 1, variogram.n, 1)[0];
+ };
+ kriging.variance = function(x, y, variogram) {
+ var i, k = Array(variogram.n);
+ for(i=0;i<variogram.n;i++)
+ k[i] = variogram.model(Math.pow(Math.pow(x-variogram.x[i], 2)+
+ Math.pow(y-variogram.y[i], 2), 0.5),
+ variogram.nugget, variogram.range,
+ variogram.sill, variogram.A);
+ return variogram.model(0, variogram.nugget, variogram.range,
+ variogram.sill, variogram.A)+
+ kriging_matrix_multiply(kriging_matrix_multiply(k, variogram.K,
+ 1, variogram.n, variogram.n),
+ k, 1, variogram.n, 1)[0];
+ };
+
+ // Gridded matrices or contour paths
+ kriging.grid = function(polygons, variogram, width) {
+ var i, j, k, n = polygons.length;
+ if(n==0) return;
+
+ // Boundaries of polygons space
+ var xlim = [polygons[0][0][0], polygons[0][0][0]];
+ var ylim = [polygons[0][0][1], polygons[0][0][1]];
+ for(i=0;i<n;i++) // Polygons
+ for(j=0;j<polygons[i].length;j++) { // Vertices
+ if(polygons[i][j][0]<xlim[0])
+ xlim[0] = polygons[i][j][0];
+ if(polygons[i][j][0]>xlim[1])
+ xlim[1] = polygons[i][j][0];
+ if(polygons[i][j][1]<ylim[0])
+ ylim[0] = polygons[i][j][1];
+ if(polygons[i][j][1]>ylim[1])
+ ylim[1] = polygons[i][j][1];
+ }
+
+ // Alloc for O(n^2) space
+ var xtarget, ytarget;
+ var a = Array(2), b = Array(2);
+ var lxlim = Array(2); // Local dimensions
+ var lylim = Array(2); // Local dimensions
+ var x = Math.ceil((xlim[1]-xlim[0])/width);
+ var y = Math.ceil((ylim[1]-ylim[0])/width);
+
+ var A = Array(x+1);
+ for(i=0;i<=x;i++) A[i] = Array(y+1);
+ for(i=0;i<n;i++) {
+ // Range for polygons[i]
+ lxlim[0] = polygons[i][0][0];
+ lxlim[1] = lxlim[0];
+ lylim[0] = polygons[i][0][1];
+ lylim[1] = lylim[0];
+ for(j=1;j<polygons[i].length;j++) { // Vertices
+ if(polygons[i][j][0]<lxlim[0])
+ lxlim[0] = polygons[i][j][0];
+ if(polygons[i][j][0]>lxlim[1])
+ lxlim[1] = polygons[i][j][0];
+ if(polygons[i][j][1]<lylim[0])
+ lylim[0] = polygons[i][j][1];
+ if(polygons[i][j][1]>lylim[1])
+ lylim[1] = polygons[i][j][1];
+ }
+
+ // Loop through polygon subspace
+ a[0] = Math.floor(((lxlim[0]-((lxlim[0]-xlim[0])%width)) - xlim[0])/width);
+ a[1] = Math.ceil(((lxlim[1]-((lxlim[1]-xlim[1])%width)) - xlim[0])/width);
+ b[0] = Math.floor(((lylim[0]-((lylim[0]-ylim[0])%width)) - ylim[0])/width);
+ b[1] = Math.ceil(((lylim[1]-((lylim[1]-ylim[1])%width)) - ylim[0])/width);
+ for(j=a[0];j<=a[1];j++)
+ for(k=b[0];k<=b[1];k++) {
+ xtarget = xlim[0] + j*width;
+ ytarget = ylim[0] + k*width;
+ if(polygons[i].pip(xtarget, ytarget))
+ A[j][k] = kriging.predict(xtarget,
+ ytarget,
+ variogram);
+ }
+ }
+ A.xlim = xlim;
+ A.ylim = ylim;
+ A.zlim = [variogram.t.min(), variogram.t.max()];
+ A.width = width;
+ return A;
+ };
+ kriging.contour = function(value, polygons, variogram) {
+
+ };
+
+ // Plotting on the DOM
+ kriging.plot = function(canvas, grid, xlim, ylim, colors) {
+ // Clear screen
+ var ctx = canvas.getContext("2d");
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+
+ // Starting boundaries
+ var range = [xlim[1]-xlim[0], ylim[1]-ylim[0], grid.zlim[1]-grid.zlim[0]];
+ var i, j, x, y, z;
+ var n = grid.length;
+ var m = grid[0].length;
+ var wx = Math.ceil(grid.width*canvas.width/(xlim[1]-xlim[0]));
+ var wy = Math.ceil(grid.width*canvas.height/(ylim[1]-ylim[0]));
+ for(i=0;i<n;i++)
+ for(j=0;j<m;j++) {
+ if(grid[i][j]==undefined) continue;
+ x = canvas.width*(i*grid.width+grid.xlim[0]-xlim[0])/range[0];
+ y = canvas.height*(1-(j*grid.width+grid.ylim[0]-ylim[0])/range[1]);
+ z = (grid[i][j]-grid.zlim[0])/range[2];
+ if(z<0.0) z = 0.0;
+ if(z>1.0) z = 1.0;
+ console.log(Math.floor((colors.length-1)*z))
+ ctx.fillStyle = colors[Math.floor((colors.length-1)*z)];
+ ctx.fillRect(Math.round(x-wx/2), Math.round(y-wy/2), wx, wy);
+ }
+
+ };
+
+
+ return kriging;
+}();
+
+if (module && module.exports){
+ module.exports = kriging;
+}
\ No newline at end of file
diff --git a/bigScreen/src/utils/kriging_default_params.js b/bigScreen/src/utils/kriging_default_params.js
new file mode 100644
index 0000000..1076451
--- /dev/null
+++ b/bigScreen/src/utils/kriging_default_params.js
@@ -0,0 +1,8 @@
+var kriging_default_params = {
+ krigingModel: "spherical", //model杩樺彲閫�'exponential','gaussian','spherical'
+ krigingSigma2: 0,
+ krigingAlpha: 226,
+ canvasAlpha: 0.1, //canvas鍥惧眰閫忔槑搴�
+ colors: ["#f1c40f","#f4d03f","#f7dc6f","#f9e79f","#fcf3cf","#fef9e7","#eafaf1","#d5f5e3","#abebc6","#82e0aa","#58d68d","#2ecc71","#28b463","#239b56","#1d8348","#186a3b","#145a32","#196f3d","#1e8449"],
+};
+export default kriging_default_params;
\ No newline at end of file
diff --git a/bigScreen/src/utils/launchtower.js b/bigScreen/src/utils/launchtower.js
new file mode 100644
index 0000000..c321819
--- /dev/null
+++ b/bigScreen/src/utils/launchtower.js
@@ -0,0 +1,513 @@
+var points = {
+ "iTotalRecords": 24,
+ "aaData": [
+ {
+ "monitorpointName": "娴︿笢127",
+ "createUserId": 1,
+ "monitorstationId": 1,
+ "updateUserId": 1,
+ "proviceName_name": "娴︿笢鏂板尯",
+ "regionLat": "31.16345468",
+ "status_name": "姝e父",
+ "proviceName": 3,
+ "regionLong": "121.65346479",
+ "monitorpointId": 1,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": "",
+ "updateTime": "2021-06-1116:10:36",
+ "sort": null,
+ "priority": null,
+ "createTime": "2020-08-2515:45:24",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 48
+ },
+ {
+ "monitorpointName": "榛勬郸124",
+ "createUserId": 1,
+ "monitorstationId": 1,
+ "updateUserId": 1,
+ "proviceName_name": "榛勬郸鍖�",
+ "regionLat": "31.22466935",
+ "status_name": "姝e父",
+ "proviceName": 142,
+ "regionLong": "121.48948396",
+ "monitorpointId": 4,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": "",
+ "updateTime": "2021-04-2617:59:51",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-03-0914:57:16",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 36
+ },
+ {
+ "monitorpointName": "宕囨槑126",
+ "createUserId": 1,
+ "monitorstationId": 1,
+ "updateUserId": 1,
+ "proviceName_name": "宕囨槑鍘�",
+ "regionLat": "31.62894562",
+ "status_name": "姝e父",
+ "proviceName": 148,
+ "regionLong": "121.44585236",
+ "monitorpointId": 6,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": null,
+ "updateTime": "2021-04-2618:00:27",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-04-2618:00:27",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 28
+ },
+ {
+ "monitorpointName": "鍢夊畾铻嶅獟浣�143",
+ "createUserId": 1,
+ "monitorstationId": 1,
+ "updateUserId": 1,
+ "proviceName_name": "鍢夊畾鍖�",
+ "regionLat": "31.38452142",
+ "status_name": "姝e父",
+ "proviceName": 145,
+ "regionLong": "121.27125485",
+ "monitorpointId": 8,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": "",
+ "updateTime": "2021-05-2715:32:10",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-05-2715:27:07",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 18
+ },
+ {
+ "monitorpointName": "闂佃铻嶅獟浣�144",
+ "createUserId": 1,
+ "monitorstationId": 1,
+ "updateUserId": 1,
+ "proviceName_name": "闂佃鍖�",
+ "regionLat": "31.12745258",
+ "status_name": "姝e父",
+ "proviceName": 130,
+ "regionLong": "121.38745265",
+ "monitorpointId": 9,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": null,
+ "updateTime": "2021-05-2715:44:34",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-05-2715:44:34",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 25
+ },
+ {
+ "monitorpointName": "闈掓郸铻嶅獟浣�145",
+ "createUserId": 1,
+ "monitorstationId": 1,
+ "updateUserId": 1,
+ "proviceName_name": "闈掓郸鍖�",
+ "regionLat": "31.15745268",
+ "status_name": "姝e父",
+ "proviceName": 147,
+ "regionLong": "121.12452156",
+ "monitorpointId": 10,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": null,
+ "updateTime": "2021-05-2715:44:58",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-05-2715:44:58",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 42
+ },
+ {
+ "monitorpointName": "瀹濆北铻嶅獟浣�146",
+ "createUserId": 1,
+ "monitorstationId": 1,
+ "updateUserId": 1,
+ "proviceName_name": "瀹濆北鍖�",
+ "regionLat": "31.4452156",
+ "status_name": "姝e父",
+ "proviceName": 146,
+ "regionLong": "121.48452652",
+ "monitorpointId": 11,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": "",
+ "updateTime": "2021-05-2715:49:14",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-05-2715:47:25",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 32
+ },
+ {
+ "monitorpointName": "瀹濆北鏈夌嚎147",
+ "createUserId": 1,
+ "monitorstationId": 1,
+ "updateUserId": 1,
+ "proviceName_name": "瀹濆北鍖�",
+ "regionLat": "31.4452652",
+ "status_name": "姝e父",
+ "proviceName": 146,
+ "regionLong": "121.48452854",
+ "monitorpointId": 12,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": null,
+ "updateTime": "2021-05-2715:47:48",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-05-2715:47:48",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 22
+ },
+ {
+ "monitorpointName": "鍢夊畾鏈夌嚎149",
+ "createUserId": 1,
+ "monitorstationId": 1,
+ "updateUserId": 1,
+ "proviceName_name": "鍢夊畾鍖�",
+ "regionLat": "31.38745265",
+ "status_name": "姝e父",
+ "proviceName": 145,
+ "regionLong": "121.27745256",
+ "monitorpointId": 13,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": null,
+ "updateTime": "2021-05-2715:48:24",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-05-2715:48:24",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 12
+ },
+ {
+ "monitorpointName": "鏉炬睙铻嶅獟浣�151",
+ "createUserId": 1,
+ "monitorstationId": 1,
+ "updateUserId": 1,
+ "proviceName_name": "鏉炬睙鍖�",
+ "regionLat": "31.03452156",
+ "status_name": "姝e父",
+ "proviceName": 143,
+ "regionLong": "121.22745120",
+ "monitorpointId": 14,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": null,
+ "updateTime": "2021-05-2715:48:40",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-05-2715:48:40",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 58
+ },
+ {
+ "monitorpointName": "鏉炬睙鏈夌嚎141",
+ "createUserId": 8,
+ "monitorstationId": 1,
+ "updateUserId": 8,
+ "proviceName_name": "鏉炬睙鍖�",
+ "regionLat": "31.03412035",
+ "status_name": "姝e父",
+ "proviceName": 143,
+ "regionLong": "121.22120452",
+ "monitorpointId": 15,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": null,
+ "updateTime": "2021-06-1021:41:10",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-06-1021:41:10",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 44
+ },
+ {
+ "monitorpointName": "闂佃鏈夌嚎148",
+ "createUserId": 8,
+ "monitorstationId": 1,
+ "updateUserId": 8,
+ "proviceName_name": "闂佃鍖�",
+ "regionLat": "31.12412575",
+ "status_name": "姝e父",
+ "proviceName": 130,
+ "regionLong": "121.38452136",
+ "monitorpointId": 16,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": null,
+ "updateTime": "2021-06-1021:41:50",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-06-1021:41:50",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 33
+ },
+ {
+ "monitorpointName": "閲戝北鏈夌嚎150",
+ "createUserId": 8,
+ "monitorstationId": 1,
+ "updateUserId": 8,
+ "proviceName_name": "閲戝北鍖�",
+ "regionLat": "30.75412563",
+ "status_name": "姝e父",
+ "proviceName": 150,
+ "regionLong": "121.33452145",
+ "monitorpointId": 17,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": null,
+ "updateTime": "2021-06-1021:42:12",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-06-1021:42:12",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 21
+ },
+ {
+ "monitorpointName": "濂夎搐铻嶅獟浣�152",
+ "createUserId": 8,
+ "monitorstationId": 1,
+ "updateUserId": 8,
+ "proviceName_name": "濂夎搐鍖�",
+ "regionLat": "30.92452632",
+ "status_name": "姝e父",
+ "proviceName": 149,
+ "regionLong": "121.47412536",
+ "monitorpointId": 18,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": null,
+ "updateTime": "2021-06-1021:42:30",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-06-1021:42:30",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 12
+ },
+ {
+ "monitorpointName": "闈掓郸鏈夌嚎153",
+ "createUserId": 8,
+ "monitorstationId": 1,
+ "updateUserId": 8,
+ "proviceName_name": "闈掓郸鍖�",
+ "regionLat": "31.15452365",
+ "status_name": "姝e父",
+ "proviceName": 147,
+ "regionLong": "121.12452365",
+ "monitorpointId": 19,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": null,
+ "updateTime": "2021-06-1021:42:48",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-06-1021:42:48",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 5
+ },
+ {
+ "monitorpointName": "涓存腐鏈夌嚎154",
+ "createUserId": 8,
+ "monitorstationId": 1,
+ "updateUserId": 8,
+ "proviceName_name": "鍗楁眹鍖�",
+ "regionLat": "31.05452102",
+ "status_name": "姝e父",
+ "proviceName": 144,
+ "regionLong": "121.75452365",
+ "monitorpointId": 20,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": null,
+ "updateTime": "2021-06-1021:43:17",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-06-1021:43:17",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 34
+ },
+ {
+ "monitorpointName": "鑹烘捣澶у帵155",
+ "createUserId": 8,
+ "monitorstationId": 1,
+ "updateUserId": 8,
+ "proviceName_name": "闈欏畨鍖�",
+ "regionLat": "31.23452125",
+ "status_name": "姝e父",
+ "proviceName": 154,
+ "regionLong": "121.45785632",
+ "monitorpointId": 21,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": "",
+ "updateTime": "2021-06-1021:51:36",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-06-1021:44:02",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 24
+ },
+ {
+ "monitorpointName": "閲戝北铻嶅獟浣�156",
+ "createUserId": 8,
+ "monitorstationId": 1,
+ "updateUserId": 8,
+ "proviceName_name": "閲戝北鍖�",
+ "regionLat": "30.75452653",
+ "status_name": "姝e父",
+ "proviceName": 150,
+ "regionLong": "121.33745236",
+ "monitorpointId": 22,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": null,
+ "updateTime": "2021-06-1021:44:27",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-06-1021:44:27",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 31
+ },
+ {
+ "monitorpointName": "娴︿笢鏈夌嚎157",
+ "createUserId": 8,
+ "monitorstationId": 1,
+ "updateUserId": 8,
+ "proviceName_name": "娴︿笢鏂板尯",
+ "regionLat": "31.16374521",
+ "status_name": "姝e父",
+ "proviceName": 3,
+ "regionLong": "121.65374523",
+ "monitorpointId": 23,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": null,
+ "updateTime": "2021-06-1021:44:49",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-06-1021:44:49",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 2
+ },
+ {
+ "monitorpointName": "濂夎搐鏈夌嚎158",
+ "createUserId": 8,
+ "monitorstationId": 1,
+ "updateUserId": 8,
+ "proviceName_name": "濂夎搐鍖�",
+ "regionLat": "30.92745265",
+ "status_name": "姝e父",
+ "proviceName": 149,
+ "regionLong": "121.47745236",
+ "monitorpointId": 24,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": null,
+ "updateTime": "2021-06-1021:45:14",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-06-1021:45:14",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 1
+ },
+ {
+ "monitorpointName": "宕囨槑铻嶅獟浣�160",
+ "createUserId": 8,
+ "monitorstationId": 1,
+ "updateUserId": 1,
+ "proviceName_name": "宕囨槑鍘�",
+ "regionLat": "31.67452152",
+ "status_name": "姝e父",
+ "proviceName": 148,
+ "regionLong": "121.47452158",
+ "monitorpointId": 25,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": "",
+ "updateTime": "2021-06-1116:40:21",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-06-1022:40:10",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 3
+ },
+ {
+ "monitorpointName": "闀垮叴宀涙湁绾�164",
+ "createUserId": 8,
+ "monitorstationId": 1,
+ "updateUserId": 8,
+ "proviceName_name": "宕囨槑鍘�",
+ "regionLat": "31.62745236",
+ "status_name": "姝e父",
+ "proviceName": 148,
+ "regionLong": "121.44125637",
+ "monitorpointId": 26,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": "",
+ "updateTime": "2021-06-1300:24:51",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-06-1022:40:31",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 5
+ },
+ {
+ "monitorpointName": "宕囨槑鏈夌嚎163",
+ "createUserId": 8,
+ "monitorstationId": 1,
+ "updateUserId": 8,
+ "proviceName_name": "宕囨槑鍘�",
+ "regionLat": "31.62745265",
+ "status_name": "姝e父",
+ "proviceName": 148,
+ "regionLong": "121.4745236",
+ "monitorpointId": 27,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": null,
+ "updateTime": "2021-06-1022:40:49",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-06-1022:40:49",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 5
+ },
+ {
+ "monitorpointName": "骞挎挱澶у帵162",
+ "createUserId": 1,
+ "monitorstationId": 1,
+ "updateUserId": 1,
+ "proviceName_name": "闀垮畞鍖�",
+ "regionLat": "31.23745265",
+ "status_name": "姝e父",
+ "proviceName": 155,
+ "regionLong": "121.47745823",
+ "monitorpointId": 28,
+ "monitorstationId_name": "鐩戞祴绔欑珯鐐�101",
+ "remark": null,
+ "updateTime": "2021-06-1513:12:08",
+ "sort": null,
+ "priority": null,
+ "createTime": "2021-06-1513:12:08",
+ "synStatus_name": "宸插悓姝�",
+ "status": 1,
+ "z": 1
+ }
+ ],
+ "iTotalDisplayRecords": 24,
+ "sEcho": null
+};
+
+export default points
\ No newline at end of file
diff --git a/bigScreen/src/utils/map.js b/bigScreen/src/utils/map.js
new file mode 100644
index 0000000..f7459c6
--- /dev/null
+++ b/bigScreen/src/utils/map.js
@@ -0,0 +1,12 @@
+export function MP(ak) {
+ return new Promise(function(resolve, reject) {
+ window.init = function() {
+ resolve(BMap)
+ }
+ var script = document.createElement('script')
+ script.type = 'text/javascript'
+ script.src = `http://api.map.baidu.com/api?v=3.0&ak=${ak}&callback=init`
+ script.onerror = reject
+ document.head.appendChild(script)
+ })
+ }
\ No newline at end of file
diff --git a/bigScreen/src/utils/other.js b/bigScreen/src/utils/other.js
new file mode 100644
index 0000000..3b74c1a
--- /dev/null
+++ b/bigScreen/src/utils/other.js
@@ -0,0 +1,137 @@
+var data = {
+ code: 20000,
+ data: [
+ {
+ frequencyValue: "522",
+ count_status_0: 0,
+ count_status_1: 0,
+ count_status_2: 0,
+ count_status_3: 0,
+ count_status_4: 0,
+ count_status_5: 9018,
+ count_status_6: 0,
+ count_status_other: 0,
+ count_total: 9018,
+ avg_level: 56,
+ },
+ {
+ frequencyValue: "531",
+ count_status_0: 0,
+ count_status_1: 0,
+ count_status_2: 0,
+ count_status_3: 0,
+ count_status_4: 0,
+ count_status_5: 32728,
+ count_status_6: 0,
+ count_status_other: 0,
+ count_total: 32728,
+ avg_level: 45,
+ },
+ {
+ frequencyValue: "540",
+ count_status_0: 0,
+ count_status_1: 0,
+ count_status_2: 0,
+ count_status_3: 0,
+ count_status_4: 0,
+ count_status_5: 49305,
+ count_status_6: 0,
+ count_status_other: 0,
+ count_total: 49305,
+ avg_level: 38,
+ },
+ {
+ frequencyValue: "549",
+ count_status_0: 0,
+ count_status_1: 0,
+ count_status_2: 0,
+ count_status_3: 0,
+ count_status_4: 0,
+ count_status_5: 18620,
+ count_status_6: 0,
+ count_status_other: 0,
+ count_total: 18620,
+ avg_level: 50,
+ },
+ {
+ frequencyValue: "558",
+ count_status_0: 0,
+ count_status_1: 0,
+ count_status_2: 0,
+ count_status_3: 0,
+ count_status_4: 0,
+ count_status_5: 20220,
+ count_status_6: 0,
+ count_status_other: 0,
+ count_total: 20220,
+ avg_level: 52,
+ },
+ {
+ frequencyValue: "567",
+ count_status_0: 0,
+ count_status_1: 0,
+ count_status_2: 0,
+ count_status_3: 0,
+ count_status_4: 0,
+ count_status_5: 25760,
+ count_status_6: 0,
+ count_status_other: 0,
+ count_total: 25760,
+ avg_level: 48,
+ },
+ {
+ frequencyValue: "576",
+ count_status_0: 0,
+ count_status_1: 0,
+ count_status_2: 0,
+ count_status_3: 0,
+ count_status_4: 0,
+ count_status_5: 15104,
+ count_status_6: 0,
+ count_status_other: 0,
+ count_total: 15104,
+ avg_level: 50,
+ },
+ {
+ frequencyValue: "585",
+ count_status_0: 0,
+ count_status_1: 0,
+ count_status_2: 0,
+ count_status_3: 0,
+ count_status_4: 0,
+ count_status_5: 27091,
+ count_status_6: 0,
+ count_status_other: 0,
+ count_total: 27091,
+ avg_level: 46,
+ },
+ {
+ frequencyValue: "594",
+ count_status_0: 0,
+ count_status_1: 0,
+ count_status_2: 0,
+ count_status_3: 0,
+ count_status_4: 0,
+ count_status_5: 22428,
+ count_status_6: 0,
+ count_status_other: 0,
+ count_total: 22428,
+ avg_level: 49,
+ },
+ {
+ frequencyValue: "603",
+ count_status_0: 0,
+ count_status_1: 0,
+ count_status_2: 0,
+ count_status_3: 0,
+ count_status_4: 0,
+ count_status_5: 41164,
+ count_status_6: 0,
+ count_status_other: 0,
+ count_total: 41164,
+ avg_level: 42,
+ },
+ ],
+};
+
+export default data;
diff --git a/bigScreen/src/utils/request.js b/bigScreen/src/utils/request.js
new file mode 100755
index 0000000..ccd094a
--- /dev/null
+++ b/bigScreen/src/utils/request.js
@@ -0,0 +1,229 @@
+import axios from 'axios'
+import { MessageBox, Message } from 'element-ui'
+// import store from '@/store'
+// import { getToken } from '@/utils/auth'
+
+// let root = "http://wiibox.xicp.io:19868/FRP/"
+// let DSroot = "http://wiibox.xicp.io:19868/FRP/"
+
+// axios.defaults.timeout = 10000 //10000鐨勮秴鏃堕獙璇�
+axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'
+
+// request interceptor
+axios.interceptors.request.use(
+ config => {
+ // do something before request is sent
+
+ // if (store.getters.token) {
+ // // let each request carry token
+ // // ['X-Token'] is a custom headers key
+ // // please modify it according to the actual situation
+ // //config.headers['X-Token'] = getToken()
+ // config.headers.Authorization = `Bearer ` + getToken()
+ // }
+ config.url = config.url
+ return config
+ },
+ error => {
+ // do something with request error
+ console.log(error) // for debug
+ return Promise.reject(error)
+ }
+)
+
+var DS = axios.create({
+ // timeout: 5000,
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded'}
+});
+// request interceptor
+DS.interceptors.request.use(
+ config => {
+ // do something before request is sent
+
+ // if (store.getters.token) {
+ // config.headers.Authorization = `Bearer ` + getToken()
+ // }
+ config.url = DSroot + config.url
+ return config
+ },
+ error => {
+ // do something with request error
+ console.log(error) // for debug
+ return Promise.reject(error)
+ }
+)
+
+// response interceptor
+axios.interceptors.response.use(
+ /**
+ * If you want to get http information such as headers or status
+ * Please return response => response
+ */
+ response => {
+ const res = response
+ // if the custom code is not 20000, it is judged as an error.
+ if (res.status !== 200) {
+ Message({
+ message: res.statusText || 'Error',
+ type: 'error',
+ duration: 5 * 1000
+ })
+
+ // // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+ // if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+ // // to re-login
+ // MessageBox.confirm(
+ // '浣犲凡閫�鍑虹櫥褰曪紝浣犲彲浠ュ彇娑堢暀鍦ㄥ綋鍓嶉〉闈㈡垨鑰呴噸鏂扮櫥褰曘��',
+ // '淇℃伅妗�',
+ // {
+ // confirmButtonText: '閲嶆柊鐧诲綍',
+ // cancelButtonText: '鍙栨秷',
+ // type: 'warning'
+ // }
+ // ).then(() => {
+ // // store.dispatch('user/resetToken').then(() => {
+ // // location.reload()
+ // // })
+ // })
+ // }
+ // return Promise.reject(new Error(res.message || 'Error'))
+ } else {
+ return res.data
+ }
+ },
+ error => {
+ console.log('err' + error) // for debug
+ Message({
+ message: error.message,
+ type: 'error',
+ duration: 5 * 1000
+ })
+ return Promise.reject(error)
+ }
+)
+
+/**
+ * 灏佽get鏂规硶
+ * @param url
+ * @param data
+ * @returns {Promise}
+ */
+
+export function getJSON (url, params = {}) {
+ for (let param in params) {
+ switch (typeof params[param]) {
+ case 'object':
+ params[param] = JSON.stringify(params[param])
+ }
+ }
+ return new Promise((resolve, reject) => {
+ axios
+ .get(url, {
+ params: params
+ })
+ .then(response => {
+ resolve(response)
+ })
+ .catch(err => {
+ reject(err)
+ console.warn(err)
+ })
+ })
+}
+
+export function getDS (url, params = {}) {
+ for (let param in params) {
+ switch (typeof params[param]) {
+ case 'object':
+ params[param] = JSON.stringify(params[param])
+ }
+ }
+ return new Promise((resolve, reject) => {
+ DS
+ .get(url, {
+ params: params
+ })
+ .then(response => {
+ resolve(response)
+ })
+ .catch(err => {
+ reject(err)
+ console.warn(err)
+ })
+ })
+}
+
+/**
+ * 灏佽post璇锋眰
+ * @param url
+ * @param data
+ * @returns {Promise}
+ */
+
+export function post (url, data = {}) {
+ return new Promise((resolve, reject) => {
+ axios.post(url, data).then(
+ response => {
+ resolve(response)
+ },
+ err => {
+ reject(err)
+ }
+ )
+ })
+}
+export function DSpost (url, data = {}) {
+ return new Promise((resolve, reject) => {
+ DS.post(url, data).then(
+ response => {
+ resolve(response)
+ },
+ err => {
+ reject(err)
+ }
+ )
+ })
+}
+
+/**
+ * 灏佽patch璇锋眰
+ * @param url
+ * @param data
+ * @returns {Promise}
+ */
+
+export function patch (url, data = {}) {
+ return new Promise((resolve, reject) => {
+ axios.patch(url, data).then(
+ response => {
+ resolve(response)
+ },
+ err => {
+ reject(err)
+ }
+ )
+ })
+}
+
+/**
+ * 灏佽put璇锋眰
+ * @param url
+ * @param data
+ * @returns {Promise}
+ */
+
+export function put (url, data = {}) {
+ return new Promise((resolve, reject) => {
+ axios
+ .put(url, data, { headers: { 'Content-Type': 'multipart/form-data' } })
+ .then(
+ response => {
+ resolve(response)
+ },
+ err => {
+ reject(err)
+ }
+ )
+ })
+}
+//export default service
diff --git a/bigScreen/src/utils/request2.js b/bigScreen/src/utils/request2.js
new file mode 100755
index 0000000..06fe7d9
--- /dev/null
+++ b/bigScreen/src/utils/request2.js
@@ -0,0 +1,232 @@
+import axios from 'axios'
+import { MessageBox, Message } from 'element-ui'
+// import store from '@/store'
+// import { getToken } from '@/utils/auth'
+let root = "http://wiibox.xicp.io:8484/"
+let DSroot = "http://wiibox.xicp.io:8484/"
+
+// console.log(root)
+// console.log(DSroot)
+// console.log(process.env)
+
+// axios.defaults.timeout = 10000 //10000鐨勮秴鏃堕獙璇�
+axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'
+
+// request interceptor
+axios.interceptors.request.use(
+ config => {
+ // do something before request is sent
+
+ // if (store.getters.token) {
+ // // let each request carry token
+ // // ['X-Token'] is a custom headers key
+ // // please modify it according to the actual situation
+ // //config.headers['X-Token'] = getToken()
+ // config.headers.Authorization = `Bearer ` + getToken()
+ // }
+ config.url = root + config.url
+ return config
+ },
+ error => {
+ // do something with request error
+ console.log(error) // for debug
+ return Promise.reject(error)
+ }
+)
+
+var DS = axios.create({
+ // timeout: 5000,
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded'}
+});
+// request interceptor
+DS.interceptors.request.use(
+ config => {
+ // do something before request is sent
+
+ // if (store.getters.token) {
+ // config.headers.Authorization = `Bearer ` + getToken()
+ // }
+ config.url = DSroot + config.url
+ return config
+ },
+ error => {
+ // do something with request error
+ console.log(error) // for debug
+ return Promise.reject(error)
+ }
+)
+
+// response interceptor
+axios.interceptors.response.use(
+ /**
+ * If you want to get http information such as headers or status
+ * Please return response => response
+ */
+ response => {
+ const res = response
+ // if the custom code is not 20000, it is judged as an error.
+ if (res.status !== 200) {
+ Message({
+ message: res.statusText || 'Error',
+ type: 'error',
+ duration: 5 * 1000
+ })
+
+ // // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+ // if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+ // // to re-login
+ // MessageBox.confirm(
+ // '浣犲凡閫�鍑虹櫥褰曪紝浣犲彲浠ュ彇娑堢暀鍦ㄥ綋鍓嶉〉闈㈡垨鑰呴噸鏂扮櫥褰曘��',
+ // '淇℃伅妗�',
+ // {
+ // confirmButtonText: '閲嶆柊鐧诲綍',
+ // cancelButtonText: '鍙栨秷',
+ // type: 'warning'
+ // }
+ // ).then(() => {
+ // // store.dispatch('user/resetToken').then(() => {
+ // // location.reload()
+ // // })
+ // })
+ // }
+ // return Promise.reject(new Error(res.message || 'Error'))
+ } else {
+ return res.data
+ }
+ },
+ error => {
+ console.log('err' + error) // for debug
+ Message({
+ message: error.message,
+ type: 'error',
+ duration: 5 * 1000
+ })
+ return Promise.reject(error)
+ }
+)
+
+/**
+ * 灏佽get鏂规硶
+ * @param url
+ * @param data
+ * @returns {Promise}
+ */
+
+export function getJSON2 (url, params = {}) {
+ for (let param in params) {
+ switch (typeof params[param]) {
+ case 'object':
+ params[param] = JSON.stringify(params[param])
+ }
+ }
+ return new Promise((resolve, reject) => {
+ axios
+ .get(url, {
+ params: params
+ })
+ .then(response => {
+ resolve(response)
+ })
+ .catch(err => {
+ reject(err)
+ console.warn(err)
+ })
+ })
+}
+
+export function getDS2 (url, params = {}) {
+ for (let param in params) {
+ switch (typeof params[param]) {
+ case 'object':
+ params[param] = JSON.stringify(params[param])
+ }
+ }
+ return new Promise((resolve, reject) => {
+ DS
+ .get(url, {
+ params: params
+ })
+ .then(response => {
+ resolve(response)
+ })
+ .catch(err => {
+ reject(err)
+ console.warn(err)
+ })
+ })
+}
+
+/**
+ * 灏佽post璇锋眰
+ * @param url
+ * @param data
+ * @returns {Promise}
+ */
+
+export function post2 (url, data = {}) {
+ return new Promise((resolve, reject) => {
+ axios.post(url, data).then(
+ response => {
+ resolve(response)
+ },
+ err => {
+ reject(err)
+ }
+ )
+ })
+}
+export function DSpost2 (url, data = {}) {
+ return new Promise((resolve, reject) => {
+ DS.post(url, data).then(
+ response => {
+ resolve(response)
+ },
+ err => {
+ reject(err)
+ }
+ )
+ })
+}
+
+/**
+ * 灏佽patch璇锋眰
+ * @param url
+ * @param data
+ * @returns {Promise}
+ */
+
+export function patch2 (url, data = {}) {
+ return new Promise((resolve, reject) => {
+ axios.patch(url, data).then(
+ response => {
+ resolve(response)
+ },
+ err => {
+ reject(err)
+ }
+ )
+ })
+}
+
+/**
+ * 灏佽put璇锋眰
+ * @param url
+ * @param data
+ * @returns {Promise}
+ */
+
+export function put2 (url, data = {}) {
+ return new Promise((resolve, reject) => {
+ axios
+ .put(url, data, { headers: { 'Content-Type': 'multipart/form-data' } })
+ .then(
+ response => {
+ resolve(response)
+ },
+ err => {
+ reject(err)
+ }
+ )
+ })
+}
+//export default service
diff --git a/bigScreen/src/utils/shshape.js b/bigScreen/src/utils/shshape.js
new file mode 100644
index 0000000..4fb29e8
--- /dev/null
+++ b/bigScreen/src/utils/shshape.js
@@ -0,0 +1,18682 @@
+var shshapes = [
+ {
+ OGR_FID: 1,
+ SHAPE: [
+ [
+ [
+ {
+ x: 121.424155999999,
+ y: 30.6836369998477,
+ },
+ {
+ x: 121.422201999823,
+ y: 30.6824600004287,
+ },
+ {
+ x: 121.422089000007,
+ y: 30.6843310003754,
+ },
+ {
+ x: 121.424155999999,
+ y: 30.6836369998477,
+ },
+ ],
+ ],
+ [
+ [
+ {
+ x: 121.424111999769,
+ y: 30.6907260003047,
+ },
+ {
+ x: 121.420144000246,
+ y: 30.6896140002859,
+ },
+ {
+ x: 121.414232000107,
+ y: 30.6926499999976,
+ },
+ {
+ x: 121.41486499962,
+ y: 30.6937609999702,
+ },
+ {
+ x: 121.417860000139,
+ y: 30.6936219998555,
+ },
+ {
+ x: 121.422028999938,
+ y: 30.6934259998101,
+ },
+ {
+ x: 121.423860999885,
+ y: 30.6919170003693,
+ },
+ {
+ x: 121.424111999769,
+ y: 30.6907260003047,
+ },
+ ],
+ ],
+ [
+ [
+ {
+ x: 121.404688999798,
+ y: 30.7066469997593,
+ },
+ {
+ x: 121.401467999649,
+ y: 30.7051770003184,
+ },
+ {
+ x: 121.402163000222,
+ y: 30.707119999988,
+ },
+ {
+ x: 121.404350000352,
+ y: 30.7073309998258,
+ },
+ {
+ x: 121.404688999798,
+ y: 30.7066469997593,
+ },
+ ],
+ ],
+ [
+ [
+ {
+ x: 120.997691999886,
+ y: 30.9532170002644,
+ },
+ {
+ x: 120.998282000114,
+ y: 30.9491940000032,
+ },
+ {
+ x: 121.005669999971,
+ y: 30.9507889998125,
+ },
+ {
+ x: 121.004429000298,
+ y: 30.9513090004101,
+ },
+ {
+ x: 121.006850999574,
+ y: 30.953112999965,
+ },
+ {
+ x: 121.007232000057,
+ y: 30.9521060002917,
+ },
+ {
+ x: 121.008621000259,
+ y: 30.9516219995557,
+ },
+ {
+ x: 121.01059999979,
+ y: 30.9518629998776,
+ },
+ {
+ x: 121.010947999651,
+ y: 30.9503029998836,
+ },
+ {
+ x: 121.008933000258,
+ y: 30.948950999589,
+ },
+ {
+ x: 121.008656000074,
+ y: 30.9497470003238,
+ },
+ {
+ x: 121.006676999644,
+ y: 30.9493310000257,
+ },
+ {
+ x: 121.006399000314,
+ y: 30.9469370002424,
+ },
+ {
+ x: 121.007858000147,
+ y: 30.9470059998271,
+ },
+ {
+ x: 121.006954999873,
+ y: 30.9466260002897,
+ },
+ {
+ x: 121.007198000288,
+ y: 30.9457579998319,
+ },
+ {
+ x: 121.009420000233,
+ y: 30.946314000291,
+ },
+ {
+ x: 121.01087800002,
+ y: 30.9424280000522,
+ },
+ {
+ x: 121.013274999941,
+ y: 30.9413539999871,
+ },
+ {
+ x: 121.012509999737,
+ y: 30.9434690003941,
+ },
+ {
+ x: 121.014629000328,
+ y: 30.944198999884,
+ },
+ {
+ x: 121.015036000211,
+ y: 30.9432949995646,
+ },
+ {
+ x: 121.025429000148,
+ y: 30.9465510004284,
+ },
+ {
+ x: 121.025150999919,
+ y: 30.9439740002999,
+ },
+ {
+ x: 121.02645199966,
+ y: 30.9439449998619,
+ },
+ {
+ x: 121.026410000421,
+ y: 30.9423150002371,
+ },
+ {
+ x: 121.027382000279,
+ y: 30.941868000308,
+ },
+ {
+ x: 121.027034000419,
+ y: 30.9381790001608,
+ },
+ {
+ x: 121.02423900013,
+ y: 30.9296509998938,
+ },
+ {
+ x: 121.023866000016,
+ y: 30.924710999613,
+ },
+ {
+ x: 121.021417000394,
+ y: 30.9188760003272,
+ },
+ {
+ x: 121.020480000352,
+ y: 30.9119320002616,
+ },
+ {
+ x: 121.020844000051,
+ y: 30.9111910002645,
+ },
+ {
+ x: 121.030176999669,
+ y: 30.9082559998146,
+ },
+ {
+ x: 121.029917000269,
+ y: 30.9048399996663,
+ },
+ {
+ x: 121.034291999676,
+ y: 30.9042460001529,
+ },
+ {
+ x: 121.035837999924,
+ y: 30.9065920004205,
+ },
+ {
+ x: 121.036375000406,
+ y: 30.9028010000662,
+ },
+ {
+ x: 121.037817000354,
+ y: 30.9015049996561,
+ },
+ {
+ x: 121.040682000274,
+ y: 30.9039819996696,
+ },
+ {
+ x: 121.048494999944,
+ y: 30.905442000448,
+ },
+ {
+ x: 121.063385999564,
+ y: 30.9065399998212,
+ },
+ {
+ x: 121.064411000068,
+ y: 30.9041660000609,
+ },
+ {
+ x: 121.065842999555,
+ y: 30.9041660000609,
+ },
+ {
+ x: 121.065782000339,
+ y: 30.9048229997817,
+ },
+ {
+ x: 121.067927000331,
+ y: 30.9052230002413,
+ },
+ {
+ x: 121.067856999801,
+ y: 30.9069550000733,
+ },
+ {
+ x: 121.076254000322,
+ y: 30.9079789996312,
+ },
+ {
+ x: 121.077260999995,
+ y: 30.9078029996088,
+ },
+ {
+ x: 121.07722600018,
+ y: 30.9062839997069,
+ },
+ {
+ x: 121.079169999896,
+ y: 30.9064270000061,
+ },
+ {
+ x: 121.079144999642,
+ y: 30.9073110003025,
+ },
+ {
+ x: 121.084492999852,
+ y: 30.9058559997546,
+ },
+ {
+ x: 121.084553999967,
+ y: 30.9051699995958,
+ },
+ {
+ x: 121.087072000073,
+ y: 30.9054259997102,
+ },
+ {
+ x: 121.087150000072,
+ y: 30.9066569998207,
+ },
+ {
+ x: 121.089753999647,
+ y: 30.9068299997048,
+ },
+ {
+ x: 121.089669000224,
+ y: 30.9045699998057,
+ },
+ {
+ x: 121.092534000144,
+ y: 30.9052279995726,
+ },
+ {
+ x: 121.092272999799,
+ y: 30.9064589996831,
+ },
+ {
+ x: 121.093905000415,
+ y: 30.9068010001661,
+ },
+ {
+ x: 121.094192000161,
+ y: 30.9086310000207,
+ },
+ {
+ x: 121.092733000328,
+ y: 30.9108919999659,
+ },
+ {
+ x: 121.09121300038,
+ y: 30.9106620001513,
+ },
+ {
+ x: 121.09161299994,
+ y: 30.9123499997527,
+ },
+ {
+ x: 121.089216000018,
+ y: 30.9117210004239,
+ },
+ {
+ x: 121.087436999818,
+ y: 30.9129789999809,
+ },
+ {
+ x: 121.085492000056,
+ y: 30.9130630002573,
+ },
+ {
+ x: 121.084508999691,
+ y: 30.9139980002076,
+ },
+ {
+ x: 121.084431999737,
+ y: 30.9173120001487,
+ },
+ {
+ x: 121.086768000443,
+ y: 30.9182029998686,
+ },
+ {
+ x: 121.095805999947,
+ y: 30.9284650000598,
+ },
+ {
+ x: 121.099766000001,
+ y: 30.9247699996358,
+ },
+ {
+ x: 121.100530000159,
+ y: 30.9221480001302,
+ },
+ {
+ x: 121.104550000282,
+ y: 30.9231010000112,
+ },
+ {
+ x: 121.10612199993,
+ y: 30.9245340004438,
+ },
+ {
+ x: 121.106372999814,
+ y: 30.9237660001009,
+ },
+ {
+ x: 121.109342000033,
+ y: 30.923068000288,
+ },
+ {
+ x: 121.110002999939,
+ y: 30.9236969996169,
+ },
+ {
+ x: 121.116861999682,
+ y: 30.9219869999002,
+ },
+ {
+ x: 121.11476099992,
+ y: 30.9140119999539,
+ },
+ {
+ x: 121.115420999779,
+ y: 30.9134700001404,
+ },
+ {
+ x: 121.115132999988,
+ y: 30.9124119999139,
+ },
+ {
+ x: 121.113214999673,
+ y: 30.912726000005,
+ },
+ {
+ x: 121.112816000158,
+ y: 30.9104100002214,
+ },
+ {
+ x: 121.111609000255,
+ y: 30.9106379999438,
+ },
+ {
+ x: 121.108925999735,
+ y: 30.9056330002628,
+ },
+ {
+ x: 121.106259999999,
+ y: 30.9030580002266,
+ },
+ {
+ x: 121.106495000044,
+ y: 30.9012549998184,
+ },
+ {
+ x: 121.10886499962,
+ y: 30.899455000448,
+ },
+ {
+ x: 121.112095000184,
+ y: 30.9027450001817,
+ },
+ {
+ x: 121.113588999833,
+ y: 30.9035159997636,
+ },
+ {
+ x: 121.117651000094,
+ y: 30.9031459997881,
+ },
+ {
+ x: 121.118963000342,
+ y: 30.9048910002195,
+ },
+ {
+ x: 121.125595999556,
+ y: 30.904633000013,
+ },
+ {
+ x: 121.127140999757,
+ y: 30.901775000416,
+ },
+ {
+ x: 121.129086000419,
+ y: 30.90237400016,
+ },
+ {
+ x: 121.129859000093,
+ y: 30.9038629995778,
+ },
+ {
+ x: 121.136708000274,
+ y: 30.9033910002945,
+ },
+ {
+ x: 121.136421999676,
+ y: 30.9070350001652,
+ },
+ {
+ x: 121.135111000372,
+ y: 30.909444999787,
+ },
+ {
+ x: 121.135527999817,
+ y: 30.9123820003291,
+ },
+ {
+ x: 121.133209999942,
+ y: 30.913901000231,
+ },
+ {
+ x: 121.132862000081,
+ y: 30.9153899996488,
+ },
+ {
+ x: 121.134494999844,
+ y: 30.92165199974,
+ },
+ {
+ x: 121.136900000135,
+ y: 30.9215660002707,
+ },
+ {
+ x: 121.138697000266,
+ y: 30.9201640003684,
+ },
+ {
+ x: 121.137447000179,
+ y: 30.9188770003733,
+ },
+ {
+ x: 121.137610999648,
+ y: 30.9176490004011,
+ },
+ {
+ x: 121.138982999965,
+ y: 30.9175900003783,
+ },
+ {
+ x: 121.138445000337,
+ y: 30.9169850003576,
+ },
+ {
+ x: 121.145294999665,
+ y: 30.9146780000897,
+ },
+ {
+ x: 121.14522600008,
+ y: 30.9133310000257,
+ },
+ {
+ x: 121.152118000445,
+ y: 30.9120450000767,
+ },
+ {
+ x: 121.15221300033,
+ y: 30.9210319999269,
+ },
+ {
+ x: 121.153680999678,
+ y: 30.922368000383,
+ },
+ {
+ x: 121.160105000046,
+ y: 30.9220279999923,
+ },
+ {
+ x: 121.162404999991,
+ y: 30.9190660000959,
+ },
+ {
+ x: 121.166763000412,
+ y: 30.9167850001277,
+ },
+ {
+ x: 121.182005000031,
+ y: 30.9175349996406,
+ },
+ {
+ x: 121.183299000349,
+ y: 30.918724999659,
+ },
+ {
+ x: 121.185841999809,
+ y: 30.9193020001872,
+ },
+ {
+ x: 121.19038199963,
+ y: 30.9194580001866,
+ },
+ {
+ x: 121.204963000242,
+ y: 30.9227399995514,
+ },
+ {
+ x: 121.218580999614,
+ y: 30.9329289999734,
+ },
+ {
+ x: 121.22292999962,
+ y: 30.9289629996427,
+ },
+ {
+ x: 121.230086999615,
+ y: 30.9307460000279,
+ },
+ {
+ x: 121.230372000168,
+ y: 30.9281629996228,
+ },
+ {
+ x: 121.232389999699,
+ y: 30.9283700001754,
+ },
+ {
+ x: 121.23376099997,
+ y: 30.9270539997423,
+ },
+ {
+ x: 121.236250999684,
+ y: 30.9273380002485,
+ },
+ {
+ x: 121.238533999744,
+ y: 30.922105999992,
+ },
+ {
+ x: 121.240191999761,
+ y: 30.9225050004055,
+ },
+ {
+ x: 121.241251000034,
+ y: 30.9210740000651,
+ },
+ {
+ x: 121.240226999576,
+ y: 30.920788000366,
+ },
+ {
+ x: 121.241111999919,
+ y: 30.9192739997953,
+ },
+ {
+ x: 121.239281000018,
+ y: 30.9200460003227,
+ },
+ {
+ x: 121.241797000032,
+ y: 30.9133809996335,
+ },
+ {
+ x: 121.241797000032,
+ y: 30.9109790003806,
+ },
+ {
+ x: 121.242221999845,
+ y: 30.9120939996384,
+ },
+ {
+ x: 121.244340000391,
+ y: 30.911551999825,
+ },
+ {
+ x: 121.244340000391,
+ y: 30.9124950001442,
+ },
+ {
+ x: 121.250832000297,
+ y: 30.9117499999626,
+ },
+ {
+ x: 121.251492000156,
+ y: 30.9101770002684,
+ },
+ {
+ x: 121.254546999844,
+ y: 30.9101760002223,
+ },
+ {
+ x: 121.254546999844,
+ y: 30.9094029996488,
+ },
+ {
+ x: 121.257723999763,
+ y: 30.9102900000835,
+ },
+ {
+ x: 121.258123000176,
+ y: 30.9090319996271,
+ },
+ {
+ x: 121.259980000377,
+ y: 30.9093180002256,
+ },
+ {
+ x: 121.260587999637,
+ y: 30.9084020002522,
+ },
+ {
+ x: 121.262531000206,
+ y: 30.9084580001366,
+ },
+ {
+ x: 121.262471000137,
+ y: 30.9049399997812,
+ },
+ {
+ x: 121.261723999863,
+ y: 30.9049700002653,
+ },
+ {
+ x: 121.261758999678,
+ y: 30.9039120000388,
+ },
+ {
+ x: 121.264641000382,
+ y: 30.9038829996008,
+ },
+ {
+ x: 121.266011999754,
+ y: 30.9023659997911,
+ },
+ {
+ x: 121.268563999629,
+ y: 30.9025959996058,
+ },
+ {
+ x: 121.270359999714,
+ y: 30.8970179995811,
+ },
+ {
+ x: 121.271218999757,
+ y: 30.8970179995811,
+ },
+ {
+ x: 121.271193000357,
+ y: 30.8982180000607,
+ },
+ {
+ x: 121.273762000116,
+ y: 30.8993920002407,
+ },
+ {
+ x: 121.274682000274,
+ y: 30.8993049998259,
+ },
+ {
+ x: 121.275219999903,
+ y: 30.8966460004127,
+ },
+ {
+ x: 121.277650999594,
+ y: 30.8969890000424,
+ },
+ {
+ x: 121.277884999593,
+ y: 30.8987619999664,
+ },
+ {
+ x: 121.280827000366,
+ y: 30.8988169998048,
+ },
+ {
+ x: 121.28137400041,
+ y: 30.8976170002244,
+ },
+ {
+ x: 121.283977999985,
+ y: 30.8982459995533,
+ },
+ {
+ x: 121.284289999984,
+ y: 30.9021359999765,
+ },
+ {
+ x: 121.28572200037,
+ y: 30.902191999861,
+ },
+ {
+ x: 121.285723000416,
+ y: 30.9048239998278,
+ },
+ {
+ x: 121.286573000044,
+ y: 30.9048520002197,
+ },
+ {
+ x: 121.286259999999,
+ y: 30.9088850000427,
+ },
+ {
+ x: 121.285236000441,
+ y: 30.9090840002265,
+ },
+ {
+ x: 121.286259999999,
+ y: 30.9101709999917,
+ },
+ {
+ x: 121.285548999587,
+ y: 30.9101709999917,
+ },
+ {
+ x: 121.285634999955,
+ y: 30.9119730003537,
+ },
+ {
+ x: 121.284263999684,
+ y: 30.9120880002611,
+ },
+ {
+ x: 121.285088999957,
+ y: 30.9163780002445,
+ },
+ {
+ x: 121.284402999799,
+ y: 30.9190660000959,
+ },
+ {
+ x: 121.285314000441,
+ y: 30.9195530000709,
+ },
+ {
+ x: 121.29049600019,
+ y: 30.9206680002281,
+ },
+ {
+ x: 121.290582999706,
+ y: 30.9192929997722,
+ },
+ {
+ x: 121.289810000032,
+ y: 30.9192379999338,
+ },
+ {
+ x: 121.290365000444,
+ y: 30.917112999965,
+ },
+ {
+ x: 121.291824000277,
+ y: 30.917112999965,
+ },
+ {
+ x: 121.294029000338,
+ y: 30.9119039998698,
+ },
+ {
+ x: 121.297318000026,
+ y: 30.910610999598,
+ },
+ {
+ x: 121.29776099977,
+ y: 30.9115159999635,
+ },
+ {
+ x: 121.298976000042,
+ y: 30.9114369999177,
+ },
+ {
+ x: 121.299254000272,
+ y: 30.9142439998607,
+ },
+ {
+ x: 121.302030999731,
+ y: 30.9142670000221,
+ },
+ {
+ x: 121.30233500026,
+ y: 30.9123539999372,
+ },
+ {
+ x: 121.303247000049,
+ y: 30.9115770000785,
+ },
+ {
+ x: 121.304106000092,
+ y: 30.9116059996172,
+ },
+ {
+ x: 121.304079999792,
+ y: 30.9123260004446,
+ },
+ {
+ x: 121.306544000106,
+ y: 30.9123260004446,
+ },
+ {
+ x: 121.306432000337,
+ y: 30.9112739995954,
+ },
+ {
+ x: 121.307429999595,
+ y: 30.9110239997578,
+ },
+ {
+ x: 121.306961999597,
+ y: 30.911937999639,
+ },
+ {
+ x: 121.30934799991,
+ y: 30.9128529995663,
+ },
+ {
+ x: 121.310120999585,
+ y: 30.9112739995954,
+ },
+ {
+ x: 121.313365999941,
+ y: 30.9118839998468,
+ },
+ {
+ x: 121.313471000287,
+ y: 30.9129640001885,
+ },
+ {
+ x: 121.315632000117,
+ y: 30.91321299998,
+ },
+ {
+ x: 121.317994000223,
+ y: 30.91069099969,
+ },
+ {
+ x: 121.321422000025,
+ y: 30.9110780004494,
+ },
+ {
+ x: 121.323114999857,
+ y: 30.9122440002604,
+ },
+ {
+ x: 121.323835999832,
+ y: 30.9110780004494,
+ },
+ {
+ x: 121.326022999962,
+ y: 30.9107169999896,
+ },
+ {
+ x: 121.326579000421,
+ y: 30.9096110002475,
+ },
+ {
+ x: 121.328574999836,
+ y: 30.9099970000615,
+ },
+ {
+ x: 121.329521000294,
+ y: 30.908805999997,
+ },
+ {
+ x: 121.330962000196,
+ y: 30.9098040001545,
+ },
+ {
+ x: 121.332090000054,
+ y: 30.9088340003889,
+ },
+ {
+ x: 121.335614999832,
+ y: 30.9106349998054,
+ },
+ {
+ x: 121.340598000298,
+ y: 30.9110239997578,
+ },
+ {
+ x: 121.340076999654,
+ y: 30.9121870003299,
+ },
+ {
+ x: 121.34176099997,
+ y: 30.9135169996099,
+ },
+ {
+ x: 121.340936999743,
+ y: 30.9144050000907,
+ },
+ {
+ x: 121.343011000058,
+ y: 30.915208000249,
+ },
+ {
+ x: 121.346033000023,
+ y: 30.9134619997715,
+ },
+ {
+ x: 121.347248000295,
+ y: 30.9152810000182,
+ },
+ {
+ x: 121.352108999631,
+ y: 30.9106709996669,
+ },
+ {
+ x: 121.353550000432,
+ y: 30.903265999926,
+ },
+ {
+ x: 121.355886000239,
+ y: 30.8998430003542,
+ },
+ {
+ x: 121.356607000213,
+ y: 30.8950289995887,
+ },
+ {
+ x: 121.358681999675,
+ y: 30.8890140000961,
+ },
+ {
+ x: 121.362639999636,
+ y: 30.8887200000281,
+ },
+ {
+ x: 121.365575000086,
+ y: 30.8859689999694,
+ },
+ {
+ x: 121.367155000103,
+ y: 30.8857489997166,
+ },
+ {
+ x: 121.372303000083,
+ y: 30.8823320004215,
+ },
+ {
+ x: 121.37759999974,
+ y: 30.8809980000577,
+ },
+ {
+ x: 121.376888000181,
+ y: 30.8786410001821,
+ },
+ {
+ x: 121.378180999554,
+ y: 30.8765269998212,
+ },
+ {
+ x: 121.378251000084,
+ y: 30.8710889999574,
+ },
+ {
+ x: 121.377261000295,
+ y: 30.8693699998257,
+ },
+ {
+ x: 121.377295000064,
+ y: 30.8660480004149,
+ },
+ {
+ x: 121.379395999826,
+ y: 30.8655330000479,
+ },
+ {
+ x: 121.378866999712,
+ y: 30.861288000341,
+ },
+ {
+ x: 121.379761999617,
+ y: 30.8582850003525,
+ },
+ {
+ x: 121.379162999873,
+ y: 30.8530750002112,
+ },
+ {
+ x: 121.380829000258,
+ y: 30.845234000149,
+ },
+ {
+ x: 121.37446499996,
+ y: 30.8453019996876,
+ },
+ {
+ x: 121.374648000305,
+ y: 30.8421819996996,
+ },
+ {
+ x: 121.376721999721,
+ y: 30.8391029998036,
+ },
+ {
+ x: 121.375871000047,
+ y: 30.8382170003144,
+ },
+ {
+ x: 121.376375999953,
+ y: 30.8372630003872,
+ },
+ {
+ x: 121.377156999996,
+ y: 30.836918999812,
+ },
+ {
+ x: 121.376731000136,
+ y: 30.8375100000865,
+ },
+ {
+ x: 121.377486999925,
+ y: 30.8379749999464,
+ },
+ {
+ x: 121.378138000269,
+ y: 30.8371980000877,
+ },
+ {
+ x: 121.378615999829,
+ y: 30.8377769998087,
+ },
+ {
+ x: 121.379545000402,
+ y: 30.8372020002722,
+ },
+ {
+ x: 121.378883999597,
+ y: 30.8361169996998,
+ },
+ {
+ x: 121.380673000259,
+ y: 30.8361910004144,
+ },
+ {
+ x: 121.380890000373,
+ y: 30.8351429997497,
+ },
+ {
+ x: 121.38298199972,
+ y: 30.8348669996124,
+ },
+ {
+ x: 121.38298199972,
+ y: 30.8319229996468,
+ },
+ {
+ x: 121.387107000188,
+ y: 30.8319780003845,
+ },
+ {
+ x: 121.387437000118,
+ y: 30.8298860001389,
+ },
+ {
+ x: 121.38865200039,
+ y: 30.8297490001163,
+ },
+ {
+ x: 121.392367999983,
+ y: 30.8300539997923,
+ },
+ {
+ x: 121.393149000026,
+ y: 30.8358489999314,
+ },
+ {
+ x: 121.395094999834,
+ y: 30.8362440001605,
+ },
+ {
+ x: 121.398020999869,
+ y: 30.835297999703,
+ },
+ {
+ x: 121.398098999869,
+ y: 30.8359029997237,
+ },
+ {
+ x: 121.399592000371,
+ y: 30.8358499999775,
+ },
+ {
+ x: 121.399009999612,
+ y: 30.8319390003846,
+ },
+ {
+ x: 121.396066999692,
+ y: 30.8321599997842,
+ },
+ {
+ x: 121.396370000175,
+ y: 30.8294620003711,
+ },
+ {
+ x: 121.39713500038,
+ y: 30.8292149997725,
+ },
+ {
+ x: 121.39738700031,
+ y: 30.8278109997779,
+ },
+ {
+ x: 121.398299000099,
+ y: 30.8281409997074,
+ },
+ {
+ x: 121.400164999815,
+ y: 30.8251399998112,
+ },
+ {
+ x: 121.409559999594,
+ y: 30.823820000093,
+ },
+ {
+ x: 121.409351999895,
+ y: 30.8226900001434,
+ },
+ {
+ x: 121.410905999612,
+ y: 30.8220050000308,
+ },
+ {
+ x: 121.410523999983,
+ y: 30.8178750002311,
+ },
+ {
+ x: 121.41468300022,
+ y: 30.8180969996769,
+ },
+ {
+ x: 121.415923999893,
+ y: 30.8218680000082,
+ },
+ {
+ x: 121.421394000333,
+ y: 30.8207669995974,
+ },
+ {
+ x: 121.42927000021,
+ y: 30.8204389997601,
+ },
+ {
+ x: 121.429433999679,
+ y: 30.8191179999957,
+ },
+ {
+ x: 121.430701999698,
+ y: 30.8204389997601,
+ },
+ {
+ x: 121.432437999714,
+ y: 30.8201930001069,
+ },
+ {
+ x: 121.437065999996,
+ y: 30.8089349998504,
+ },
+ {
+ x: 121.437635000155,
+ y: 30.8082600001989,
+ },
+ {
+ x: 121.438657999667,
+ y: 30.8088719996431,
+ },
+ {
+ x: 121.440860999635,
+ y: 30.8069799996273,
+ },
+ {
+ x: 121.442153999907,
+ y: 30.8076960002703,
+ },
+ {
+ x: 121.46056099979,
+ y: 30.7786509999437,
+ },
+ {
+ x: 121.474303000383,
+ y: 30.7585639999287,
+ },
+ {
+ x: 121.421767999594,
+ y: 30.7324099998217,
+ },
+ {
+ x: 121.402387999806,
+ y: 30.7202019998225,
+ },
+ {
+ x: 121.357328000187,
+ y: 30.6816930001319,
+ },
+ {
+ x: 121.349784000331,
+ y: 30.6791750000263,
+ },
+ {
+ x: 121.342108999831,
+ y: 30.6777900000085,
+ },
+ {
+ x: 121.322220999999,
+ y: 30.6781670003069,
+ },
+ {
+ x: 121.286617000274,
+ y: 30.6806250003435,
+ },
+ {
+ x: 121.27025700036,
+ y: 30.679710999563,
+ },
+ {
+ x: 121.268016999585,
+ y: 30.6955800002169,
+ },
+ {
+ x: 121.267209000095,
+ y: 30.699198999834,
+ },
+ {
+ x: 121.266027999593,
+ y: 30.7003790002907,
+ },
+ {
+ x: 121.266634999706,
+ y: 30.7033289996337,
+ },
+ {
+ x: 121.264263000037,
+ y: 30.7044419996986,
+ },
+ {
+ x: 121.263633999809,
+ y: 30.7084049998909,
+ },
+ {
+ x: 121.262280000322,
+ y: 30.708598999844,
+ },
+ {
+ x: 121.261472999979,
+ y: 30.7117959997856,
+ },
+ {
+ x: 121.264051000154,
+ y: 30.7144540000521,
+ },
+ {
+ x: 121.26267000032,
+ y: 30.7173420001333,
+ },
+ {
+ x: 121.265943000169,
+ y: 30.7191909999647,
+ },
+ {
+ x: 121.265708000124,
+ y: 30.7227719996282,
+ },
+ {
+ x: 121.267634999955,
+ y: 30.725544999802,
+ },
+ {
+ x: 121.265942000123,
+ y: 30.7281650001147,
+ },
+ {
+ x: 121.267053000096,
+ y: 30.7292430003642,
+ },
+ {
+ x: 121.265248999642,
+ y: 30.7292440004103,
+ },
+ {
+ x: 121.266670999567,
+ y: 30.7302069998532,
+ },
+ {
+ x: 121.26536100031,
+ y: 30.7330169999346,
+ },
+ {
+ x: 121.267054000142,
+ y: 30.7350199996733,
+ },
+ {
+ x: 121.26586500017,
+ y: 30.7349439997658,
+ },
+ {
+ x: 121.263781000293,
+ y: 30.7372170002644,
+ },
+ {
+ x: 121.262437000367,
+ y: 30.7357900001085,
+ },
+ {
+ x: 121.26133499991,
+ y: 30.7365300000595,
+ },
+ {
+ x: 121.2520129999,
+ y: 30.7462379998838,
+ },
+ {
+ x: 121.249920999654,
+ y: 30.7473980003175,
+ },
+ {
+ x: 121.238716000043,
+ y: 30.7528200003428,
+ },
+ {
+ x: 121.237632000417,
+ y: 30.7520879998614,
+ },
+ {
+ x: 121.236747000074,
+ y: 30.7526270004358,
+ },
+ {
+ x: 121.237293000072,
+ y: 30.7533610001101,
+ },
+ {
+ x: 121.235245000057,
+ y: 30.7543220003601,
+ },
+ {
+ x: 121.234558999898,
+ y: 30.7538229998316,
+ },
+ {
+ x: 121.232900999881,
+ y: 30.7549379999888,
+ },
+ {
+ x: 121.231973000254,
+ y: 30.754130999646,
+ },
+ {
+ x: 121.231132000142,
+ y: 30.754554000267,
+ },
+ {
+ x: 121.232094000438,
+ y: 30.7560950002841,
+ },
+ {
+ x: 121.227598999994,
+ y: 30.7586779997899,
+ },
+ {
+ x: 121.226288999837,
+ y: 30.7660149999923,
+ },
+ {
+ x: 121.224725999705,
+ y: 30.7702520002297,
+ },
+ {
+ x: 121.222520999645,
+ y: 30.7730960000804,
+ },
+ {
+ x: 121.223423999918,
+ y: 30.7742759996377,
+ },
+ {
+ x: 121.221810000131,
+ y: 30.775240000026,
+ },
+ {
+ x: 121.221193999603,
+ y: 30.7788589996431,
+ },
+ {
+ x: 121.220231000161,
+ y: 30.7792460004026,
+ },
+ {
+ x: 121.218997999958,
+ y: 30.7782440000606,
+ },
+ {
+ x: 121.217721999571,
+ y: 30.7793810003329,
+ },
+ {
+ x: 121.213582000209,
+ y: 30.78721299998,
+ },
+ {
+ x: 121.209312000249,
+ y: 30.7881720001378,
+ },
+ {
+ x: 121.201109999727,
+ y: 30.7881439997458,
+ },
+ {
+ x: 121.196622999652,
+ y: 30.786220000053,
+ },
+ {
+ x: 121.194739000005,
+ y: 30.7829840001116,
+ },
+ {
+ x: 121.195893000162,
+ y: 30.7758589997931,
+ },
+ {
+ x: 121.19251700006,
+ y: 30.7755839997019,
+ },
+ {
+ x: 121.18738700001,
+ y: 30.7810659997961,
+ },
+ {
+ x: 121.186518999552,
+ y: 30.783302000387,
+ },
+ {
+ x: 121.18507000018,
+ y: 30.7811829997956,
+ },
+ {
+ x: 121.183351000049,
+ y: 30.7817629995628,
+ },
+ {
+ x: 121.181900999731,
+ y: 30.7812419998185,
+ },
+ {
+ x: 121.181329000333,
+ y: 30.7788639998737,
+ },
+ {
+ x: 121.178975999743,
+ y: 30.7772380004334,
+ },
+ {
+ x: 121.175495000194,
+ y: 30.7765720002976,
+ },
+ {
+ x: 121.170192000261,
+ y: 30.7742049999608,
+ },
+ {
+ x: 121.169081000288,
+ y: 30.7758300002544,
+ },
+ {
+ x: 121.166502000067,
+ y: 30.776860000089,
+ },
+ {
+ x: 121.166302999884,
+ y: 30.7792699997108,
+ },
+ {
+ x: 121.164471999983,
+ y: 30.7781369996229,
+ },
+ {
+ x: 121.158932999958,
+ y: 30.7774419999484,
+ },
+ {
+ x: 121.156232999553,
+ y: 30.7753830003252,
+ },
+ {
+ x: 121.156172000338,
+ y: 30.7787459998281,
+ },
+ {
+ x: 121.15301300035,
+ y: 30.7797900003083,
+ },
+ {
+ x: 121.151302999734,
+ y: 30.7793560000794,
+ },
+ {
+ x: 121.148167999953,
+ y: 30.7811249998189,
+ },
+ {
+ x: 121.13958199971,
+ y: 30.7816159999784,
+ },
+ {
+ x: 121.138878999666,
+ y: 30.7803279999373,
+ },
+ {
+ x: 121.136074999861,
+ y: 30.7790549996885,
+ },
+ {
+ x: 121.134157000445,
+ y: 30.7797239999627,
+ },
+ {
+ x: 121.134157000445,
+ y: 30.7805500002823,
+ },
+ {
+ x: 121.130544000206,
+ y: 30.7793000001949,
+ },
+ {
+ x: 121.118430000045,
+ y: 30.7811209996345,
+ },
+ {
+ x: 121.115323999803,
+ y: 30.7856079997095,
+ },
+ {
+ x: 121.113192000411,
+ y: 30.786918999912,
+ },
+ {
+ x: 121.112643000274,
+ y: 30.7881700000455,
+ },
+ {
+ x: 121.114300000245,
+ y: 30.7901830002453,
+ },
+ {
+ x: 121.120685999759,
+ y: 30.7902790001758,
+ },
+ {
+ x: 121.12200799957,
+ y: 30.791101000311,
+ },
+ {
+ x: 121.121479000356,
+ y: 30.7951390003646,
+ },
+ {
+ x: 121.123578000025,
+ y: 30.8121729998841,
+ },
+ {
+ x: 121.127812000124,
+ y: 30.8213779998948,
+ },
+ {
+ x: 121.132863000127,
+ y: 30.8271279997574,
+ },
+ {
+ x: 121.133097000127,
+ y: 30.8283270001909,
+ },
+ {
+ x: 121.132862000081,
+ y: 30.8320779996001,
+ },
+ {
+ x: 121.131959999854,
+ y: 30.8320649998999,
+ },
+ {
+ x: 121.131681999625,
+ y: 30.8299630000924,
+ },
+ {
+ x: 121.129703000093,
+ y: 30.8305969996518,
+ },
+ {
+ x: 121.129267999818,
+ y: 30.8331339997343,
+ },
+ {
+ x: 121.128357000076,
+ y: 30.8336900001934,
+ },
+ {
+ x: 121.130059000323,
+ y: 30.8351150002571,
+ },
+ {
+ x: 121.127045999873,
+ y: 30.8380889998076,
+ },
+ {
+ x: 121.125422999672,
+ y: 30.8369769997888,
+ },
+ {
+ x: 121.116061999662,
+ y: 30.8384039999447,
+ },
+ {
+ x: 121.11479499969,
+ y: 30.8382059998071,
+ },
+ {
+ x: 121.11443900036,
+ y: 30.8370939997883,
+ },
+ {
+ x: 121.113171000341,
+ y: 30.8373720000179,
+ },
+ {
+ x: 121.115263999734,
+ y: 30.8398009996165,
+ },
+ {
+ x: 121.115672999709,
+ y: 30.8453629998027,
+ },
+ {
+ x: 121.118970999812,
+ y: 30.8493300001794,
+ },
+ {
+ x: 121.11758199961,
+ y: 30.8499960003152,
+ },
+ {
+ x: 121.118103000253,
+ y: 30.8509229998966,
+ },
+ {
+ x: 121.11714800028,
+ y: 30.8520519998,
+ },
+ {
+ x: 121.115473000379,
+ y: 30.8511830001954,
+ },
+ {
+ x: 121.110168000353,
+ y: 30.8535280004169,
+ },
+ {
+ x: 121.10886499962,
+ y: 30.8546570003203,
+ },
+ {
+ x: 121.108578999921,
+ y: 30.8561059996922,
+ },
+ {
+ x: 121.106321000114,
+ y: 30.8534690003941,
+ },
+ {
+ x: 121.100208999746,
+ y: 30.8513830004252,
+ },
+ {
+ x: 121.099331999772,
+ y: 30.8525409998673,
+ },
+ {
+ x: 121.09768300017,
+ y: 30.8523089999604,
+ },
+ {
+ x: 121.095511999879,
+ y: 30.85381300007,
+ },
+ {
+ x: 121.09493000002,
+ y: 30.8545970002514,
+ },
+ {
+ x: 121.095537000132,
+ y: 30.8559580000617,
+ },
+ {
+ x: 121.094009999862,
+ y: 30.8556969997168,
+ },
+ {
+ x: 121.093106999588,
+ y: 30.8569699999656,
+ },
+ {
+ x: 121.09377399977,
+ y: 30.8576370001475,
+ },
+ {
+ x: 121.092993999773,
+ y: 30.8581860002838,
+ },
+ {
+ x: 121.093131999842,
+ y: 30.8591450004415,
+ },
+ {
+ x: 121.075902000277,
+ y: 30.8508009996664,
+ },
+ {
+ x: 121.062445000237,
+ y: 30.8508469999891,
+ },
+ {
+ x: 121.055985000008,
+ y: 30.847268000418,
+ },
+ {
+ x: 121.057125999565,
+ y: 30.845467000102,
+ },
+ {
+ x: 121.055683999617,
+ y: 30.8448870003348,
+ },
+ {
+ x: 121.057508000094,
+ y: 30.8398770004233,
+ },
+ {
+ x: 121.042245000407,
+ y: 30.8332129997802,
+ },
+ {
+ x: 121.044379999937,
+ y: 30.8273049998259,
+ },
+ {
+ x: 121.040604000274,
+ y: 30.8280400004457,
+ },
+ {
+ x: 121.039014999842,
+ y: 30.8302829995608,
+ },
+ {
+ x: 121.035463999764,
+ y: 30.82936100021,
+ },
+ {
+ x: 121.03722600008,
+ y: 30.8269869995505,
+ },
+ {
+ x: 121.035785000178,
+ y: 30.8265219996906,
+ },
+ {
+ x: 121.03470900002,
+ y: 30.8230179999808,
+ },
+ {
+ x: 121.033205999957,
+ y: 30.8224099998217,
+ },
+ {
+ x: 121.033493999748,
+ y: 30.8215109997329,
+ },
+ {
+ x: 121.034595000159,
+ y: 30.8207299996898,
+ },
+ {
+ x: 121.036592999667,
+ y: 30.8213379998489,
+ },
+ {
+ x: 121.036305999922,
+ y: 30.8236599999091,
+ },
+ {
+ x: 121.036827999713,
+ y: 30.8236840001165,
+ },
+ {
+ x: 121.037807999939,
+ y: 30.8218310001006,
+ },
+ {
+ x: 121.039258000257,
+ y: 30.8221500004223,
+ },
+ {
+ x: 121.040473999675,
+ y: 30.8176600002089,
+ },
+ {
+ x: 121.033431999587,
+ y: 30.8160390000998,
+ },
+ {
+ x: 121.033261999841,
+ y: 30.8166500003973,
+ },
+ {
+ x: 121.031333999964,
+ y: 30.8223329998681,
+ },
+ {
+ x: 121.02559999994,
+ y: 30.8307119995592,
+ },
+ {
+ x: 121.010470000091,
+ y: 30.8361599998842,
+ },
+ {
+ x: 121.010002000092,
+ y: 30.8380180001307,
+ },
+ {
+ x: 121.00650399976,
+ y: 30.8368310002505,
+ },
+ {
+ x: 121.000418999737,
+ y: 30.8300840002764,
+ },
+ {
+ x: 120.999054999788,
+ y: 30.830951999835,
+ },
+ {
+ x: 120.999958000062,
+ y: 30.8290979997729,
+ },
+ {
+ x: 120.999082000134,
+ y: 30.8285470004438,
+ },
+ {
+ x: 120.997257999657,
+ y: 30.8299670002769,
+ },
+ {
+ x: 120.996971999958,
+ y: 30.8316179999708,
+ },
+ {
+ x: 120.994134000384,
+ y: 30.8304869999751,
+ },
+ {
+ x: 120.99341300041,
+ y: 30.829300000095,
+ },
+ {
+ x: 120.993934000154,
+ y: 30.8289530002808,
+ },
+ {
+ x: 120.991875999678,
+ y: 30.8263469997143,
+ },
+ {
+ x: 120.990860999636,
+ y: 30.8266660000359,
+ },
+ {
+ x: 120.991556000209,
+ y: 30.8252179998109,
+ },
+ {
+ x: 120.990278999776,
+ y: 30.8237680003929,
+ },
+ {
+ x: 120.98660799956,
+ y: 30.824985999904,
+ },
+ {
+ x: 120.988430999991,
+ y: 30.8284040001445,
+ },
+ {
+ x: 120.984837999774,
+ y: 30.8309800002269,
+ },
+ {
+ x: 120.98813499983,
+ y: 30.8338460001928,
+ },
+ {
+ x: 120.984811000327,
+ y: 30.8345999998901,
+ },
+ {
+ x: 120.985678999886,
+ y: 30.8370050001807,
+ },
+ {
+ x: 120.988538000428,
+ y: 30.8406619997515,
+ },
+ {
+ x: 120.991321000164,
+ y: 30.8408280002121,
+ },
+ {
+ x: 120.991841999908,
+ y: 30.8428829996508,
+ },
+ {
+ x: 120.992770999582,
+ y: 30.8429419996736,
+ },
+ {
+ x: 120.992309999907,
+ y: 30.8436079998094,
+ },
+ {
+ x: 120.99341300041,
+ y: 30.8463290002832,
+ },
+ {
+ x: 120.99554799994,
+ y: 30.8455759997327,
+ },
+ {
+ x: 120.997293000372,
+ y: 30.8485019997675,
+ },
+ {
+ x: 120.999611000248,
+ y: 30.8483279998374,
+ },
+ {
+ x: 121.002092999592,
+ y: 30.8526719996132,
+ },
+ {
+ x: 121.003630000324,
+ y: 30.8527870004198,
+ },
+ {
+ x: 121.00574799997,
+ y: 30.8553370002024,
+ },
+ {
+ x: 121.008959999704,
+ y: 30.8538879999313,
+ },
+ {
+ x: 121.010609000205,
+ y: 30.8557999999701,
+ },
+ {
+ x: 121.006591000175,
+ y: 30.8582319997071,
+ },
+ {
+ x: 121.00841299966,
+ y: 30.8603769996988,
+ },
+ {
+ x: 121.008118000445,
+ y: 30.8615919999709,
+ },
+ {
+ x: 121.009862999977,
+ y: 30.8611300002494,
+ },
+ {
+ x: 121.010990999835,
+ y: 30.8627229999665,
+ },
+ {
+ x: 121.010036999908,
+ y: 30.8633579995721,
+ },
+ {
+ x: 121.011859000293,
+ y: 30.8650389997501,
+ },
+ {
+ x: 121.009566999817,
+ y: 30.866575000436,
+ },
+ {
+ x: 121.012553999967,
+ y: 30.8694699999406,
+ },
+ {
+ x: 121.01336100031,
+ y: 30.8715549998634,
+ },
+ {
+ x: 121.010414000206,
+ y: 30.8732079996495,
+ },
+ {
+ x: 121.013364000448,
+ y: 30.8755309997559,
+ },
+ {
+ x: 121.016035000415,
+ y: 30.8740420003381,
+ },
+ {
+ x: 121.017076999904,
+ y: 30.8750469999192,
+ },
+ {
+ x: 121.015375999703,
+ y: 30.8761670003069,
+ },
+ {
+ x: 121.017458000386,
+ y: 30.877324999749,
+ },
+ {
+ x: 121.014994000073,
+ y: 30.8788319999969,
+ },
+ {
+ x: 121.015531999702,
+ y: 30.8802600001989,
+ },
+ {
+ x: 121.016841999858,
+ y: 30.8802600001989,
+ },
+ {
+ x: 121.017032999673,
+ y: 30.8809539998273,
+ },
+ {
+ x: 121.014177000169,
+ y: 30.882885999889,
+ },
+ {
+ x: 121.013056999781,
+ y: 30.8848929998122,
+ },
+ {
+ x: 121.006694000428,
+ y: 30.8844059998371,
+ },
+ {
+ x: 121.003907999655,
+ y: 30.8851639997189,
+ },
+ {
+ x: 121.00354299991,
+ y: 30.8868809997584,
+ },
+ {
+ x: 121.004688999698,
+ y: 30.8893260000949,
+ },
+ {
+ x: 121.004133000138,
+ y: 30.8903169999297,
+ },
+ {
+ x: 120.989089999804,
+ y: 30.8919580000617,
+ },
+ {
+ x: 120.988571000152,
+ y: 30.8961489999764,
+ },
+ {
+ x: 120.986084999723,
+ y: 30.8977989996242,
+ },
+ {
+ x: 120.988246999599,
+ y: 30.9016910001396,
+ },
+ {
+ x: 120.988480999599,
+ y: 30.9043889995527,
+ },
+ {
+ x: 120.989819000147,
+ y: 30.9055039997099,
+ },
+ {
+ x: 120.994280999968,
+ y: 30.9055999996403,
+ },
+ {
+ x: 120.994358999968,
+ y: 30.9081539996075,
+ },
+ {
+ x: 120.998204000115,
+ y: 30.9070469998192,
+ },
+ {
+ x: 120.999238000134,
+ y: 30.9092590002027,
+ },
+ {
+ x: 121.000148999877,
+ y: 30.9091460003876,
+ },
+ {
+ x: 121.000200999577,
+ y: 30.9114909997099,
+ },
+ {
+ x: 120.997648999702,
+ y: 30.9121579998919,
+ },
+ {
+ x: 120.994622999552,
+ y: 30.9117400004008,
+ },
+ {
+ x: 120.99567000017,
+ y: 30.9368890000274,
+ },
+ {
+ x: 120.996459999729,
+ y: 30.9399160002233,
+ },
+ {
+ x: 120.993126999811,
+ y: 30.9433389997951,
+ },
+ {
+ x: 120.991328999634,
+ y: 30.9465290003131,
+ },
+ {
+ x: 120.992466999952,
+ y: 30.9468150000123,
+ },
+ {
+ x: 120.992380000437,
+ y: 30.9524990004286,
+ },
+ {
+ x: 120.99346500011,
+ y: 30.9532170002644,
+ },
+ {
+ x: 120.997691999886,
+ y: 30.9532170002644,
+ },
+ ],
+ ],
+ ],
+ province: "涓婃捣甯�",
+ sheng_code: "310000",
+ city: "涓婃捣鍩庡尯",
+ city_code: "310100",
+ district: "閲戝北鍖�",
+ adcode: "310116",
+ },
+ {
+ OGR_FID: 2,
+ SHAPE: [
+ [
+ [
+ {
+ x: 122.118232999753,
+ y: 31.3090060003267,
+ },
+ {
+ x: 122.100739999751,
+ y: 31.2639479999003,
+ },
+ {
+ x: 122.093302000287,
+ y: 31.2574709997868,
+ },
+ {
+ x: 122.082815999659,
+ y: 31.2593560003792,
+ },
+ {
+ x: 122.067538000179,
+ y: 31.2686499999975,
+ },
+ {
+ x: 122.012104999746,
+ y: 31.2842279998224,
+ },
+ {
+ x: 121.971567000017,
+ y: 31.2820589996232,
+ },
+ {
+ x: 121.928132999838,
+ y: 31.2853019998875,
+ },
+ {
+ x: 121.896646000213,
+ y: 31.2933379999488,
+ },
+ {
+ x: 121.861805999747,
+ y: 31.2970799998422,
+ },
+ {
+ x: 121.856621999905,
+ y: 31.2970799998422,
+ },
+ {
+ x: 121.852506999898,
+ y: 31.2949460003577,
+ },
+ {
+ x: 121.848695000374,
+ y: 31.2944889999674,
+ },
+ {
+ x: 121.836345000122,
+ y: 31.2975390003247,
+ },
+ {
+ x: 121.829370999572,
+ y: 31.3017399998012,
+ },
+ {
+ x: 121.827808000339,
+ y: 31.3037909999547,
+ },
+ {
+ x: 121.818353999637,
+ y: 31.3094320001867,
+ },
+ {
+ x: 121.808900999881,
+ y: 31.3182749996915,
+ },
+ {
+ x: 121.802343999676,
+ y: 31.3262030001684,
+ },
+ {
+ x: 121.799447000079,
+ y: 31.3304730001289,
+ },
+ {
+ x: 121.798835999782,
+ y: 31.3341309997459,
+ },
+ {
+ x: 121.797464000363,
+ y: 31.3589840001115,
+ },
+ {
+ x: 121.796244999907,
+ y: 31.3659979998079,
+ },
+ {
+ x: 121.788467000052,
+ y: 31.3795669996174,
+ },
+ {
+ x: 121.788467000052,
+ y: 31.3813970003713,
+ },
+ {
+ x: 121.78953499984,
+ y: 31.3824640001135,
+ },
+ {
+ x: 121.792432000337,
+ y: 31.3830740003649,
+ },
+ {
+ x: 121.813169999796,
+ y: 31.3826180000207,
+ },
+ {
+ x: 121.820489000067,
+ y: 31.3806360003512,
+ },
+ {
+ x: 121.827502999764,
+ y: 31.3775870000401,
+ },
+ {
+ x: 121.841377000149,
+ y: 31.3766710000667,
+ },
+ {
+ x: 121.854335999707,
+ y: 31.3714860001788,
+ },
+ {
+ x: 121.871715999894,
+ y: 31.3663000002448,
+ },
+ {
+ x: 121.947569000409,
+ y: 31.3393680002331,
+ },
+ {
+ x: 121.997256000264,
+ y: 31.3312170002644,
+ },
+ {
+ x: 122.036659999859,
+ y: 31.3256679997784,
+ },
+ {
+ x: 122.073541000017,
+ y: 31.325318999872,
+ },
+ {
+ x: 122.112209999892,
+ y: 31.323028000342,
+ },
+ {
+ x: 122.117526000425,
+ y: 31.3172389995802,
+ },
+ {
+ x: 122.118232999753,
+ y: 31.3090060003267,
+ },
+ ],
+ ],
+ [
+ [
+ {
+ x: 122.240983000066,
+ y: 31.4232610000951,
+ },
+ {
+ x: 122.242919000312,
+ y: 31.4212710000567,
+ },
+ {
+ x: 122.241356000179,
+ y: 31.4202770000836,
+ },
+ {
+ x: 122.239454999749,
+ y: 31.4205849998979,
+ },
+ {
+ x: 122.239159999634,
+ y: 31.419684999763,
+ },
+ {
+ x: 122.237389999849,
+ y: 31.4201620001762,
+ },
+ {
+ x: 122.237779999847,
+ y: 31.4210149999424,
+ },
+ {
+ x: 122.238639999936,
+ y: 31.4225339998443,
+ },
+ {
+ x: 122.239845999793,
+ y: 31.422318999822,
+ },
+ {
+ x: 122.240983000066,
+ y: 31.4232610000951,
+ },
+ ],
+ ],
+ [
+ [
+ {
+ x: 121.629762000016,
+ y: 31.4480330003228,
+ },
+ {
+ x: 121.622811999674,
+ y: 31.4470999995654,
+ },
+ {
+ x: 121.612647000359,
+ y: 31.4487619997665,
+ },
+ {
+ x: 121.58992999957,
+ y: 31.4606969997668,
+ },
+ {
+ x: 121.582047000269,
+ y: 31.4661969997917,
+ },
+ {
+ x: 121.573645000416,
+ y: 31.4746019997825,
+ },
+ {
+ x: 121.571882000054,
+ y: 31.4768849998429,
+ },
+ {
+ x: 121.571570000056,
+ y: 31.4803090003601,
+ },
+ {
+ x: 121.572919000212,
+ y: 31.4814509999637,
+ },
+ {
+ x: 121.575407999879,
+ y: 31.4817609998703,
+ },
+ {
+ x: 121.582669000174,
+ y: 31.481655000378,
+ },
+ {
+ x: 121.591071000027,
+ y: 31.4804089995757,
+ },
+ {
+ x: 121.59791700007,
+ y: 31.4789549999733,
+ },
+ {
+ x: 121.60434799986,
+ y: 31.4765679996136,
+ },
+ {
+ x: 121.60943100044,
+ y: 31.4734549999483,
+ },
+ {
+ x: 121.627375999703,
+ y: 31.4589269999811,
+ },
+ {
+ x: 121.630799000174,
+ y: 31.4550880001112,
+ },
+ {
+ x: 121.632044000031,
+ y: 31.4519750004459,
+ },
+ {
+ x: 121.631422000125,
+ y: 31.449900000085,
+ },
+ {
+ x: 121.629762000016,
+ y: 31.4480330003228,
+ },
+ ],
+ ],
+ [
+ [
+ {
+ x: 121.791544999902,
+ y: 31.3319930000769,
+ },
+ {
+ x: 121.79445199996,
+ y: 31.3123740000601,
+ },
+ {
+ x: 121.792383999922,
+ y: 31.3093770003483,
+ },
+ {
+ x: 121.786715000197,
+ y: 31.310367000137,
+ },
+ {
+ x: 121.781143999596,
+ y: 31.3130669996424,
+ },
+ {
+ x: 121.774503000014,
+ y: 31.3121939998533,
+ },
+ {
+ x: 121.766584999998,
+ y: 31.3136690004241,
+ },
+ {
+ x: 121.759872999839,
+ y: 31.3172920002257,
+ },
+ {
+ x: 121.746781000443,
+ y: 31.3397699998856,
+ },
+ {
+ x: 121.740268999615,
+ y: 31.3456419999783,
+ },
+ {
+ x: 121.723554999564,
+ y: 31.3567780000047,
+ },
+ {
+ x: 121.597204999611,
+ y: 31.4239890003921,
+ },
+ {
+ x: 121.568010999608,
+ y: 31.4381820001992,
+ },
+ {
+ x: 121.538971000411,
+ y: 31.4644589996831,
+ },
+ {
+ x: 121.525162000326,
+ y: 31.4731910003644,
+ },
+ {
+ x: 121.512463000167,
+ y: 31.4793039998797,
+ },
+ {
+ x: 121.505719000332,
+ y: 31.4845420004131,
+ },
+ {
+ x: 121.504686000359,
+ y: 31.4873199999181,
+ },
+ {
+ x: 121.504928999874,
+ y: 31.4917639998088,
+ },
+ {
+ x: 121.509053000296,
+ y: 31.4953339998643,
+ },
+ {
+ x: 121.512541000167,
+ y: 31.4962869997453,
+ },
+ {
+ x: 121.545632000017,
+ y: 31.4918189996472,
+ },
+ {
+ x: 121.558089999854,
+ y: 31.4884639996139,
+ },
+ {
+ x: 121.563090000203,
+ y: 31.485606000017,
+ },
+ {
+ x: 121.568566000021,
+ y: 31.4715569996559,
+ },
+ {
+ x: 121.571584999848,
+ y: 31.4659209996545,
+ },
+ {
+ x: 121.578806000097,
+ y: 31.4583799999371,
+ },
+ {
+ x: 121.581341000087,
+ y: 31.4567929995973,
+ },
+ {
+ x: 121.602098999569,
+ y: 31.4515329998481,
+ },
+ {
+ x: 121.669532000302,
+ y: 31.4297829995858,
+ },
+ {
+ x: 121.692839999566,
+ y: 31.4259869999002,
+ },
+ {
+ x: 121.703952000285,
+ y: 31.4217040002395,
+ },
+ {
+ x: 121.719327999787,
+ y: 31.4143209997144,
+ },
+ {
+ x: 121.737786000224,
+ y: 31.4091569998957,
+ },
+ {
+ x: 121.756466000106,
+ y: 31.3971399997113,
+ },
+ {
+ x: 121.765010000211,
+ y: 31.3927050002357,
+ },
+ {
+ x: 121.769768000193,
+ y: 31.3889509997888,
+ },
+ {
+ x: 121.776213999776,
+ y: 31.3821299999996,
+ },
+ {
+ x: 121.786540000221,
+ y: 31.3690530003957,
+ },
+ {
+ x: 121.788043000284,
+ y: 31.3652979999029,
+ },
+ {
+ x: 121.788669000374,
+ y: 31.3570679998883,
+ },
+ {
+ x: 121.791684000017,
+ y: 31.3476279998324,
+ },
+ {
+ x: 121.792153000061,
+ y: 31.3374289998485,
+ },
+ {
+ x: 121.791544999902,
+ y: 31.3319930000769,
+ },
+ ],
+ ],
+ [
+ [
+ {
+ x: 121.472255000368,
+ y: 31.7580110003075,
+ },
+ {
+ x: 121.483228000072,
+ y: 31.7553160001333,
+ },
+ {
+ x: 121.484309999607,
+ y: 31.7559980001077,
+ },
+ {
+ x: 121.485228999719,
+ y: 31.755292999972,
+ },
+ {
+ x: 121.494079000446,
+ y: 31.7551879996265,
+ },
+ {
+ x: 121.508614999882,
+ y: 31.7456660002857,
+ },
+ {
+ x: 121.522305999922,
+ y: 31.7422249998839,
+ },
+ {
+ x: 121.523980999823,
+ y: 31.7403630003523,
+ },
+ {
+ x: 121.53508300008,
+ y: 31.7375389996252,
+ },
+ {
+ x: 121.535786000124,
+ y: 31.7353549996336,
+ },
+ {
+ x: 121.545192999557,
+ y: 31.7290300002344,
+ },
+ {
+ x: 121.547077000104,
+ y: 31.7294499998177,
+ },
+ {
+ x: 121.560746000028,
+ y: 31.718795000389,
+ },
+ {
+ x: 121.574285000253,
+ y: 31.7126320003666,
+ },
+ {
+ x: 121.588019999623,
+ y: 31.7085930002668,
+ },
+ {
+ x: 121.589006000127,
+ y: 31.7074879996715,
+ },
+ {
+ x: 121.595425000264,
+ y: 31.7052289998185,
+ },
+ {
+ x: 121.596668000028,
+ y: 31.7091069996883,
+ },
+ {
+ x: 121.598510999583,
+ y: 31.7090489997116,
+ },
+ {
+ x: 121.607514000171,
+ y: 31.7063949996296,
+ },
+ {
+ x: 121.623079000296,
+ y: 31.6998629996777,
+ },
+ {
+ x: 121.62901299965,
+ y: 31.6982469997993,
+ },
+ {
+ x: 121.638377999845,
+ y: 31.6995299996099,
+ },
+ {
+ x: 121.710861999682,
+ y: 31.6757860000239,
+ },
+ {
+ x: 121.81350900014,
+ y: 31.6540220000153,
+ },
+ {
+ x: 121.970943000019,
+ y: 31.6190289996886,
+ },
+ {
+ x: 121.983971000062,
+ y: 31.5315540001171,
+ },
+ {
+ x: 121.989573000294,
+ y: 31.5138330003927,
+ },
+ {
+ x: 121.991422000125,
+ y: 31.4950399997962,
+ },
+ {
+ x: 121.987416999795,
+ y: 31.4787129996053,
+ },
+ {
+ x: 121.977559000248,
+ y: 31.4660819998845,
+ },
+ {
+ x: 121.963080999888,
+ y: 31.4586899998437,
+ },
+ {
+ x: 121.9139220001,
+ y: 31.4368119999739,
+ },
+ {
+ x: 121.897016000188,
+ y: 31.4322510000836,
+ },
+ {
+ x: 121.886418999837,
+ y: 31.4309110003425,
+ },
+ {
+ x: 121.853629000378,
+ y: 31.432133000038,
+ },
+ {
+ x: 121.829975000446,
+ y: 31.4360229995618,
+ },
+ {
+ x: 121.814898000343,
+ y: 31.4402290001683,
+ },
+ {
+ x: 121.759047999566,
+ y: 31.4601689996996,
+ },
+ {
+ x: 121.678525000429,
+ y: 31.493072999919,
+ },
+ {
+ x: 121.666301999738,
+ y: 31.4962459996532,
+ },
+ {
+ x: 121.621540000371,
+ y: 31.5038699996009,
+ },
+ {
+ x: 121.613452999756,
+ y: 31.5057760002622,
+ },
+ {
+ x: 121.604564999975,
+ y: 31.5090179995811,
+ },
+ {
+ x: 121.543379000441,
+ y: 31.5331869998802,
+ },
+ {
+ x: 121.466610999998,
+ y: 31.5762720001528,
+ },
+ {
+ x: 121.429564000278,
+ y: 31.5921019999074,
+ },
+ {
+ x: 121.410115000007,
+ y: 31.5928229998816,
+ },
+ {
+ x: 121.398835999682,
+ y: 31.5917479997704,
+ },
+ {
+ x: 121.390779999597,
+ y: 31.5871839997419,
+ },
+ {
+ x: 121.367553999617,
+ y: 31.5549679997734,
+ },
+ {
+ x: 121.340978999881,
+ y: 31.573488000371,
+ },
+ {
+ x: 121.284611000397,
+ y: 31.6181820001992,
+ },
+ {
+ x: 121.140710999613,
+ y: 31.755718999832,
+ },
+ {
+ x: 121.137437999764,
+ y: 31.7570999996653,
+ },
+ {
+ x: 121.113839999716,
+ y: 31.7608410004119,
+ },
+ {
+ x: 121.144609000405,
+ y: 31.7890960002803,
+ },
+ {
+ x: 121.176954000027,
+ y: 31.8222820000144,
+ },
+ {
+ x: 121.195806999793,
+ y: 31.8370510003035,
+ },
+ {
+ x: 121.220820000343,
+ y: 31.848980000027,
+ },
+ {
+ x: 121.237589000232,
+ y: 31.8553529998411,
+ },
+ {
+ x: 121.261091000349,
+ y: 31.8660729995693,
+ },
+ {
+ x: 121.276833999689,
+ y: 31.8709759999425,
+ },
+ {
+ x: 121.29736100021,
+ y: 31.8746250000437,
+ },
+ {
+ x: 121.305806000247,
+ y: 31.8743950002291,
+ },
+ {
+ x: 121.31128300011,
+ y: 31.8733669995874,
+ },
+ {
+ x: 121.318469999691,
+ y: 31.8704029995988,
+ },
+ {
+ x: 121.364609999652,
+ y: 31.8450670003418,
+ },
+ {
+ x: 121.380351999845,
+ y: 31.8352990004486,
+ },
+ {
+ x: 121.400762000366,
+ y: 31.8115960000554,
+ },
+ {
+ x: 121.406793999743,
+ y: 31.8081029999535,
+ },
+ {
+ x: 121.411610999748,
+ y: 31.7994029998486,
+ },
+ {
+ x: 121.406204000414,
+ y: 31.7973389999949,
+ },
+ {
+ x: 121.416220000053,
+ y: 31.7813609997104,
+ },
+ {
+ x: 121.426812000174,
+ y: 31.7710309999807,
+ },
+ {
+ x: 121.440739000305,
+ y: 31.7660929997921,
+ },
+ {
+ x: 121.450949999943,
+ y: 31.7611530004107,
+ },
+ {
+ x: 121.459543999656,
+ y: 31.7589729997042,
+ },
+ {
+ x: 121.472255000368,
+ y: 31.7580110003075,
+ },
+ ],
+ ],
+ ],
+ province: "涓婃捣甯�",
+ sheng_code: "310000",
+ city: "涓婃捣鍩庡尯",
+ city_code: "310100",
+ district: "宕囨槑鍖�",
+ adcode: "310151",
+ },
+ {
+ OGR_FID: 3,
+ SHAPE: [
+ [
+ [
+ {
+ x: 121.966577000128,
+ y: 31.1596889997476,
+ },
+ {
+ x: 121.961499999825,
+ y: 31.1596889997476,
+ },
+ {
+ x: 121.955468000448,
+ y: 31.1614360002712,
+ },
+ {
+ x: 121.948481000198,
+ y: 31.1693740003099,
+ },
+ {
+ x: 121.943882000354,
+ y: 31.1785800003668,
+ },
+ {
+ x: 121.940705000436,
+ y: 31.189057999727,
+ },
+ {
+ x: 121.938482999591,
+ y: 31.2006449998669,
+ },
+ {
+ x: 121.937693000032,
+ y: 31.209853000016,
+ },
+ {
+ x: 121.93911700005,
+ y: 31.217632999963,
+ },
+ {
+ x: 121.942448999921,
+ y: 31.2265189996522,
+ },
+ {
+ x: 121.946891999766,
+ y: 31.2309620003961,
+ },
+ {
+ x: 121.953089999604,
+ y: 31.2325499998826,
+ },
+ {
+ x: 121.964988999743,
+ y: 31.2323879996065,
+ },
+ {
+ x: 121.976433999629,
+ y: 31.2301620003761,
+ },
+ {
+ x: 121.985407999779,
+ y: 31.2265710002515,
+ },
+ {
+ x: 122.004253000076,
+ y: 31.2229820002192,
+ },
+ {
+ x: 122.006720999674,
+ y: 31.2193920001408,
+ },
+ {
+ x: 122.008292000176,
+ y: 31.2119889995927,
+ },
+ {
+ x: 122.007693000432,
+ y: 31.1940380000537,
+ },
+ {
+ x: 121.995278999926,
+ y: 31.1671189997421,
+ },
+ {
+ x: 121.99146500031,
+ y: 31.1628570001505,
+ },
+ {
+ x: 121.971654999579,
+ y: 31.1609569997658,
+ },
+ {
+ x: 121.966577000128,
+ y: 31.1596889997476,
+ },
+ ],
+ ],
+ [
+ [
+ {
+ x: 121.914676999844,
+ y: 31.196523999583,
+ },
+ {
+ x: 121.909756000439,
+ y: 31.196047000069,
+ },
+ {
+ x: 121.904679000136,
+ y: 31.1974789995562,
+ },
+ {
+ x: 121.897536999933,
+ y: 31.2036689999244,
+ },
+ {
+ x: 121.885160000234,
+ y: 31.2172039999647,
+ },
+ {
+ x: 121.881037999904,
+ y: 31.2227209998743,
+ },
+ {
+ x: 121.878417000444,
+ y: 31.2278000002698,
+ },
+ {
+ x: 121.876751000059,
+ y: 31.2385139997214,
+ },
+ {
+ x: 121.878495999591,
+ y: 31.243037999704,
+ },
+ {
+ x: 121.885793999793,
+ y: 31.2447830001354,
+ },
+ {
+ x: 121.893257999557,
+ y: 31.244304999676,
+ },
+ {
+ x: 121.919442000148,
+ y: 31.2360480002151,
+ },
+ {
+ x: 121.922619000067,
+ y: 31.2319189995623,
+ },
+ {
+ x: 121.92340799958,
+ y: 31.2262049995611,
+ },
+ {
+ x: 121.92134299968,
+ y: 31.2076330001629,
+ },
+ {
+ x: 121.918331000176,
+ y: 31.1990619997115,
+ },
+ {
+ x: 121.914676999844,
+ y: 31.196523999583,
+ },
+ ],
+ ],
+ [
+ [
+ {
+ x: 121.879921999701,
+ y: 31.1328820001042,
+ },
+ {
+ x: 121.885352000095,
+ y: 31.1239560003692,
+ },
+ {
+ x: 121.942666000036,
+ y: 31.0681269996613,
+ },
+ {
+ x: 121.958513999721,
+ y: 31.0495029996637,
+ },
+ {
+ x: 121.97335599978,
+ y: 31.0182960003602,
+ },
+ {
+ x: 121.986696999867,
+ y: 30.9706090001053,
+ },
+ {
+ x: 121.991982999916,
+ y: 30.9376429997247,
+ },
+ {
+ x: 121.994239999676,
+ y: 30.90216100023,
+ },
+ {
+ x: 121.992738999705,
+ y: 30.8771220002802,
+ },
+ {
+ x: 121.989717999786,
+ y: 30.8652939998183,
+ },
+ {
+ x: 121.981158999888,
+ y: 30.852963999589,
+ },
+ {
+ x: 121.950590000328,
+ y: 30.8281799997073,
+ },
+ {
+ x: 121.950208999845,
+ y: 30.8237779999548,
+ },
+ {
+ x: 121.951346000118,
+ y: 30.8194989995792,
+ },
+ {
+ x: 121.965550999579,
+ y: 30.7915450001017,
+ },
+ {
+ x: 121.939582999956,
+ y: 30.7795099999865,
+ },
+ {
+ x: 121.920526999821,
+ y: 30.8090299997348,
+ },
+ {
+ x: 121.911214000226,
+ y: 30.8153220003101,
+ },
+ {
+ x: 121.900392000291,
+ y: 30.8165830000055,
+ },
+ {
+ x: 121.789478999956,
+ y: 30.8191430002493,
+ },
+ {
+ x: 121.765014000396,
+ y: 30.8526599999591,
+ },
+ {
+ x: 121.763806000447,
+ y: 30.8654919999559,
+ },
+ {
+ x: 121.76727000011,
+ y: 30.8776480002551,
+ },
+ {
+ x: 121.768147000084,
+ y: 30.8779230003462,
+ },
+ {
+ x: 121.768798999574,
+ y: 30.8828170003044,
+ },
+ {
+ x: 121.772358000022,
+ y: 30.8832230001414,
+ },
+ {
+ x: 121.771688999748,
+ y: 30.8886399999361,
+ },
+ {
+ x: 121.774486000129,
+ y: 30.896802000412,
+ },
+ {
+ x: 121.77341800034,
+ y: 30.8970969996269,
+ },
+ {
+ x: 121.774373000314,
+ y: 30.8977570003853,
+ },
+ {
+ x: 121.774668000428,
+ y: 30.9016849998629,
+ },
+ {
+ x: 121.773893999808,
+ y: 30.9029699997657,
+ },
+ {
+ x: 121.774563000082,
+ y: 30.9031510000187,
+ },
+ {
+ x: 121.774085999669,
+ y: 30.907520000048,
+ },
+ {
+ x: 121.774632999713,
+ y: 30.9123289996837,
+ },
+ {
+ x: 121.775917999616,
+ y: 30.9140180002306,
+ },
+ {
+ x: 121.77679499959,
+ y: 30.9197710002315,
+ },
+ {
+ x: 121.775197999688,
+ y: 30.924688000351,
+ },
+ {
+ x: 121.773408999925,
+ y: 30.9247959999355,
+ },
+ {
+ x: 121.773460999626,
+ y: 30.9255499996328,
+ },
+ {
+ x: 121.775083999827,
+ y: 30.925094000188,
+ },
+ {
+ x: 121.774668000428,
+ y: 30.926270999607,
+ },
+ {
+ x: 121.773712000409,
+ y: 30.9263329997682,
+ },
+ {
+ x: 121.774441999898,
+ y: 30.9268500002274,
+ },
+ {
+ x: 121.77332999988,
+ y: 30.9289160001733,
+ },
+ {
+ x: 121.77324400041,
+ y: 30.9312960002103,
+ },
+ {
+ x: 121.774554999713,
+ y: 30.9315939995635,
+ },
+ {
+ x: 121.774408000129,
+ y: 30.9323840000216,
+ },
+ {
+ x: 121.773166000411,
+ y: 30.9319689997696,
+ },
+ {
+ x: 121.773478000409,
+ y: 30.9332230000415,
+ },
+ {
+ x: 121.772349999653,
+ y: 30.9337219996706,
+ },
+ {
+ x: 121.769041999988,
+ y: 30.9337409996475,
+ },
+ {
+ x: 121.768694000128,
+ y: 30.9361150003071,
+ },
+ {
+ x: 121.766914999927,
+ y: 30.9361150003071,
+ },
+ {
+ x: 121.765429999795,
+ y: 30.9374580001866,
+ },
+ {
+ x: 121.765343000279,
+ y: 30.9387359997666,
+ },
+ {
+ x: 121.764293000422,
+ y: 30.9387579998818,
+ },
+ {
+ x: 121.763650000447,
+ y: 30.9405139999212,
+ },
+ {
+ x: 121.762087000315,
+ y: 30.9387159997436,
+ },
+ {
+ x: 121.759499999725,
+ y: 30.9390269996964,
+ },
+ {
+ x: 121.759933999954,
+ y: 30.9406980003125,
+ },
+ {
+ x: 121.757130000149,
+ y: 30.9405980001976,
+ },
+ {
+ x: 121.757338999895,
+ y: 30.9423079999143,
+ },
+ {
+ x: 121.758387999706,
+ y: 30.9423289999834,
+ },
+ {
+ x: 121.760202999769,
+ y: 30.9439399996313,
+ },
+ {
+ x: 121.756574999736,
+ y: 30.9467889997126,
+ },
+ {
+ x: 121.75667799999,
+ y: 30.9497790000009,
+ },
+ {
+ x: 121.754941999973,
+ y: 30.9513189999719,
+ },
+ {
+ x: 121.747631000071,
+ y: 30.9548930002118,
+ },
+ {
+ x: 121.744878999966,
+ y: 30.9552200000031,
+ },
+ {
+ x: 121.743506999648,
+ y: 30.9540560002843,
+ },
+ {
+ x: 121.739383000125,
+ y: 30.9587489999664,
+ },
+ {
+ x: 121.738584000152,
+ y: 30.9585289997136,
+ },
+ {
+ x: 121.737151999765,
+ y: 30.9596839999167,
+ },
+ {
+ x: 121.735631999817,
+ y: 30.9588900001734,
+ },
+ {
+ x: 121.732506999598,
+ y: 30.9608689997046,
+ },
+ {
+ x: 121.733565999871,
+ y: 30.9628049999508,
+ },
+ {
+ x: 121.729606999863,
+ y: 30.9666320001667,
+ },
+ {
+ x: 121.729034000419,
+ y: 30.9684090002752,
+ },
+ {
+ x: 121.716958000212,
+ y: 30.9773139999412,
+ },
+ {
+ x: 121.70117399988,
+ y: 30.9871640000187,
+ },
+ {
+ x: 121.688672999859,
+ y: 30.9915380002785,
+ },
+ {
+ x: 121.683785000178,
+ y: 30.992354000137,
+ },
+ {
+ x: 121.679306999618,
+ y: 30.9920220001152,
+ },
+ {
+ x: 121.67027799963,
+ y: 30.9940320001767,
+ },
+ {
+ x: 121.67022599993,
+ y: 30.9931669998572,
+ },
+ {
+ x: 121.668897999843,
+ y: 30.9931679999033,
+ },
+ {
+ x: 121.669080000142,
+ y: 30.9920739998153,
+ },
+ {
+ x: 121.668211999684,
+ y: 30.9921240003224,
+ },
+ {
+ x: 121.663255000418,
+ y: 30.994258999853,
+ },
+ {
+ x: 121.659549000386,
+ y: 30.994643999621,
+ },
+ {
+ x: 121.659418999787,
+ y: 30.993671999763,
+ },
+ {
+ x: 121.658854999858,
+ y: 30.9949720003576,
+ },
+ {
+ x: 121.650297000007,
+ y: 30.9955300000095,
+ },
+ {
+ x: 121.627955000323,
+ y: 30.9953370001026,
+ },
+ {
+ x: 121.627459999979,
+ y: 30.9947029996438,
+ },
+ {
+ x: 121.625342000333,
+ y: 30.9955839998018,
+ },
+ {
+ x: 121.616966999927,
+ y: 30.9948959995508,
+ },
+ {
+ x: 121.613530999756,
+ y: 30.9980100001615,
+ },
+ {
+ x: 121.610526999721,
+ y: 31.0035700002554,
+ },
+ {
+ x: 121.608304999776,
+ y: 31.0037650002546,
+ },
+ {
+ x: 121.607871999593,
+ y: 31.00294800035,
+ },
+ {
+ x: 121.59139999991,
+ y: 31.0043730004137,
+ },
+ {
+ x: 121.590496999637,
+ y: 31.0030230002113,
+ },
+ {
+ x: 121.580117000299,
+ y: 31.0031430003492,
+ },
+ {
+ x: 121.578797999728,
+ y: 31.002970999612,
+ },
+ {
+ x: 121.578746000028,
+ y: 31.0018150002621,
+ },
+ {
+ x: 121.573295999611,
+ y: 31.0011280000572,
+ },
+ {
+ x: 121.572549000236,
+ y: 31.0017879999163,
+ },
+ {
+ x: 121.566266000076,
+ y: 31.0006630001973,
+ },
+ {
+ x: 121.566232000307,
+ y: 31.0014850003325,
+ },
+ {
+ x: 121.563750000063,
+ y: 31.0031859996342,
+ },
+ {
+ x: 121.566500000075,
+ y: 31.0046079995596,
+ },
+ {
+ x: 121.566040000446,
+ y: 31.0068690004041,
+ },
+ {
+ x: 121.567254999818,
+ y: 31.007942000423,
+ },
+ {
+ x: 121.565519999848,
+ y: 31.0129039999197,
+ },
+ {
+ x: 121.563966000131,
+ y: 31.0123690004291,
+ },
+ {
+ x: 121.563314999788,
+ y: 31.0133689997796,
+ },
+ {
+ x: 121.561831999747,
+ y: 31.0135429997097,
+ },
+ {
+ x: 121.562004999631,
+ y: 31.0127879999663,
+ },
+ {
+ x: 121.561284999703,
+ y: 31.0127879999663,
+ },
+ {
+ x: 121.561024000257,
+ y: 31.0138030000085,
+ },
+ {
+ x: 121.565614999732,
+ y: 31.0147499996128,
+ },
+ {
+ x: 121.56685700035,
+ y: 31.0163169999296,
+ },
+ {
+ x: 121.566804999751,
+ y: 31.0187250003585,
+ },
+ {
+ x: 121.568592000321,
+ y: 31.0206900001434,
+ },
+ {
+ x: 121.570466999552,
+ y: 31.020938999935,
+ },
+ {
+ x: 121.570562000336,
+ y: 31.0232569998108,
+ },
+ {
+ x: 121.569494999695,
+ y: 31.0262039999147,
+ },
+ {
+ x: 121.567541999564,
+ y: 31.0282360000914,
+ },
+ {
+ x: 121.568304999676,
+ y: 31.0286830000205,
+ },
+ {
+ x: 121.564174999876,
+ y: 31.0275790003706,
+ },
+ {
+ x: 121.563497000086,
+ y: 31.0269069999582,
+ },
+ {
+ x: 121.564843000104,
+ y: 31.0266889997976,
+ },
+ {
+ x: 121.563246000203,
+ y: 31.0259580002615,
+ },
+ {
+ x: 121.561996000115,
+ y: 31.0234279996026,
+ },
+ {
+ x: 121.5600779998,
+ y: 31.0234760000174,
+ },
+ {
+ x: 121.559435999872,
+ y: 31.0258329998931,
+ },
+ {
+ x: 121.557396000225,
+ y: 31.0250020002422,
+ },
+ {
+ x: 121.558134000084,
+ y: 31.0268209995895,
+ },
+ {
+ x: 121.556041999838,
+ y: 31.0264090003751,
+ },
+ {
+ x: 121.555512999725,
+ y: 31.0248050001507,
+ },
+ {
+ x: 121.554775999913,
+ y: 31.0248939997583,
+ },
+ {
+ x: 121.554471000237,
+ y: 31.0225359998366,
+ },
+ {
+ x: 121.552240999922,
+ y: 31.0225319996521,
+ },
+ {
+ x: 121.552275999738,
+ y: 31.0210149998424,
+ },
+ {
+ x: 121.549897999793,
+ y: 31.0208820000043,
+ },
+ {
+ x: 121.547927999777,
+ y: 31.0237449998319,
+ },
+ {
+ x: 121.548552999821,
+ y: 31.0255330004476,
+ },
+ {
+ x: 121.551530000409,
+ y: 31.0251859997342,
+ },
+ {
+ x: 121.554167999753,
+ y: 31.0268029996587,
+ },
+ {
+ x: 121.554315000237,
+ y: 31.028768000343,
+ },
+ {
+ x: 121.553255999964,
+ y: 31.0284229997217,
+ },
+ {
+ x: 121.552952000335,
+ y: 31.0290279997424,
+ },
+ {
+ x: 121.554124000422,
+ y: 31.0296319997171,
+ },
+ {
+ x: 121.553725000009,
+ y: 31.0314459997331,
+ },
+ {
+ x: 121.556069000184,
+ y: 31.032487000075,
+ },
+ {
+ x: 121.555278999726,
+ y: 31.0325549996136,
+ },
+ {
+ x: 121.55522599998,
+ y: 31.0436670003319,
+ },
+ {
+ x: 121.557899000039,
+ y: 31.0459040000696,
+ },
+ {
+ x: 121.556935999697,
+ y: 31.0473090001103,
+ },
+ {
+ x: 121.55569600007,
+ y: 31.0459270002309,
+ },
+ {
+ x: 121.554887999681,
+ y: 31.0478879998314,
+ },
+ {
+ x: 121.55542600021,
+ y: 31.0484139998063,
+ },
+ {
+ x: 121.552787999966,
+ y: 31.0502410004219,
+ },
+ {
+ x: 121.551884999693,
+ y: 31.0498939997084,
+ },
+ {
+ x: 121.550497000436,
+ y: 31.0530789999959,
+ },
+ {
+ x: 121.548449000421,
+ y: 31.0515489995867,
+ },
+ {
+ x: 121.546287999691,
+ y: 31.0516459995633,
+ },
+ {
+ x: 121.545289000387,
+ y: 31.0501600002838,
+ },
+ {
+ x: 121.543535999587,
+ y: 31.0507939998433,
+ },
+ {
+ x: 121.541609999802,
+ y: 31.0492840003564,
+ },
+ {
+ x: 121.540100000315,
+ y: 31.0497480001701,
+ },
+ {
+ x: 121.538953999627,
+ y: 31.0477259995553,
+ },
+ {
+ x: 121.538414999952,
+ y: 31.0479459998081,
+ },
+ {
+ x: 121.537192000211,
+ y: 31.048622000405,
+ },
+ {
+ x: 121.538034000369,
+ y: 31.0513090002103,
+ },
+ {
+ x: 121.536514000421,
+ y: 31.0547529998511,
+ },
+ {
+ x: 121.539013999696,
+ y: 31.0562460003527,
+ },
+ {
+ x: 121.539039999996,
+ y: 31.0579259995853,
+ },
+ {
+ x: 121.539499999625,
+ y: 31.0574209996794,
+ },
+ {
+ x: 121.539882000154,
+ y: 31.0581750002761,
+ },
+ {
+ x: 121.542850000327,
+ y: 31.0590649999498,
+ },
+ {
+ x: 121.542590000029,
+ y: 31.0598809998083,
+ },
+ {
+ x: 121.544126999861,
+ y: 31.0591409998573,
+ },
+ {
+ x: 121.544420999929,
+ y: 31.0601060002917,
+ },
+ {
+ x: 121.542936999843,
+ y: 31.0638860001388,
+ },
+ {
+ x: 121.544733999974,
+ y: 31.0646830000205,
+ },
+ {
+ x: 121.544292000276,
+ y: 31.0658699999006,
+ },
+ {
+ x: 121.546843000104,
+ y: 31.0660409996925,
+ },
+ {
+ x: 121.548015000192,
+ y: 31.0682479998454,
+ },
+ {
+ x: 121.549515000117,
+ y: 31.0680329998231,
+ },
+ {
+ x: 121.552509999737,
+ y: 31.0696170000246,
+ },
+ {
+ x: 121.550756999836,
+ y: 31.0705190002517,
+ },
+ {
+ x: 121.549047000119,
+ y: 31.0692179996111,
+ },
+ {
+ x: 121.548803999705,
+ y: 31.070067000092,
+ },
+ {
+ x: 121.549794000393,
+ y: 31.0707079999743,
+ },
+ {
+ x: 121.548535999936,
+ y: 31.0717500003623,
+ },
+ {
+ x: 121.55135599958,
+ y: 31.0739290001233,
+ },
+ {
+ x: 121.554802000212,
+ y: 31.0744269997063,
+ },
+ {
+ x: 121.55329099978,
+ y: 31.0756100003013,
+ },
+ {
+ x: 121.556320000068,
+ y: 31.0763969997218,
+ },
+ {
+ x: 121.55745700034,
+ y: 31.0759830004152,
+ },
+ {
+ x: 121.558454999599,
+ y: 31.0765640002285,
+ },
+ {
+ x: 121.558395000429,
+ y: 31.0773739998103,
+ },
+ {
+ x: 121.562030999931,
+ y: 31.0782450004065,
+ },
+ {
+ x: 121.561857000001,
+ y: 31.0789699996658,
+ },
+ {
+ x: 121.562855000158,
+ y: 31.0791790003107,
+ },
+ {
+ x: 121.563420000133,
+ y: 31.0784669998522,
+ },
+ {
+ x: 121.56690900005,
+ y: 31.0798909998698,
+ },
+ {
+ x: 121.565658999963,
+ y: 31.081432999933,
+ },
+ {
+ x: 121.56719499975,
+ y: 31.0817520002547,
+ },
+ {
+ x: 121.567690000094,
+ y: 31.0810250000038,
+ },
+ {
+ x: 121.571066000196,
+ y: 31.0823330000679,
+ },
+ {
+ x: 121.57106500015,
+ y: 31.0834369997178,
+ },
+ {
+ x: 121.569877000223,
+ y: 31.0837570000855,
+ },
+ {
+ x: 121.566969000119,
+ y: 31.0823609995605,
+ },
+ {
+ x: 121.565546000148,
+ y: 31.0838740000851,
+ },
+ {
+ x: 121.559357999872,
+ y: 31.0847429996898,
+ },
+ {
+ x: 121.556832000297,
+ y: 31.0859719997081,
+ },
+ {
+ x: 121.552796000335,
+ y: 31.0849439999657,
+ },
+ {
+ x: 121.552171000292,
+ y: 31.0833049999259,
+ },
+ {
+ x: 121.550280000322,
+ y: 31.0833930003867,
+ },
+ {
+ x: 121.549307999565,
+ y: 31.0825360004361,
+ },
+ {
+ x: 121.547519999848,
+ y: 31.0849239999427,
+ },
+ {
+ x: 121.546304999576,
+ y: 31.0850640001036,
+ },
+ {
+ x: 121.544282999861,
+ y: 31.0891099996268,
+ },
+ {
+ x: 121.547285999849,
+ y: 31.0903789996912,
+ },
+ {
+ x: 121.54677399962,
+ y: 31.0908479997354,
+ },
+ {
+ x: 121.547848999732,
+ y: 31.0912250000338,
+ },
+ {
+ x: 121.547355000333,
+ y: 31.0923539999372,
+ },
+ {
+ x: 121.551520999994,
+ y: 31.0931060004416,
+ },
+ {
+ x: 121.553446999779,
+ y: 31.0943749996066,
+ },
+ {
+ x: 121.554852999866,
+ y: 31.094185999884,
+ },
+ {
+ x: 121.556963000043,
+ y: 31.0950500001574,
+ },
+ {
+ x: 121.557109999627,
+ y: 31.0958219997855,
+ },
+ {
+ x: 121.557621999855,
+ y: 31.0941120000688,
+ },
+ {
+ x: 121.558880000312,
+ y: 31.094024999654,
+ },
+ {
+ x: 121.563045999973,
+ y: 31.0958809998083,
+ },
+ {
+ x: 121.562604000274,
+ y: 31.0988229996817,
+ },
+ {
+ x: 121.561294000118,
+ y: 31.0986040003744,
+ },
+ {
+ x: 121.560780999843,
+ y: 31.1009580001117,
+ },
+ {
+ x: 121.558724000312,
+ y: 31.1003340001141,
+ },
+ {
+ x: 121.559089000057,
+ y: 31.1012019996726,
+ },
+ {
+ x: 121.55783899997,
+ y: 31.1034960002403,
+ },
+ {
+ x: 121.559418999987,
+ y: 31.1041069996384,
+ },
+ {
+ x: 121.556900999881,
+ y: 31.1075019997176,
+ },
+ {
+ x: 121.555902999724,
+ y: 31.1076629999475,
+ },
+ {
+ x: 121.557162000226,
+ y: 31.1084609998753,
+ },
+ {
+ x: 121.553630000124,
+ y: 31.1111780001646,
+ },
+ {
+ x: 121.553282000264,
+ y: 31.1128370002274,
+ },
+ {
+ x: 121.555165999911,
+ y: 31.1130989997191,
+ },
+ {
+ x: 121.55562600044,
+ y: 31.1141230001764,
+ },
+ {
+ x: 121.553932999708,
+ y: 31.1156529996862,
+ },
+ {
+ x: 121.552458000037,
+ y: 31.1153130001949,
+ },
+ {
+ x: 121.551035000065,
+ y: 31.1171040000496,
+ },
+ {
+ x: 121.549081999934,
+ y: 31.1149010000811,
+ },
+ {
+ x: 121.548058000376,
+ y: 31.1161160003532,
+ },
+ {
+ x: 121.544951000089,
+ y: 31.115630999571,
+ },
+ {
+ x: 121.546166000361,
+ y: 31.1138340003389,
+ },
+ {
+ x: 121.543422999772,
+ y: 31.1118660004157,
+ },
+ {
+ x: 121.541505000356,
+ y: 31.1120859997691,
+ },
+ {
+ x: 121.541192000311,
+ y: 31.1136400003858,
+ },
+ {
+ x: 121.539951999785,
+ y: 31.1136629996478,
+ },
+ {
+ x: 121.537963999839,
+ y: 31.1183509999987,
+ },
+ {
+ x: 121.535238000034,
+ y: 31.117817999701,
+ },
+ {
+ x: 121.534953000381,
+ y: 31.1164569998907,
+ },
+ {
+ x: 121.533589999579,
+ y: 31.1161670000071,
+ },
+ {
+ x: 121.533251000134,
+ y: 31.1179159997237,
+ },
+ {
+ x: 121.532644000021,
+ y: 31.1177700001854,
+ },
+ {
+ x: 121.532375000206,
+ y: 31.1189359999964,
+ },
+ {
+ x: 121.531254999818,
+ y: 31.1186189997671,
+ },
+ {
+ x: 121.531047000119,
+ y: 31.1201490001762,
+ },
+ {
+ x: 121.527938999785,
+ y: 31.1193730003637,
+ },
+ {
+ x: 121.527106000042,
+ y: 31.1205879997365,
+ },
+ {
+ x: 121.519598000048,
+ y: 31.1188630002273,
+ },
+ {
+ x: 121.519944999862,
+ y: 31.1178690002542,
+ },
+ {
+ x: 121.518530000259,
+ y: 31.1173840003714,
+ },
+ {
+ x: 121.517071999573,
+ y: 31.1184490000214,
+ },
+ {
+ x: 121.510146000338,
+ y: 31.1173990001638,
+ },
+ {
+ x: 121.508417999791,
+ y: 31.1215500000325,
+ },
+ {
+ x: 121.50696100005,
+ y: 31.1232999997952,
+ },
+ {
+ x: 121.505554999963,
+ y: 31.1229000002349,
+ },
+ {
+ x: 121.505354999734,
+ y: 31.1235559999095,
+ },
+ {
+ x: 121.504921000404,
+ y: 31.1226270002359,
+ },
+ {
+ x: 121.501093000142,
+ y: 31.1220970000766,
+ },
+ {
+ x: 121.501310000256,
+ y: 31.1214049996411,
+ },
+ {
+ x: 121.49945200001,
+ y: 31.1204050002906,
+ },
+ {
+ x: 121.500892999912,
+ y: 31.1175809995635,
+ },
+ {
+ x: 121.49954799994,
+ y: 31.1168700000505,
+ },
+ {
+ x: 121.499052999596,
+ y: 31.1177819998395,
+ },
+ {
+ x: 121.497160000434,
+ y: 31.1167439996359,
+ },
+ {
+ x: 121.49470399959,
+ y: 31.1232090000954,
+ },
+ {
+ x: 121.494114000261,
+ y: 31.1235739998403,
+ },
+ {
+ x: 121.488358000122,
+ y: 31.1207679999433,
+ },
+ {
+ x: 121.485814999763,
+ y: 31.1263229998066,
+ },
+ {
+ x: 121.484339000045,
+ y: 31.1268899998736,
+ },
+ {
+ x: 121.481492000056,
+ y: 31.1265510004284,
+ },
+ {
+ x: 121.481230999711,
+ y: 31.1239680000232,
+ },
+ {
+ x: 121.480484000336,
+ y: 31.1233140004408,
+ },
+ {
+ x: 121.479269000064,
+ y: 31.1236040003244,
+ },
+ {
+ x: 121.479597999948,
+ y: 31.1226290003282,
+ },
+ {
+ x: 121.478982000319,
+ y: 31.1221020003071,
+ },
+ {
+ x: 121.477428999749,
+ y: 31.1221099997767,
+ },
+ {
+ x: 121.477577000278,
+ y: 31.1207380003585,
+ },
+ {
+ x: 121.47676100042,
+ y: 31.1200500001075,
+ },
+ {
+ x: 121.475076000057,
+ y: 31.1192170003643,
+ },
+ {
+ x: 121.474484999783,
+ y: 31.1198180002006,
+ },
+ {
+ x: 121.472948999996,
+ y: 31.1193429998796,
+ },
+ {
+ x: 121.473582999556,
+ y: 31.1185419998135,
+ },
+ {
+ x: 121.473260999995,
+ y: 31.1171270002109,
+ },
+ {
+ x: 121.475127999757,
+ y: 31.1157509997089,
+ },
+ {
+ x: 121.476873000189,
+ y: 31.1127249995591,
+ },
+ {
+ x: 121.474824000128,
+ y: 31.1120030004382,
+ },
+ {
+ x: 121.474033999669,
+ y: 31.1133489995568,
+ },
+ {
+ x: 121.472819000297,
+ y: 31.1128669998122,
+ },
+ {
+ x: 121.473523000386,
+ y: 31.1114940003479,
+ },
+ {
+ x: 121.472593999813,
+ y: 31.1113780003944,
+ },
+ {
+ x: 121.472514999767,
+ y: 31.1132929996722,
+ },
+ {
+ x: 121.470014999593,
+ y: 31.1164389999599,
+ },
+ {
+ x: 121.469468000448,
+ y: 31.1149240002425,
+ },
+ {
+ x: 121.466907000158,
+ y: 31.1139579997619,
+ },
+ {
+ x: 121.468443999991,
+ y: 31.1131009998114,
+ },
+ {
+ x: 121.467036999858,
+ y: 31.1121920001607,
+ },
+ {
+ x: 121.460664000044,
+ y: 31.1140769998537,
+ },
+ {
+ x: 121.464770999682,
+ y: 31.1207180003355,
+ },
+ {
+ x: 121.465153000211,
+ y: 31.1268469996893,
+ },
+ {
+ x: 121.464198000238,
+ y: 31.1298479995855,
+ },
+ {
+ x: 121.45787800017,
+ y: 31.1364239997678,
+ },
+ {
+ x: 121.452894999705,
+ y: 31.1441800004067,
+ },
+ {
+ x: 121.452893999658,
+ y: 31.1483939995834,
+ },
+ {
+ x: 121.454232000207,
+ y: 31.1505019996676,
+ },
+ {
+ x: 121.461194000203,
+ y: 31.1570799999421,
+ },
+ {
+ x: 121.464770999682,
+ y: 31.1622190004066,
+ },
+ {
+ x: 121.463624999894,
+ y: 31.1690529998961,
+ },
+ {
+ x: 121.460360999561,
+ y: 31.1773520003945,
+ },
+ {
+ x: 121.460360999561,
+ y: 31.1799709997619,
+ },
+ {
+ x: 121.461706999578,
+ y: 31.1830349998654,
+ },
+ {
+ x: 121.464198000238,
+ y: 31.1860690003841,
+ },
+ {
+ x: 121.469432999733,
+ y: 31.1890710003265,
+ },
+ {
+ x: 121.488783999982,
+ y: 31.1941790002607,
+ },
+ {
+ x: 121.491525999625,
+ y: 31.1958360002313,
+ },
+ {
+ x: 121.49689099972,
+ y: 31.2017779999548,
+ },
+ {
+ x: 121.50485199992,
+ y: 31.2141630000225,
+ },
+ {
+ x: 121.505449999618,
+ y: 31.2187949995896,
+ },
+ {
+ x: 121.502313999791,
+ y: 31.2251810000032,
+ },
+ {
+ x: 121.491301000041,
+ y: 31.2349790003806,
+ },
+ {
+ x: 121.489034999865,
+ y: 31.2381419996536,
+ },
+ {
+ x: 121.489034999865,
+ y: 31.2421629998227,
+ },
+ {
+ x: 121.490380999883,
+ y: 31.2442069996534,
+ },
+ {
+ x: 121.498453999852,
+ y: 31.2478300003543,
+ },
+ {
+ x: 121.52322600008,
+ y: 31.2493440000256,
+ },
+ {
+ x: 121.535707000078,
+ y: 31.2531419998035,
+ },
+ {
+ x: 121.554826999566,
+ y: 31.2663730002138,
+ },
+ {
+ x: 121.561727000301,
+ y: 31.2739699998157,
+ },
+ {
+ x: 121.56427800013,
+ y: 31.2778649995701,
+ },
+ {
+ x: 121.565293000172,
+ y: 31.2817269996014,
+ },
+ {
+ x: 121.564910999643,
+ y: 31.2874110000177,
+ },
+ {
+ x: 121.558273000199,
+ y: 31.3019060002617,
+ },
+ {
+ x: 121.55750900004,
+ y: 31.3054809996485,
+ },
+ {
+ x: 121.55763899974,
+ y: 31.3232950000643,
+ },
+ {
+ x: 121.556233999699,
+ y: 31.3299369996928,
+ },
+ {
+ x: 121.554315000237,
+ y: 31.3333850004175,
+ },
+ {
+ x: 121.551511999579,
+ y: 31.3360680000382,
+ },
+ {
+ x: 121.545123999973,
+ y: 31.3398980003925,
+ },
+ {
+ x: 121.52113499988,
+ y: 31.3488450001967,
+ },
+ {
+ x: 121.510518999552,
+ y: 31.3540130001999,
+ },
+ {
+ x: 121.504008999716,
+ y: 31.3592499997877,
+ },
+ {
+ x: 121.499407999779,
+ y: 31.3669119996891,
+ },
+ {
+ x: 121.499407999779,
+ y: 31.375723999563,
+ },
+ {
+ x: 121.507966999677,
+ y: 31.3878539995625,
+ },
+ {
+ x: 121.516861999782,
+ y: 31.3968069996434,
+ },
+ {
+ x: 121.533699000109,
+ y: 31.39056100029,
+ },
+ {
+ x: 121.589498000332,
+ y: 31.3785630000825,
+ },
+ {
+ x: 121.594731999782,
+ y: 31.3767520002047,
+ },
+ {
+ x: 121.718137999769,
+ y: 31.3055120001787,
+ },
+ {
+ x: 121.724720000228,
+ y: 31.3002809999682,
+ },
+ {
+ x: 121.739366000241,
+ y: 31.2851950003491,
+ },
+ {
+ x: 121.805531000056,
+ y: 31.1989999995504,
+ },
+ {
+ x: 121.849194000003,
+ y: 31.1575380003785,
+ },
+ {
+ x: 121.879921999701,
+ y: 31.1328820001042,
+ },
+ ],
+ ],
+ ],
+ province: "涓婃捣甯�",
+ sheng_code: "310000",
+ city: "涓婃捣鍩庡尯",
+ city_code: "310100",
+ district: "娴︿笢鏂板尯",
+ adcode: "310115",
+ },
+ {
+ OGR_FID: 4,
+ SHAPE: [
+ [
+ {
+ x: 121.487507000448,
+ y: 31.012147000084,
+ },
+ {
+ x: 121.49178699997,
+ y: 31.0001049996461,
+ },
+ {
+ x: 121.494460000029,
+ y: 31.000355000383,
+ },
+ {
+ x: 121.494408000329,
+ y: 31.0015620002861,
+ },
+ {
+ x: 121.500355000283,
+ y: 31.005704999786,
+ },
+ {
+ x: 121.510188999623,
+ y: 31.0080570003303,
+ },
+ {
+ x: 121.511143999596,
+ y: 31.009654000232,
+ },
+ {
+ x: 121.512653999982,
+ y: 31.009817999701,
+ },
+ {
+ x: 121.512854000212,
+ y: 31.0087619995667,
+ },
+ {
+ x: 121.514971999858,
+ y: 31.0084889995677,
+ },
+ {
+ x: 121.516830000105,
+ y: 31.0054220002252,
+ },
+ {
+ x: 121.517906000262,
+ y: 31.0051720003876,
+ },
+ {
+ x: 121.517774999617,
+ y: 31.0044080002291,
+ },
+ {
+ x: 121.515744000385,
+ y: 31.004763999559,
+ },
+ {
+ x: 121.515978000385,
+ y: 31.0015549999633,
+ },
+ {
+ x: 121.518565000075,
+ y: 31.0020169996848,
+ },
+ {
+ x: 121.520267000322,
+ y: 31.0013660002408,
+ },
+ {
+ x: 121.524293999868,
+ y: 30.9981539996074,
+ },
+ {
+ x: 121.526671999813,
+ y: 30.9982119995842,
+ },
+ {
+ x: 121.527661999602,
+ y: 30.9970530000959,
+ },
+ {
+ x: 121.53021300033,
+ y: 30.9980959996307,
+ },
+ {
+ x: 121.530708999821,
+ y: 30.9971389995652,
+ },
+ {
+ x: 121.533485000133,
+ y: 30.9969350000503,
+ },
+ {
+ x: 121.533955000223,
+ y: 30.9953990002637,
+ },
+ {
+ x: 121.539031999627,
+ y: 30.9964700001904,
+ },
+ {
+ x: 121.538823999928,
+ y: 30.9955989995942,
+ },
+ {
+ x: 121.540419999783,
+ y: 30.99525199978,
+ },
+ {
+ x: 121.540742000243,
+ y: 30.9962960002603,
+ },
+ {
+ x: 121.540854000012,
+ y: 30.9952220001952,
+ },
+ {
+ x: 121.541870000101,
+ y: 30.995321000264,
+ },
+ {
+ x: 121.544100000415,
+ y: 30.9931469998342,
+ },
+ {
+ x: 121.545289000387,
+ y: 30.9905939999132,
+ },
+ {
+ x: 121.547146999734,
+ y: 30.9902450000068,
+ },
+ {
+ x: 121.548544000305,
+ y: 30.9911450001417,
+ },
+ {
+ x: 121.54923899998,
+ y: 30.9947989995742,
+ },
+ {
+ x: 121.548222999892,
+ y: 30.9954659997562,
+ },
+ {
+ x: 121.54830900026,
+ y: 30.9969459996582,
+ },
+ {
+ x: 121.548952000235,
+ y: 30.9971190004416,
+ },
+ {
+ x: 121.549584999748,
+ y: 30.9958149996626,
+ },
+ {
+ x: 121.551990000039,
+ y: 30.9956690001243,
+ },
+ {
+ x: 121.551676999994,
+ y: 30.9974379998638,
+ },
+ {
+ x: 121.559279999872,
+ y: 30.9980749995617,
+ },
+ {
+ x: 121.566266000076,
+ y: 31.0006630001973,
+ },
+ {
+ x: 121.572549000236,
+ y: 31.0017879999163,
+ },
+ {
+ x: 121.573295999611,
+ y: 31.0011280000572,
+ },
+ {
+ x: 121.578746000028,
+ y: 31.0018150002621,
+ },
+ {
+ x: 121.578797999728,
+ y: 31.002970999612,
+ },
+ {
+ x: 121.580117000299,
+ y: 31.0031430003492,
+ },
+ {
+ x: 121.590496999637,
+ y: 31.0030230002113,
+ },
+ {
+ x: 121.59139999991,
+ y: 31.0043730004137,
+ },
+ {
+ x: 121.607871999593,
+ y: 31.00294800035,
+ },
+ {
+ x: 121.608304999776,
+ y: 31.0037650002546,
+ },
+ {
+ x: 121.610526999721,
+ y: 31.0035700002554,
+ },
+ {
+ x: 121.613530999756,
+ y: 30.9980100001615,
+ },
+ {
+ x: 121.616966999927,
+ y: 30.9948959995508,
+ },
+ {
+ x: 121.625342000333,
+ y: 30.9955839998018,
+ },
+ {
+ x: 121.627459999979,
+ y: 30.9947029996438,
+ },
+ {
+ x: 121.627955000323,
+ y: 30.9953370001026,
+ },
+ {
+ x: 121.650297000007,
+ y: 30.9955300000095,
+ },
+ {
+ x: 121.658854999858,
+ y: 30.9949720003576,
+ },
+ {
+ x: 121.659418999787,
+ y: 30.993671999763,
+ },
+ {
+ x: 121.659549000386,
+ y: 30.994643999621,
+ },
+ {
+ x: 121.663255000418,
+ y: 30.994258999853,
+ },
+ {
+ x: 121.668211999684,
+ y: 30.9921240003224,
+ },
+ {
+ x: 121.669080000142,
+ y: 30.9920739998153,
+ },
+ {
+ x: 121.668897999843,
+ y: 30.9931679999033,
+ },
+ {
+ x: 121.67022599993,
+ y: 30.9931669998572,
+ },
+ {
+ x: 121.67027799963,
+ y: 30.9940320001767,
+ },
+ {
+ x: 121.679306999618,
+ y: 30.9920220001152,
+ },
+ {
+ x: 121.683785000178,
+ y: 30.992354000137,
+ },
+ {
+ x: 121.688672999859,
+ y: 30.9915380002785,
+ },
+ {
+ x: 121.70117399988,
+ y: 30.9871640000187,
+ },
+ {
+ x: 121.716958000212,
+ y: 30.9773139999412,
+ },
+ {
+ x: 121.729034000419,
+ y: 30.9684090002752,
+ },
+ {
+ x: 121.729606999863,
+ y: 30.9666320001667,
+ },
+ {
+ x: 121.733565999871,
+ y: 30.9628049999508,
+ },
+ {
+ x: 121.732506999598,
+ y: 30.9608689997046,
+ },
+ {
+ x: 121.735631999817,
+ y: 30.9588900001734,
+ },
+ {
+ x: 121.737151999765,
+ y: 30.9596839999167,
+ },
+ {
+ x: 121.738584000152,
+ y: 30.9585289997136,
+ },
+ {
+ x: 121.739383000125,
+ y: 30.9587489999664,
+ },
+ {
+ x: 121.743506999648,
+ y: 30.9540560002843,
+ },
+ {
+ x: 121.744878999966,
+ y: 30.9552200000031,
+ },
+ {
+ x: 121.747631000071,
+ y: 30.9548930002118,
+ },
+ {
+ x: 121.754941999973,
+ y: 30.9513189999719,
+ },
+ {
+ x: 121.75667799999,
+ y: 30.9497790000009,
+ },
+ {
+ x: 121.756574999736,
+ y: 30.9467889997126,
+ },
+ {
+ x: 121.760202999769,
+ y: 30.9439399996313,
+ },
+ {
+ x: 121.758387999706,
+ y: 30.9423289999834,
+ },
+ {
+ x: 121.757338999895,
+ y: 30.9423079999143,
+ },
+ {
+ x: 121.757130000149,
+ y: 30.9405980001976,
+ },
+ {
+ x: 121.759933999954,
+ y: 30.9406980003125,
+ },
+ {
+ x: 121.759499999725,
+ y: 30.9390269996964,
+ },
+ {
+ x: 121.762087000315,
+ y: 30.9387159997436,
+ },
+ {
+ x: 121.763650000447,
+ y: 30.9405139999212,
+ },
+ {
+ x: 121.764293000422,
+ y: 30.9387579998818,
+ },
+ {
+ x: 121.765343000279,
+ y: 30.9387359997666,
+ },
+ {
+ x: 121.765429999795,
+ y: 30.9374580001866,
+ },
+ {
+ x: 121.766914999927,
+ y: 30.9361150003071,
+ },
+ {
+ x: 121.768694000128,
+ y: 30.9361150003071,
+ },
+ {
+ x: 121.769041999988,
+ y: 30.9337409996475,
+ },
+ {
+ x: 121.772349999653,
+ y: 30.9337219996706,
+ },
+ {
+ x: 121.773478000409,
+ y: 30.9332230000415,
+ },
+ {
+ x: 121.773166000411,
+ y: 30.9319689997696,
+ },
+ {
+ x: 121.774408000129,
+ y: 30.9323840000216,
+ },
+ {
+ x: 121.774554999713,
+ y: 30.9315939995635,
+ },
+ {
+ x: 121.77324400041,
+ y: 30.9312960002103,
+ },
+ {
+ x: 121.77332999988,
+ y: 30.9289160001733,
+ },
+ {
+ x: 121.774441999898,
+ y: 30.9268500002274,
+ },
+ {
+ x: 121.773712000409,
+ y: 30.9263329997682,
+ },
+ {
+ x: 121.774668000428,
+ y: 30.926270999607,
+ },
+ {
+ x: 121.775083999827,
+ y: 30.925094000188,
+ },
+ {
+ x: 121.773460999626,
+ y: 30.9255499996328,
+ },
+ {
+ x: 121.773408999925,
+ y: 30.9247959999355,
+ },
+ {
+ x: 121.775197999688,
+ y: 30.924688000351,
+ },
+ {
+ x: 121.77679499959,
+ y: 30.9197710002315,
+ },
+ {
+ x: 121.775917999616,
+ y: 30.9140180002306,
+ },
+ {
+ x: 121.774632999713,
+ y: 30.9123289996837,
+ },
+ {
+ x: 121.774085999669,
+ y: 30.907520000048,
+ },
+ {
+ x: 121.774563000082,
+ y: 30.9031510000187,
+ },
+ {
+ x: 121.773893999808,
+ y: 30.9029699997657,
+ },
+ {
+ x: 121.774668000428,
+ y: 30.9016849998629,
+ },
+ {
+ x: 121.774373000314,
+ y: 30.8977570003853,
+ },
+ {
+ x: 121.77341800034,
+ y: 30.8970969996269,
+ },
+ {
+ x: 121.774486000129,
+ y: 30.896802000412,
+ },
+ {
+ x: 121.771688999748,
+ y: 30.8886399999361,
+ },
+ {
+ x: 121.772358000022,
+ y: 30.8832230001414,
+ },
+ {
+ x: 121.768798999574,
+ y: 30.8828170003044,
+ },
+ {
+ x: 121.768147000084,
+ y: 30.8779230003462,
+ },
+ {
+ x: 121.76727000011,
+ y: 30.8776480002551,
+ },
+ {
+ x: 121.763806000447,
+ y: 30.8654919999559,
+ },
+ {
+ x: 121.765014000396,
+ y: 30.8526599999591,
+ },
+ {
+ x: 121.789478999956,
+ y: 30.8191430002493,
+ },
+ {
+ x: 121.676918000066,
+ y: 30.8207269995514,
+ },
+ {
+ x: 121.644211999984,
+ y: 30.8185879998364,
+ },
+ {
+ x: 121.597162000326,
+ y: 30.8075220003401,
+ },
+ {
+ x: 121.54860500042,
+ y: 30.7918050004005,
+ },
+ {
+ x: 121.512871000097,
+ y: 30.7777159999935,
+ },
+ {
+ x: 121.474303000383,
+ y: 30.7585639999287,
+ },
+ {
+ x: 121.46056099979,
+ y: 30.7786509999437,
+ },
+ {
+ x: 121.442153999907,
+ y: 30.8076960002703,
+ },
+ {
+ x: 121.440860999635,
+ y: 30.8069799996273,
+ },
+ {
+ x: 121.438657999667,
+ y: 30.8088719996431,
+ },
+ {
+ x: 121.437635000155,
+ y: 30.8082600001989,
+ },
+ {
+ x: 121.437065999996,
+ y: 30.8089349998504,
+ },
+ {
+ x: 121.432437999714,
+ y: 30.8201930001069,
+ },
+ {
+ x: 121.430701999698,
+ y: 30.8204389997601,
+ },
+ {
+ x: 121.429433999679,
+ y: 30.8191179999957,
+ },
+ {
+ x: 121.42927000021,
+ y: 30.8204389997601,
+ },
+ {
+ x: 121.421394000333,
+ y: 30.8207669995974,
+ },
+ {
+ x: 121.415923999893,
+ y: 30.8218680000082,
+ },
+ {
+ x: 121.41468300022,
+ y: 30.8180969996769,
+ },
+ {
+ x: 121.410523999983,
+ y: 30.8178750002311,
+ },
+ {
+ x: 121.410905999612,
+ y: 30.8220050000308,
+ },
+ {
+ x: 121.409351999895,
+ y: 30.8226900001434,
+ },
+ {
+ x: 121.409559999594,
+ y: 30.823820000093,
+ },
+ {
+ x: 121.400164999815,
+ y: 30.8251399998112,
+ },
+ {
+ x: 121.398299000099,
+ y: 30.8281409997074,
+ },
+ {
+ x: 121.39738700031,
+ y: 30.8278109997779,
+ },
+ {
+ x: 121.39713500038,
+ y: 30.8292149997725,
+ },
+ {
+ x: 121.396370000175,
+ y: 30.8294620003711,
+ },
+ {
+ x: 121.396066999692,
+ y: 30.8321599997842,
+ },
+ {
+ x: 121.399009999612,
+ y: 30.8319390003846,
+ },
+ {
+ x: 121.399592000371,
+ y: 30.8358499999775,
+ },
+ {
+ x: 121.398098999869,
+ y: 30.8359029997237,
+ },
+ {
+ x: 121.398020999869,
+ y: 30.835297999703,
+ },
+ {
+ x: 121.395094999834,
+ y: 30.8362440001605,
+ },
+ {
+ x: 121.393149000026,
+ y: 30.8358489999314,
+ },
+ {
+ x: 121.392367999983,
+ y: 30.8300539997923,
+ },
+ {
+ x: 121.38865200039,
+ y: 30.8297490001163,
+ },
+ {
+ x: 121.387437000118,
+ y: 30.8298860001389,
+ },
+ {
+ x: 121.387107000188,
+ y: 30.8319780003845,
+ },
+ {
+ x: 121.38298199972,
+ y: 30.8319229996468,
+ },
+ {
+ x: 121.38298199972,
+ y: 30.8348669996124,
+ },
+ {
+ x: 121.380890000373,
+ y: 30.8351429997497,
+ },
+ {
+ x: 121.380673000259,
+ y: 30.8361910004144,
+ },
+ {
+ x: 121.378883999597,
+ y: 30.8361169996998,
+ },
+ {
+ x: 121.379545000402,
+ y: 30.8372020002722,
+ },
+ {
+ x: 121.378615999829,
+ y: 30.8377769998087,
+ },
+ {
+ x: 121.378138000269,
+ y: 30.8371980000877,
+ },
+ {
+ x: 121.377486999925,
+ y: 30.8379749999464,
+ },
+ {
+ x: 121.376731000136,
+ y: 30.8375100000865,
+ },
+ {
+ x: 121.377156999996,
+ y: 30.836918999812,
+ },
+ {
+ x: 121.376375999953,
+ y: 30.8372630003872,
+ },
+ {
+ x: 121.375871000047,
+ y: 30.8382170003144,
+ },
+ {
+ x: 121.376721999721,
+ y: 30.8391029998036,
+ },
+ {
+ x: 121.374648000305,
+ y: 30.8421819996996,
+ },
+ {
+ x: 121.37446499996,
+ y: 30.8453019996876,
+ },
+ {
+ x: 121.380829000258,
+ y: 30.845234000149,
+ },
+ {
+ x: 121.379162999873,
+ y: 30.8530750002112,
+ },
+ {
+ x: 121.379761999617,
+ y: 30.8582850003525,
+ },
+ {
+ x: 121.378866999712,
+ y: 30.861288000341,
+ },
+ {
+ x: 121.379395999826,
+ y: 30.8655330000479,
+ },
+ {
+ x: 121.377295000064,
+ y: 30.8660480004149,
+ },
+ {
+ x: 121.377261000295,
+ y: 30.8693699998257,
+ },
+ {
+ x: 121.378251000084,
+ y: 30.8710889999574,
+ },
+ {
+ x: 121.378180999554,
+ y: 30.8765269998212,
+ },
+ {
+ x: 121.376888000181,
+ y: 30.8786410001821,
+ },
+ {
+ x: 121.37759999974,
+ y: 30.8809980000577,
+ },
+ {
+ x: 121.372303000083,
+ y: 30.8823320004215,
+ },
+ {
+ x: 121.367155000103,
+ y: 30.8857489997166,
+ },
+ {
+ x: 121.365575000086,
+ y: 30.8859689999694,
+ },
+ {
+ x: 121.362639999636,
+ y: 30.8887200000281,
+ },
+ {
+ x: 121.358681999675,
+ y: 30.8890140000961,
+ },
+ {
+ x: 121.356607000213,
+ y: 30.8950289995887,
+ },
+ {
+ x: 121.355886000239,
+ y: 30.8998430003542,
+ },
+ {
+ x: 121.353550000432,
+ y: 30.903265999926,
+ },
+ {
+ x: 121.352108999631,
+ y: 30.9106709996669,
+ },
+ {
+ x: 121.34696099965,
+ y: 30.9157100000165,
+ },
+ {
+ x: 121.350504000259,
+ y: 30.9183959997756,
+ },
+ {
+ x: 121.351476000117,
+ y: 30.9217909998548,
+ },
+ {
+ x: 121.350799000374,
+ y: 30.9234309999408,
+ },
+ {
+ x: 121.347595000109,
+ y: 30.9258580003465,
+ },
+ {
+ x: 121.347628999878,
+ y: 30.9302580000067,
+ },
+ {
+ x: 121.346588000436,
+ y: 30.9326820002742,
+ },
+ {
+ x: 121.349271000057,
+ y: 30.9336889999474,
+ },
+ {
+ x: 121.349349000056,
+ y: 30.9328319999968,
+ },
+ {
+ x: 121.350538000029,
+ y: 30.9331290002032,
+ },
+ {
+ x: 121.351101999957,
+ y: 30.9341000000151,
+ },
+ {
+ x: 121.3501300001,
+ y: 30.9355559997097,
+ },
+ {
+ x: 121.351058999773,
+ y: 30.9360770003534,
+ },
+ {
+ x: 121.352777999905,
+ y: 30.9356660002857,
+ },
+ {
+ x: 121.354757000335,
+ y: 30.9371230000265,
+ },
+ {
+ x: 121.358073000369,
+ y: 30.9367869998202,
+ },
+ {
+ x: 121.356624000098,
+ y: 30.946933000058,
+ },
+ {
+ x: 121.359863000177,
+ y: 30.9474929998021,
+ },
+ {
+ x: 121.360868999805,
+ y: 30.9492459997032,
+ },
+ {
+ x: 121.360314000291,
+ y: 30.9502890001373,
+ },
+ {
+ x: 121.357892000116,
+ y: 30.9509229996967,
+ },
+ {
+ x: 121.35826500023,
+ y: 30.9615549998634,
+ },
+ {
+ x: 121.356397999568,
+ y: 30.9675920003706,
+ },
+ {
+ x: 121.356511000282,
+ y: 30.9748329997432,
+ },
+ {
+ x: 121.354123999923,
+ y: 30.9798679999083,
+ },
+ {
+ x: 121.386029999985,
+ y: 30.9893839998717,
+ },
+ {
+ x: 121.404698000213,
+ y: 30.9921939999532,
+ },
+ {
+ x: 121.419353999787,
+ y: 30.9964910002595,
+ },
+ {
+ x: 121.426820999689,
+ y: 31.0011500001724,
+ },
+ {
+ x: 121.43223900043,
+ y: 31.0060470002689,
+ },
+ {
+ x: 121.436216000368,
+ y: 31.0077729998241,
+ },
+ {
+ x: 121.443725999555,
+ y: 31.009461000325,
+ },
+ {
+ x: 121.455403000248,
+ y: 31.0094230003712,
+ },
+ {
+ x: 121.461062999558,
+ y: 31.0107890004121,
+ },
+ {
+ x: 121.466924000043,
+ y: 31.0140000001,
+ },
+ {
+ x: 121.471864000323,
+ y: 31.0154060001868,
+ },
+ {
+ x: 121.484702999744,
+ y: 31.0170559998346,
+ },
+ {
+ x: 121.488444999637,
+ y: 31.0148650004195,
+ },
+ {
+ x: 121.487507000448,
+ y: 31.012147000084,
+ },
+ ],
+ ],
+ province: "涓婃捣甯�",
+ sheng_code: "310000",
+ city: "涓婃捣鍩庡尯",
+ city_code: "310100",
+ district: "濂夎搐鍖�",
+ adcode: "310120",
+ },
+ {
+ OGR_FID: 5,
+ SHAPE: [
+ [
+ {
+ x: 121.301465999756,
+ y: 31.4957389996551,
+ },
+ {
+ x: 121.301249999688,
+ y: 31.4946259995903,
+ },
+ {
+ x: 121.302022000215,
+ y: 31.4951959997956,
+ },
+ {
+ x: 121.304644999767,
+ y: 31.4943719995682,
+ },
+ {
+ x: 121.305746000178,
+ y: 31.49161300004,
+ },
+ {
+ x: 121.304113999562,
+ y: 31.4905299995599,
+ },
+ {
+ x: 121.305685000063,
+ y: 31.4891940000031,
+ },
+ {
+ x: 121.307471999733,
+ y: 31.484248000345,
+ },
+ {
+ x: 121.308817999751,
+ y: 31.4824759995678,
+ },
+ {
+ x: 121.31178699997,
+ y: 31.4830560002343,
+ },
+ {
+ x: 121.312881000058,
+ y: 31.4799160002233,
+ },
+ {
+ x: 121.312367999783,
+ y: 31.4784940002979,
+ },
+ {
+ x: 121.313566000171,
+ y: 31.4787650002046,
+ },
+ {
+ x: 121.314164999915,
+ y: 31.4777520002547,
+ },
+ {
+ x: 121.314130000099,
+ y: 31.4765499996828,
+ },
+ {
+ x: 121.309668000278,
+ y: 31.4741149998075,
+ },
+ {
+ x: 121.31183899967,
+ y: 31.4729120000888,
+ },
+ {
+ x: 121.31170899997,
+ y: 31.4718860004386,
+ },
+ {
+ x: 121.313080000242,
+ y: 31.4705170002594,
+ },
+ {
+ x: 121.316022000115,
+ y: 31.4709230000964,
+ },
+ {
+ x: 121.31645700039,
+ y: 31.4699910002845,
+ },
+ {
+ x: 121.315510999933,
+ y: 31.4685890003821,
+ },
+ {
+ x: 121.312490000014,
+ y: 31.467931999762,
+ },
+ {
+ x: 121.313400999756,
+ y: 31.4664240003674,
+ },
+ {
+ x: 121.312785000128,
+ y: 31.4657509999088,
+ },
+ {
+ x: 121.313287999941,
+ y: 31.4642039996149,
+ },
+ {
+ x: 121.314520000098,
+ y: 31.4643930002368,
+ },
+ {
+ x: 121.314973000304,
+ y: 31.4636239998478,
+ },
+ {
+ x: 121.313244999757,
+ y: 31.4618059996472,
+ },
+ {
+ x: 121.315988000346,
+ y: 31.4591490003261,
+ },
+ {
+ x: 121.314113000215,
+ y: 31.4587610004199,
+ },
+ {
+ x: 121.315249999588,
+ y: 31.4567389998051,
+ },
+ {
+ x: 121.319573000194,
+ y: 31.4568690004041,
+ },
+ {
+ x: 121.321117000349,
+ y: 31.4530670004418,
+ },
+ {
+ x: 121.322706999928,
+ y: 31.4520419999384,
+ },
+ {
+ x: 121.322836999628,
+ y: 31.4506860003587,
+ },
+ {
+ x: 121.321551999725,
+ y: 31.449891999716,
+ },
+ {
+ x: 121.323695999671,
+ y: 31.4429450004115,
+ },
+ {
+ x: 121.324676999944,
+ y: 31.4421129998152,
+ },
+ {
+ x: 121.326230999661,
+ y: 31.4423150001372,
+ },
+ {
+ x: 121.32666499989,
+ y: 31.4415039996099,
+ },
+ {
+ x: 121.329087000065,
+ y: 31.4419640001386,
+ },
+ {
+ x: 121.331889999824,
+ y: 31.4349240001425,
+ },
+ {
+ x: 121.332072000123,
+ y: 31.4313390002947,
+ },
+ {
+ x: 121.330572000198,
+ y: 31.430998999904,
+ },
+ {
+ x: 121.330527999967,
+ y: 31.4294009999562,
+ },
+ {
+ x: 121.331838000124,
+ y: 31.4268419997586,
+ },
+ {
+ x: 121.332889000027,
+ y: 31.4271199999881,
+ },
+ {
+ x: 121.332854000212,
+ y: 31.4262769997837,
+ },
+ {
+ x: 121.331856000054,
+ y: 31.4259900000385,
+ },
+ {
+ x: 121.331980000377,
+ y: 31.4209050002656,
+ },
+ {
+ x: 121.330050000407,
+ y: 31.4211430004491,
+ },
+ {
+ x: 121.330632000267,
+ y: 31.4201430001993,
+ },
+ {
+ x: 121.327819000047,
+ y: 31.4187940000431,
+ },
+ {
+ x: 121.327897000047,
+ y: 31.4171269996114,
+ },
+ {
+ x: 121.329042999835,
+ y: 31.4173439997259,
+ },
+ {
+ x: 121.32872999979,
+ y: 31.4158809997084,
+ },
+ {
+ x: 121.329528999764,
+ y: 31.4155060004016,
+ },
+ {
+ x: 121.327923000346,
+ y: 31.4149699999656,
+ },
+ {
+ x: 121.328566000321,
+ y: 31.4125889998825,
+ },
+ {
+ x: 121.325389000402,
+ y: 31.4122719996531,
+ },
+ {
+ x: 121.323904000269,
+ y: 31.4138159998086,
+ },
+ {
+ x: 121.309790999655,
+ y: 31.4090870002649,
+ },
+ {
+ x: 121.312836999828,
+ y: 31.4055410004169,
+ },
+ {
+ x: 121.311205000111,
+ y: 31.4048530001659,
+ },
+ {
+ x: 121.31128300011,
+ y: 31.4021709996919,
+ },
+ {
+ x: 121.309964000438,
+ y: 31.4008190002967,
+ },
+ {
+ x: 121.312907000358,
+ y: 31.3993089999105,
+ },
+ {
+ x: 121.314589999729,
+ y: 31.3996250000937,
+ },
+ {
+ x: 121.315761999816,
+ y: 31.3988850001427,
+ },
+ {
+ x: 121.316933999904,
+ y: 31.3994469999791,
+ },
+ {
+ x: 121.317255000318,
+ y: 31.3974680004479,
+ },
+ {
+ x: 121.318591999921,
+ y: 31.397744999732,
+ },
+ {
+ x: 121.318792000151,
+ y: 31.3952030003182,
+ },
+ {
+ x: 121.315884000047,
+ y: 31.3909979997579,
+ },
+ {
+ x: 121.318523000336,
+ y: 31.3903719996681,
+ },
+ {
+ x: 121.322055000438,
+ y: 31.3829360002962,
+ },
+ {
+ x: 121.3259609998,
+ y: 31.3829979995581,
+ },
+ {
+ x: 121.326950999589,
+ y: 31.3815110002325,
+ },
+ {
+ x: 121.326266000376,
+ y: 31.3811770001185,
+ },
+ {
+ x: 121.32674299989,
+ y: 31.3803220002602,
+ },
+ {
+ x: 121.32417400013,
+ y: 31.3792149995726,
+ },
+ {
+ x: 121.326830000304,
+ y: 31.3761919995612,
+ },
+ {
+ x: 121.329399000064,
+ y: 31.3747010000512,
+ },
+ {
+ x: 121.328765999651,
+ y: 31.3731470003339,
+ },
+ {
+ x: 121.331421999825,
+ y: 31.3719560002692,
+ },
+ {
+ x: 121.331526000125,
+ y: 31.3704560003442,
+ },
+ {
+ x: 121.330146000338,
+ y: 31.3699009999312,
+ },
+ {
+ x: 121.330440000406,
+ y: 31.3688279999123,
+ },
+ {
+ x: 121.333001999843,
+ y: 31.3660460002228,
+ },
+ {
+ x: 121.33450399986,
+ y: 31.3625849997979,
+ },
+ {
+ x: 121.335753999947,
+ y: 31.3623719998679,
+ },
+ {
+ x: 121.336518000106,
+ y: 31.3611799997572,
+ },
+ {
+ x: 121.33699499962,
+ y: 31.3597549996935,
+ },
+ {
+ x: 121.332542000213,
+ y: 31.3578799995624,
+ },
+ {
+ x: 121.333167000257,
+ y: 31.3552630002873,
+ },
+ {
+ x: 121.331794999939,
+ y: 31.3544420001982,
+ },
+ {
+ x: 121.331821000239,
+ y: 31.3534769997638,
+ },
+ {
+ x: 121.330068000338,
+ y: 31.3527599999741,
+ },
+ {
+ x: 121.327689000347,
+ y: 31.3531799995574,
+ },
+ {
+ x: 121.327941000277,
+ y: 31.3489610001501,
+ },
+ {
+ x: 121.331889999824,
+ y: 31.3486829999206,
+ },
+ {
+ x: 121.332152000215,
+ y: 31.3471379997189,
+ },
+ {
+ x: 121.335128999904,
+ y: 31.3461849998379,
+ },
+ {
+ x: 121.337811000377,
+ y: 31.3431639999187,
+ },
+ {
+ x: 121.339757000186,
+ y: 31.3437809995935,
+ },
+ {
+ x: 121.341691000339,
+ y: 31.3381760001224,
+ },
+ {
+ x: 121.338254000122,
+ y: 31.3379189999619,
+ },
+ {
+ x: 121.338236000191,
+ y: 31.3364549998984,
+ },
+ {
+ x: 121.337108000334,
+ y: 31.3351439996959,
+ },
+ {
+ x: 121.338766000351,
+ y: 31.3335879998863,
+ },
+ {
+ x: 121.337740999847,
+ y: 31.3328609996355,
+ },
+ {
+ x: 121.33889600005,
+ y: 31.33176100017,
+ },
+ {
+ x: 121.338471000236,
+ y: 31.3313890001023,
+ },
+ {
+ x: 121.340961999996,
+ y: 31.3288419995587,
+ },
+ {
+ x: 121.341343999626,
+ y: 31.3269860003037,
+ },
+ {
+ x: 121.342437999714,
+ y: 31.327111999819,
+ },
+ {
+ x: 121.342923999643,
+ y: 31.3259249999388,
+ },
+ {
+ x: 121.340259999999,
+ y: 31.3251870000801,
+ },
+ {
+ x: 121.340988000296,
+ y: 31.3226960003202,
+ },
+ {
+ x: 121.344609000005,
+ y: 31.3231580000417,
+ },
+ {
+ x: 121.344243000214,
+ y: 31.3218019995627,
+ },
+ {
+ x: 121.343184999988,
+ y: 31.3213939996334,
+ },
+ {
+ x: 121.343097999573,
+ y: 31.3185640004284,
+ },
+ {
+ x: 121.338696999867,
+ y: 31.31882599992,
+ },
+ {
+ x: 121.331343999826,
+ y: 31.3053350001102,
+ },
+ {
+ x: 121.329546999694,
+ y: 31.3051489996267,
+ },
+ {
+ x: 121.326752000305,
+ y: 31.3033320003716,
+ },
+ {
+ x: 121.329633000063,
+ y: 31.2980040001845,
+ },
+ {
+ x: 121.331318000425,
+ y: 31.2989260004346,
+ },
+ {
+ x: 121.333062999958,
+ y: 31.2974309998408,
+ },
+ {
+ x: 121.331204999711,
+ y: 31.2966259995903,
+ },
+ {
+ x: 121.331179000311,
+ y: 31.2958360000314,
+ },
+ {
+ x: 121.329461000225,
+ y: 31.2962189997072,
+ },
+ {
+ x: 121.329806999993,
+ y: 31.2949329997582,
+ },
+ {
+ x: 121.327669000324,
+ y: 31.2948850002426,
+ },
+ {
+ x: 121.328260999745,
+ y: 31.29281300002,
+ },
+ {
+ x: 121.321844999747,
+ y: 31.2908310003505,
+ },
+ {
+ x: 121.322437000068,
+ y: 31.2901650002146,
+ },
+ {
+ x: 121.321526000325,
+ y: 31.289195000449,
+ },
+ {
+ x: 121.322766999997,
+ y: 31.2870840002265,
+ },
+ {
+ x: 121.323695999671,
+ y: 31.287353000041,
+ },
+ {
+ x: 121.324441999898,
+ y: 31.2865020003671,
+ },
+ {
+ x: 121.328176000322,
+ y: 31.2879630002923,
+ },
+ {
+ x: 121.329165000065,
+ y: 31.2844170004443,
+ },
+ {
+ x: 121.328566000321,
+ y: 31.2842950002141,
+ },
+ {
+ x: 121.330154999853,
+ y: 31.2817020002472,
+ },
+ {
+ x: 121.331499999825,
+ y: 31.2819320000618,
+ },
+ {
+ x: 121.332046999869,
+ y: 31.2793339998643,
+ },
+ {
+ x: 121.330849000381,
+ y: 31.2791440000956,
+ },
+ {
+ x: 121.33166500024,
+ y: 31.277355000333,
+ },
+ {
+ x: 121.334313000045,
+ y: 31.2768880003809,
+ },
+ {
+ x: 121.33369600037,
+ y: 31.2747289997436,
+ },
+ {
+ x: 121.338965999681,
+ y: 31.2733150001872,
+ },
+ {
+ x: 121.340136999723,
+ y: 31.2757930002468,
+ },
+ {
+ x: 121.347656000224,
+ y: 31.274317999676,
+ },
+ {
+ x: 121.347750000063,
+ y: 31.2749970004113,
+ },
+ {
+ x: 121.35271699979,
+ y: 31.2732699999106,
+ },
+ {
+ x: 121.354305000176,
+ y: 31.270650999644,
+ },
+ {
+ x: 121.356650000397,
+ y: 31.2726940003279,
+ },
+ {
+ x: 121.362813999566,
+ y: 31.2714780000097,
+ },
+ {
+ x: 121.362367999684,
+ y: 31.2685099998367,
+ },
+ {
+ x: 121.357605000371,
+ y: 31.2694110000177,
+ },
+ {
+ x: 121.355234999895,
+ y: 31.2688510002735,
+ },
+ {
+ x: 121.355294999964,
+ y: 31.2663989996142,
+ },
+ {
+ x: 121.354306000222,
+ y: 31.2654639996639,
+ },
+ {
+ x: 121.357161999727,
+ y: 31.2617940003929,
+ },
+ {
+ x: 121.361397999918,
+ y: 31.2612030001184,
+ },
+ {
+ x: 121.361258999803,
+ y: 31.2595359996867,
+ },
+ {
+ x: 121.369932999608,
+ y: 31.2588929997122,
+ },
+ {
+ x: 121.370522999837,
+ y: 31.2613250003486,
+ },
+ {
+ x: 121.372259999899,
+ y: 31.2613570000256,
+ },
+ {
+ x: 121.376248000345,
+ y: 31.2595959997556,
+ },
+ {
+ x: 121.371110999973,
+ y: 31.2462900003833,
+ },
+ {
+ x: 121.368461000075,
+ y: 31.247534000194,
+ },
+ {
+ x: 121.367721000124,
+ y: 31.2455979999478,
+ },
+ {
+ x: 121.36375599984,
+ y: 31.2492360004411,
+ },
+ {
+ x: 121.361658000217,
+ y: 31.2477130003547,
+ },
+ {
+ x: 121.360531000405,
+ y: 31.2445399997213,
+ },
+ {
+ x: 121.359902000177,
+ y: 31.2447939997434,
+ },
+ {
+ x: 121.358493999998,
+ y: 31.2419499998927,
+ },
+ {
+ x: 121.359053999742,
+ y: 31.2413239998028,
+ },
+ {
+ x: 121.358108000184,
+ y: 31.2416240001476,
+ },
+ {
+ x: 121.356115000007,
+ y: 31.2404699999906,
+ },
+ {
+ x: 121.355479000356,
+ y: 31.2423650001447,
+ },
+ {
+ x: 121.35146499961,
+ y: 31.2420279998923,
+ },
+ {
+ x: 121.351605999817,
+ y: 31.2399130003847,
+ },
+ {
+ x: 121.349583000055,
+ y: 31.2389989996042,
+ },
+ {
+ x: 121.348253999922,
+ y: 31.2402159999685,
+ },
+ {
+ x: 121.344149000376,
+ y: 31.241254000172,
+ },
+ {
+ x: 121.344591000075,
+ y: 31.2432949998644,
+ },
+ {
+ x: 121.345537999679,
+ y: 31.2437229998166,
+ },
+ {
+ x: 121.344887000235,
+ y: 31.2454379997639,
+ },
+ {
+ x: 121.342698000013,
+ y: 31.2450770002034,
+ },
+ {
+ x: 121.342231000061,
+ y: 31.2429300001195,
+ },
+ {
+ x: 121.341041000042,
+ y: 31.2438450000467,
+ },
+ {
+ x: 121.341448999971,
+ y: 31.2458679998084,
+ },
+ {
+ x: 121.340033000323,
+ y: 31.2454429999945,
+ },
+ {
+ x: 121.340996999812,
+ y: 31.2417739998702,
+ },
+ {
+ x: 121.336291999576,
+ y: 31.2418459995932,
+ },
+ {
+ x: 121.334435000275,
+ y: 31.2398310002005,
+ },
+ {
+ x: 121.330086000269,
+ y: 31.237526000025,
+ },
+ {
+ x: 121.330093999738,
+ y: 31.2347169999896,
+ },
+ {
+ x: 121.329321000064,
+ y: 31.2339169999696,
+ },
+ {
+ x: 121.321587999587,
+ y: 31.231510999633,
+ },
+ {
+ x: 121.317550999579,
+ y: 31.2314460002328,
+ },
+ {
+ x: 121.30955599961,
+ y: 31.2290870002649,
+ },
+ {
+ x: 121.298506999998,
+ y: 31.2325800003668,
+ },
+ {
+ x: 121.292449000321,
+ y: 31.2330300004342,
+ },
+ {
+ x: 121.2881689999,
+ y: 31.2347509997589,
+ },
+ {
+ x: 121.283525999825,
+ y: 31.2412560002642,
+ },
+ {
+ x: 121.282588999783,
+ y: 31.2456899996938,
+ },
+ {
+ x: 121.279880999908,
+ y: 31.246714000151,
+ },
+ {
+ x: 121.277138000219,
+ y: 31.2497849996781,
+ },
+ {
+ x: 121.279768000093,
+ y: 31.2538259998701,
+ },
+ {
+ x: 121.27889100012,
+ y: 31.2543509997989,
+ },
+ {
+ x: 121.275906000062,
+ y: 31.2538839998468,
+ },
+ {
+ x: 121.270854000012,
+ y: 31.2555219998405,
+ },
+ {
+ x: 121.269213999926,
+ y: 31.2555500002324,
+ },
+ {
+ x: 121.266845000397,
+ y: 31.2542660003757,
+ },
+ {
+ x: 121.264076999554,
+ y: 31.2561669999072,
+ },
+ {
+ x: 121.263337999649,
+ y: 31.2535099996868,
+ },
+ {
+ x: 121.262617999721,
+ y: 31.2553310000257,
+ },
+ {
+ x: 121.263077000203,
+ y: 31.2565169998597,
+ },
+ {
+ x: 121.260015000192,
+ y: 31.258505999852,
+ },
+ {
+ x: 121.259546000148,
+ y: 31.2611620000263,
+ },
+ {
+ x: 121.25578700037,
+ y: 31.2603310003754,
+ },
+ {
+ x: 121.251681999924,
+ y: 31.2606400002359,
+ },
+ {
+ x: 121.25145700034,
+ y: 31.2614519999099,
+ },
+ {
+ x: 121.249973000254,
+ y: 31.2616370003473,
+ },
+ {
+ x: 121.249756000139,
+ y: 31.2606980002126,
+ },
+ {
+ x: 121.247584999848,
+ y: 31.2607709999817,
+ },
+ {
+ x: 121.247541999664,
+ y: 31.2619599999541,
+ },
+ {
+ x: 121.246553999967,
+ y: 31.2619840001615,
+ },
+ {
+ x: 121.246761999667,
+ y: 31.260410999568,
+ },
+ {
+ x: 121.245121000434,
+ y: 31.2609520002347,
+ },
+ {
+ x: 121.242334999661,
+ y: 31.2604569998907,
+ },
+ {
+ x: 121.242153000261,
+ y: 31.2618050000008,
+ },
+ {
+ x: 121.237822000185,
+ y: 31.2613780000947,
+ },
+ {
+ x: 121.231963999839,
+ y: 31.2644780000597,
+ },
+ {
+ x: 121.224647999705,
+ y: 31.264704999736,
+ },
+ {
+ x: 121.22476899989,
+ y: 31.2637180000857,
+ },
+ {
+ x: 121.220560000044,
+ y: 31.263032999973,
+ },
+ {
+ x: 121.220230000114,
+ y: 31.263843999601,
+ },
+ {
+ x: 121.219422999772,
+ y: 31.2634900003633,
+ },
+ {
+ x: 121.219422999772,
+ y: 31.2610290001883,
+ },
+ {
+ x: 121.215769000339,
+ y: 31.2594070000331,
+ },
+ {
+ x: 121.216836000081,
+ y: 31.2582909998299,
+ },
+ {
+ x: 121.214119999838,
+ y: 31.2577089999704,
+ },
+ {
+ x: 121.214101999907,
+ y: 31.2552230004412,
+ },
+ {
+ x: 121.213138999565,
+ y: 31.2554269999561,
+ },
+ {
+ x: 121.212879000166,
+ y: 31.2574040002945,
+ },
+ {
+ x: 121.209737000063,
+ y: 31.2563409998373,
+ },
+ {
+ x: 121.209589999579,
+ y: 31.2588500004272,
+ },
+ {
+ x: 121.208165999561,
+ y: 31.2618189997471,
+ },
+ {
+ x: 121.208850999674,
+ y: 31.2624520001597,
+ },
+ {
+ x: 121.208139000115,
+ y: 31.2628579999968,
+ },
+ {
+ x: 121.207254999818,
+ y: 31.262020000023,
+ },
+ {
+ x: 121.2059610004,
+ y: 31.2632880000412,
+ },
+ {
+ x: 121.204815999759,
+ y: 31.2611500003723,
+ },
+ {
+ x: 121.205362999803,
+ y: 31.2599960002153,
+ },
+ {
+ x: 121.204017999831,
+ y: 31.259467000102,
+ },
+ {
+ x: 121.201907999655,
+ y: 31.2620349998155,
+ },
+ {
+ x: 121.198401999852,
+ y: 31.2590980001726,
+ },
+ {
+ x: 121.198669999621,
+ y: 31.2577900001085,
+ },
+ {
+ x: 121.197906000362,
+ y: 31.2580159997386,
+ },
+ {
+ x: 121.196144000046,
+ y: 31.2567099997667,
+ },
+ {
+ x: 121.195380999933,
+ y: 31.2572040000646,
+ },
+ {
+ x: 121.192855000358,
+ y: 31.2556719995632,
+ },
+ {
+ x: 121.192447000429,
+ y: 31.2567099997667,
+ },
+ {
+ x: 121.190693999628,
+ y: 31.25585199977,
+ },
+ {
+ x: 121.191596999902,
+ y: 31.2553560002792,
+ },
+ {
+ x: 121.191779000201,
+ y: 31.2531910002645,
+ },
+ {
+ x: 121.188889000027,
+ y: 31.2534169998947,
+ },
+ {
+ x: 121.188532999798,
+ y: 31.2555819999094,
+ },
+ {
+ x: 121.184608999606,
+ y: 31.2569360002962,
+ },
+ {
+ x: 121.181944999962,
+ y: 31.2542759999375,
+ },
+ {
+ x: 121.179739999901,
+ y: 31.2540959997307,
+ },
+ {
+ x: 121.177032000027,
+ y: 31.2563480001601,
+ },
+ {
+ x: 121.174826999966,
+ y: 31.2553560002792,
+ },
+ {
+ x: 121.174505999552,
+ y: 31.2566190000668,
+ },
+ {
+ x: 121.17351699981,
+ y: 31.2566190000668,
+ },
+ {
+ x: 121.174279999922,
+ y: 31.2577910001546,
+ },
+ {
+ x: 121.173333000318,
+ y: 31.2581509996689,
+ },
+ {
+ x: 121.17225700016,
+ y: 31.256530999606,
+ },
+ {
+ x: 121.169731999732,
+ y: 31.2587830000355,
+ },
+ {
+ x: 121.166893000112,
+ y: 31.2568459997431,
+ },
+ {
+ x: 121.165495000394,
+ y: 31.2583770001984,
+ },
+ {
+ x: 121.164409999822,
+ y: 31.258108000384,
+ },
+ {
+ x: 121.163958999708,
+ y: 31.2595060001019,
+ },
+ {
+ x: 121.164905000166,
+ y: 31.2594599997792,
+ },
+ {
+ x: 121.16585199977,
+ y: 31.261037999704,
+ },
+ {
+ x: 121.163507999595,
+ y: 31.2615320000019,
+ },
+ {
+ x: 121.163125999965,
+ y: 31.2658450001467,
+ },
+ {
+ x: 121.158072999869,
+ y: 31.2710659998961,
+ },
+ {
+ x: 121.156502000267,
+ y: 31.2695170004093,
+ },
+ {
+ x: 121.154678999836,
+ y: 31.2718829998007,
+ },
+ {
+ x: 121.152846999889,
+ y: 31.2723679996835,
+ },
+ {
+ x: 121.150981000173,
+ y: 31.2680290001383,
+ },
+ {
+ x: 121.148315999584,
+ y: 31.2686000003898,
+ },
+ {
+ x: 121.148219999653,
+ y: 31.2693639996489,
+ },
+ {
+ x: 121.14721299998,
+ y: 31.2695069999481,
+ },
+ {
+ x: 121.149557000155,
+ y: 31.2747980002276,
+ },
+ {
+ x: 121.149174999627,
+ y: 31.2785180000058,
+ },
+ {
+ x: 121.150920000058,
+ y: 31.2803150001372,
+ },
+ {
+ x: 121.150981000173,
+ y: 31.2826360001513,
+ },
+ {
+ x: 121.15485199972,
+ y: 31.2834570002404,
+ },
+ {
+ x: 121.154454000252,
+ y: 31.2845029999136,
+ },
+ {
+ x: 121.156736000266,
+ y: 31.2858700000006,
+ },
+ {
+ x: 121.154749000366,
+ y: 31.2895440003554,
+ },
+ {
+ x: 121.151834999985,
+ y: 31.2892819999644,
+ },
+ {
+ x: 121.151779000101,
+ y: 31.290453000006,
+ },
+ {
+ x: 121.150163000222,
+ y: 31.2905099999366,
+ },
+ {
+ x: 121.150124000222,
+ y: 31.2919230003462,
+ },
+ {
+ x: 121.148575999882,
+ y: 31.2918329997931,
+ },
+ {
+ x: 121.148323999953,
+ y: 31.2932630000874,
+ },
+ {
+ x: 121.146717999636,
+ y: 31.2937989996242,
+ },
+ {
+ x: 121.146536000236,
+ y: 31.2957650003545,
+ },
+ {
+ x: 121.148151000069,
+ y: 31.2959439996159,
+ },
+ {
+ x: 121.146941000027,
+ y: 31.2982319999069,
+ },
+ {
+ x: 121.145950000192,
+ y: 31.2980699996309,
+ },
+ {
+ x: 121.143210999788,
+ y: 31.3000560003842,
+ },
+ {
+ x: 121.146214999822,
+ y: 31.3008789996662,
+ },
+ {
+ x: 121.142323000206,
+ y: 31.3077819996396,
+ },
+ {
+ x: 121.139190999665,
+ y: 31.3115459996482,
+ },
+ {
+ x: 121.134365000145,
+ y: 31.3074699996408,
+ },
+ {
+ x: 121.135058999773,
+ y: 31.3048310002505,
+ },
+ {
+ x: 121.129172999934,
+ y: 31.3039009996315,
+ },
+ {
+ x: 121.12534299958,
+ y: 31.304421000229,
+ },
+ {
+ x: 121.125023000111,
+ y: 31.3051190000419,
+ },
+ {
+ x: 121.124527999767,
+ y: 31.309354000187,
+ },
+ {
+ x: 121.125170999742,
+ y: 31.3101380003685,
+ },
+ {
+ x: 121.124502000367,
+ y: 31.3131259996652,
+ },
+ {
+ x: 121.123364000049,
+ y: 31.3137050002856,
+ },
+ {
+ x: 121.124033000323,
+ y: 31.3160840002764,
+ },
+ {
+ x: 121.122357000375,
+ y: 31.3204069999831,
+ },
+ {
+ x: 121.124640999583,
+ y: 31.3221280002071,
+ },
+ {
+ x: 121.124683999767,
+ y: 31.3236080001092,
+ },
+ {
+ x: 121.126602000082,
+ y: 31.3242180003605,
+ },
+ {
+ x: 121.126932000012,
+ y: 31.3272610003949,
+ },
+ {
+ x: 121.12870399989,
+ y: 31.3274039997948,
+ },
+ {
+ x: 121.128964000188,
+ y: 31.3283049999758,
+ },
+ {
+ x: 121.127219999803,
+ y: 31.3298409997624,
+ },
+ {
+ x: 121.127253999573,
+ y: 31.3304510000137,
+ },
+ {
+ x: 121.128642999775,
+ y: 31.3305100000365,
+ },
+ {
+ x: 121.12887799982,
+ y: 31.3319869998003,
+ },
+ {
+ x: 121.1279740004,
+ y: 31.3337860000239,
+ },
+ {
+ x: 121.126540999967,
+ y: 31.3339270002309,
+ },
+ {
+ x: 121.126324999899,
+ y: 31.3361650000148,
+ },
+ {
+ x: 121.125222000295,
+ y: 31.3369199997582,
+ },
+ {
+ x: 121.125855999855,
+ y: 31.3379630001924,
+ },
+ {
+ x: 121.125247999695,
+ y: 31.3420539999922,
+ },
+ {
+ x: 121.126202999669,
+ y: 31.3433310004254,
+ },
+ {
+ x: 121.125829999555,
+ y: 31.3460210003689,
+ },
+ {
+ x: 121.119327000041,
+ y: 31.3445669998672,
+ },
+ {
+ x: 121.113353999787,
+ y: 31.3452509999337,
+ },
+ {
+ x: 121.112703000343,
+ y: 31.3489250002886,
+ },
+ {
+ x: 121.115575999733,
+ y: 31.3493700001255,
+ },
+ {
+ x: 121.113352999741,
+ y: 31.3532039997648,
+ },
+ {
+ x: 121.107902000177,
+ y: 31.3522750000913,
+ },
+ {
+ x: 121.10652999986,
+ y: 31.3533249999488,
+ },
+ {
+ x: 121.103698999709,
+ y: 31.3524370003673,
+ },
+ {
+ x: 121.103785000078,
+ y: 31.3558280002621,
+ },
+ {
+ x: 121.102647999805,
+ y: 31.3570400003957,
+ },
+ {
+ x: 121.103620999709,
+ y: 31.3622450003066,
+ },
+ {
+ x: 121.102127000061,
+ y: 31.3663230004062,
+ },
+ {
+ x: 121.102327000291,
+ y: 31.3683830000754,
+ },
+ {
+ x: 121.104262999638,
+ y: 31.3683029999835,
+ },
+ {
+ x: 121.104653999682,
+ y: 31.3664900000135,
+ },
+ {
+ x: 121.105817000254,
+ y: 31.3664320000368,
+ },
+ {
+ x: 121.108221999646,
+ y: 31.3669250002886,
+ },
+ {
+ x: 121.10906499985,
+ y: 31.3689849999578,
+ },
+ {
+ x: 121.115592999617,
+ y: 31.3704669999522,
+ },
+ {
+ x: 121.114456000244,
+ y: 31.3723519996451,
+ },
+ {
+ x: 121.110600999637,
+ y: 31.3729310002655,
+ },
+ {
+ x: 121.109124999919,
+ y: 31.3762379998838,
+ },
+ {
+ x: 121.118667000182,
+ y: 31.3802709997069,
+ },
+ {
+ x: 121.119652999786,
+ y: 31.3785230000365,
+ },
+ {
+ x: 121.126636999898,
+ y: 31.381465999956,
+ },
+ {
+ x: 121.127157999642,
+ y: 31.3806199996133,
+ },
+ {
+ x: 121.133811999824,
+ y: 31.3829589995582,
+ },
+ {
+ x: 121.132919000012,
+ y: 31.3846009997364,
+ },
+ {
+ x: 121.133339999641,
+ y: 31.3853839998717,
+ },
+ {
+ x: 121.135075999658,
+ y: 31.3852629996877,
+ },
+ {
+ x: 121.134755000143,
+ y: 31.3859899999386,
+ },
+ {
+ x: 121.136447999975,
+ y: 31.3863520004445,
+ },
+ {
+ x: 121.136829999605,
+ y: 31.3853629998026,
+ },
+ {
+ x: 121.143853999762,
+ y: 31.3872339997494,
+ },
+ {
+ x: 121.144400999806,
+ y: 31.3887359997667,
+ },
+ {
+ x: 121.142065,
+ y: 31.390754000197,
+ },
+ {
+ x: 121.142507999744,
+ y: 31.3917239999627,
+ },
+ {
+ x: 121.141092000096,
+ y: 31.393175000326,
+ },
+ {
+ x: 121.140043000284,
+ y: 31.392771999728,
+ },
+ {
+ x: 121.139234999895,
+ y: 31.3941460001378,
+ },
+ {
+ x: 121.144885999689,
+ y: 31.3963249998989,
+ },
+ {
+ x: 121.143071999673,
+ y: 31.399151999865,
+ },
+ {
+ x: 121.14505200015,
+ y: 31.4000400003458,
+ },
+ {
+ x: 121.148159999584,
+ y: 31.3999990002537,
+ },
+ {
+ x: 121.14771699984,
+ y: 31.4008889999275,
+ },
+ {
+ x: 121.145007999919,
+ y: 31.4012100003413,
+ },
+ {
+ x: 121.144488000221,
+ y: 31.4021390000149,
+ },
+ {
+ x: 121.146501000421,
+ y: 31.4028270002659,
+ },
+ {
+ x: 121.145911000193,
+ y: 31.4040370003074,
+ },
+ {
+ x: 121.14932200011,
+ y: 31.4055180002555,
+ },
+ {
+ x: 121.148525000229,
+ y: 31.4076709997169,
+ },
+ {
+ x: 121.15276100042,
+ y: 31.4094869998252,
+ },
+ {
+ x: 121.154817999951,
+ y: 31.4076299996248,
+ },
+ {
+ x: 121.153325000349,
+ y: 31.4097310002855,
+ },
+ {
+ x: 121.154297000206,
+ y: 31.4119510001386,
+ },
+ {
+ x: 121.15256100019,
+ y: 31.4132030003183,
+ },
+ {
+ x: 121.150903000173,
+ y: 31.4122329996533,
+ },
+ {
+ x: 121.149930000269,
+ y: 31.413404999741,
+ },
+ {
+ x: 121.151310000056,
+ y: 31.4143720002676,
+ },
+ {
+ x: 121.150946000358,
+ y: 31.4156630004472,
+ },
+ {
+ x: 121.148923999743,
+ y: 31.4155030002633,
+ },
+ {
+ x: 121.148645000367,
+ y: 31.4163519998449,
+ },
+ {
+ x: 121.14706500035,
+ y: 31.4162689996147,
+ },
+ {
+ x: 121.145894000308,
+ y: 31.4175619998865,
+ },
+ {
+ x: 121.144321999761,
+ y: 31.4176809999782,
+ },
+ {
+ x: 121.144686000359,
+ y: 31.4209519997351,
+ },
+ {
+ x: 121.143593000317,
+ y: 31.421720000078,
+ },
+ {
+ x: 121.141613999886,
+ y: 31.421517999756,
+ },
+ {
+ x: 121.141657000071,
+ y: 31.4228890000274,
+ },
+ {
+ x: 121.146579999567,
+ y: 31.4236160002782,
+ },
+ {
+ x: 121.146302000237,
+ y: 31.4249079996046,
+ },
+ {
+ x: 121.148966999927,
+ y: 31.4257149999473,
+ },
+ {
+ x: 121.149166000111,
+ y: 31.4270090002652,
+ },
+ {
+ x: 121.150702999944,
+ y: 31.42757400024,
+ },
+ {
+ x: 121.154817999951,
+ y: 31.4278169997548,
+ },
+ {
+ x: 121.15522599988,
+ y: 31.4270900004033,
+ },
+ {
+ x: 121.156797000381,
+ y: 31.427615000332,
+ },
+ {
+ x: 121.156353999737,
+ y: 31.4285830000055,
+ },
+ {
+ x: 121.157440000356,
+ y: 31.429793000047,
+ },
+ {
+ x: 121.159748999817,
+ y: 31.4290689999344,
+ },
+ {
+ x: 121.159782999586,
+ y: 31.43290399962,
+ },
+ {
+ x: 121.159098000373,
+ y: 31.43290399962,
+ },
+ {
+ x: 121.158576999729,
+ y: 31.4308439999507,
+ },
+ {
+ x: 121.15796899957,
+ y: 31.4314110000177,
+ },
+ {
+ x: 121.158576999729,
+ y: 31.4328240004273,
+ },
+ {
+ x: 121.158150999869,
+ y: 31.4340559996847,
+ },
+ {
+ x: 121.150407999829,
+ y: 31.4345780003745,
+ },
+ {
+ x: 121.143237000088,
+ y: 31.4379999999001,
+ },
+ {
+ x: 121.141977999585,
+ y: 31.4408150002121,
+ },
+ {
+ x: 121.143271999903,
+ y: 31.441260000049,
+ },
+ {
+ x: 121.142298999999,
+ y: 31.4430760001573,
+ },
+ {
+ x: 121.143315000087,
+ y: 31.4446109998978,
+ },
+ {
+ x: 121.142751000159,
+ y: 31.4457409998473,
+ },
+ {
+ x: 121.156353999737,
+ y: 31.4515139998712,
+ },
+ {
+ x: 121.158490000213,
+ y: 31.4507070004278,
+ },
+ {
+ x: 121.161498000432,
+ y: 31.4520159996387,
+ },
+ {
+ x: 121.163181999849,
+ y: 31.4501639996689,
+ },
+ {
+ x: 121.165279000326,
+ y: 31.4518770004233,
+ },
+ {
+ x: 121.169227999872,
+ y: 31.4509089998505,
+ },
+ {
+ x: 121.176294000168,
+ y: 31.4533310000257,
+ },
+ {
+ x: 121.181545000401,
+ y: 31.4562370000376,
+ },
+ {
+ x: 121.180938000289,
+ y: 31.4593460004176,
+ },
+ {
+ x: 121.181546000448,
+ y: 31.4626970002664,
+ },
+ {
+ x: 121.184939000435,
+ y: 31.4641509998688,
+ },
+ {
+ x: 121.18489600025,
+ y: 31.4650770003034,
+ },
+ {
+ x: 121.189816999655,
+ y: 31.4693979999178,
+ },
+ {
+ x: 121.198418999737,
+ y: 31.4712550001182,
+ },
+ {
+ x: 121.198540999967,
+ y: 31.4737979995781,
+ },
+ {
+ x: 121.20189099977,
+ y: 31.476905999912,
+ },
+ {
+ x: 121.209329000133,
+ y: 31.48082599992,
+ },
+ {
+ x: 121.209901999578,
+ y: 31.481047000219,
+ },
+ {
+ x: 121.21056100029,
+ y: 31.4794510003634,
+ },
+ {
+ x: 121.209173000134,
+ y: 31.4778549996086,
+ },
+ {
+ x: 121.214605999767,
+ y: 31.4771480002801,
+ },
+ {
+ x: 121.216263999784,
+ y: 31.4779929996773,
+ },
+ {
+ x: 121.220898000342,
+ y: 31.4779539996774,
+ },
+ {
+ x: 121.222313999991,
+ y: 31.4799720001078,
+ },
+ {
+ x: 121.225906000162,
+ y: 31.4793649999948,
+ },
+ {
+ x: 121.226392000091,
+ y: 31.4830400003958,
+ },
+ {
+ x: 121.224222999892,
+ y: 31.4840609998153,
+ },
+ {
+ x: 121.224430999591,
+ y: 31.4848730003887,
+ },
+ {
+ x: 121.228544999552,
+ y: 31.4898329997932,
+ },
+ {
+ x: 121.230958000212,
+ y: 31.4900360001614,
+ },
+ {
+ x: 121.230288999937,
+ y: 31.4946190001668,
+ },
+ {
+ x: 121.230784000281,
+ y: 31.4950549995886,
+ },
+ {
+ x: 121.233620999809,
+ y: 31.4938339999392,
+ },
+ {
+ x: 121.236432999983,
+ y: 31.4956330001629,
+ },
+ {
+ x: 121.237449000071,
+ y: 31.495228000372,
+ },
+ {
+ x: 121.236694000328,
+ y: 31.4928490003811,
+ },
+ {
+ x: 121.239348999557,
+ y: 31.4892550001182,
+ },
+ {
+ x: 121.239028000042,
+ y: 31.4873969998717,
+ },
+ {
+ x: 121.239956999716,
+ y: 31.4831180003955,
+ },
+ {
+ x: 121.243725999955,
+ y: 31.4838170002544,
+ },
+ {
+ x: 121.2438310003,
+ y: 31.4827220001202,
+ },
+ {
+ x: 121.242256999661,
+ y: 31.4827139997514,
+ },
+ {
+ x: 121.242170000146,
+ y: 31.4818650001696,
+ },
+ {
+ x: 121.241362999803,
+ y: 31.4818260001698,
+ },
+ {
+ x: 121.243220000003,
+ y: 31.4788369999276,
+ },
+ {
+ x: 121.24673500022,
+ y: 31.4806140000361,
+ },
+ {
+ x: 121.246778999551,
+ y: 31.4815429997097,
+ },
+ {
+ x: 121.248913999981,
+ y: 31.4817450000318,
+ },
+ {
+ x: 121.248454000352,
+ y: 31.4837540000471,
+ },
+ {
+ x: 121.24922599998,
+ y: 31.4837909999547,
+ },
+ {
+ x: 121.249978999631,
+ y: 31.485687000155,
+ },
+ {
+ x: 121.251195999996,
+ y: 31.4855710002016,
+ },
+ {
+ x: 121.250346000368,
+ y: 31.4795789999709,
+ },
+ {
+ x: 121.251926000385,
+ y: 31.4794999999251,
+ },
+ {
+ x: 121.251811999624,
+ y: 31.481665999986,
+ },
+ {
+ x: 121.253357999872,
+ y: 31.4811620001262,
+ },
+ {
+ x: 121.252741000197,
+ y: 31.4806980003125,
+ },
+ {
+ x: 121.253200999826,
+ y: 31.479731999832,
+ },
+ {
+ x: 121.254981000073,
+ y: 31.479884999693,
+ },
+ {
+ x: 121.257009000065,
+ y: 31.4807900000585,
+ },
+ {
+ x: 121.257278999926,
+ y: 31.4827189999819,
+ },
+ {
+ x: 121.258423999668,
+ y: 31.4837160000934,
+ },
+ {
+ x: 121.260700000305,
+ y: 31.4850650002496,
+ },
+ {
+ x: 121.262983000365,
+ y: 31.4852960001104,
+ },
+ {
+ x: 121.262869999651,
+ y: 31.4881569998457,
+ },
+ {
+ x: 121.264413999806,
+ y: 31.4893940002329,
+ },
+ {
+ x: 121.265993999823,
+ y: 31.4887369996129,
+ },
+ {
+ x: 121.265993999823,
+ y: 31.4871910002645,
+ },
+ {
+ x: 121.267582000209,
+ y: 31.4862619996916,
+ },
+ {
+ x: 121.271758000331,
+ y: 31.4873050001257,
+ },
+ {
+ x: 121.271981999869,
+ y: 31.4885809996135,
+ },
+ {
+ x: 121.275853000316,
+ y: 31.4905899996288,
+ },
+ {
+ x: 121.275229000318,
+ y: 31.4923299998297,
+ },
+ {
+ x: 121.276894999804,
+ y: 31.49267799969,
+ },
+ {
+ x: 121.277206999803,
+ y: 31.4918270000161,
+ },
+ {
+ x: 121.279211999634,
+ y: 31.4917120001087,
+ },
+ {
+ x: 121.279403000348,
+ y: 31.4926019997825,
+ },
+ {
+ x: 121.280879000066,
+ y: 31.4926009997364,
+ },
+ {
+ x: 121.28338699971,
+ y: 31.4908600003887,
+ },
+ {
+ x: 121.284897000097,
+ y: 31.4909380003884,
+ },
+ {
+ x: 121.286130000299,
+ y: 31.4936060002168,
+ },
+ {
+ x: 121.287023000111,
+ y: 31.4936050001706,
+ },
+ {
+ x: 121.287752999601,
+ y: 31.4921359998766,
+ },
+ {
+ x: 121.288994000173,
+ y: 31.4917100000166,
+ },
+ {
+ x: 121.294096999877,
+ y: 31.4934110002175,
+ },
+ {
+ x: 121.294053999692,
+ y: 31.4956130001399,
+ },
+ {
+ x: 121.293047000019,
+ y: 31.496,
+ },
+ {
+ x: 121.295988999893,
+ y: 31.4964249998139,
+ },
+ {
+ x: 121.296353999637,
+ y: 31.4986410003819,
+ },
+ {
+ x: 121.3001559996,
+ y: 31.497660000109,
+ },
+ {
+ x: 121.301465999756,
+ y: 31.4957389996551,
+ },
+ ],
+ ],
+ province: "涓婃捣甯�",
+ sheng_code: "310000",
+ city: "涓婃捣鍩庡尯",
+ city_code: "310100",
+ district: "鍢夊畾鍖�",
+ adcode: "310114",
+ },
+ {
+ OGR_FID: 6,
+ SHAPE: [
+ [
+ {
+ x: 121.358914999628,
+ y: 31.3045719999978,
+ },
+ {
+ x: 121.35567799964,
+ y: 31.2965190000519,
+ },
+ {
+ x: 121.353976000292,
+ y: 31.2953100000565,
+ },
+ {
+ x: 121.359159000088,
+ y: 31.2938649999698,
+ },
+ {
+ x: 121.359159000088,
+ y: 31.2931700002953,
+ },
+ {
+ x: 121.365036000411,
+ y: 31.2909470003038,
+ },
+ {
+ x: 121.36552200034,
+ y: 31.292154000207,
+ },
+ {
+ x: 121.368630999821,
+ y: 31.2919740000002,
+ },
+ {
+ x: 121.368473999775,
+ y: 31.2909969999117,
+ },
+ {
+ x: 121.370193999953,
+ y: 31.2909260002348,
+ },
+ {
+ x: 121.370209999792,
+ y: 31.2919069996084,
+ },
+ {
+ x: 121.371565000225,
+ y: 31.2918660004157,
+ },
+ {
+ x: 121.371608999556,
+ y: 31.2924209999293,
+ },
+ {
+ x: 121.376887000135,
+ y: 31.291253000026,
+ },
+ {
+ x: 121.377451000064,
+ y: 31.2934830003402,
+ },
+ {
+ x: 121.37697399965,
+ y: 31.2945310001056,
+ },
+ {
+ x: 121.378440999852,
+ y: 31.2945819997595,
+ },
+ {
+ x: 121.378553999667,
+ y: 31.2956890004471,
+ },
+ {
+ x: 121.38293000002,
+ y: 31.2960710000767,
+ },
+ {
+ x: 121.383738000408,
+ y: 31.2970759996577,
+ },
+ {
+ x: 121.390100999761,
+ y: 31.2964850002826,
+ },
+ {
+ x: 121.388833999789,
+ y: 31.2930890001573,
+ },
+ {
+ x: 121.393236000441,
+ y: 31.2923280001372,
+ },
+ {
+ x: 121.392845000397,
+ y: 31.2911230003263,
+ },
+ {
+ x: 121.395189999719,
+ y: 31.2902769999836,
+ },
+ {
+ x: 121.394730000089,
+ y: 31.2896259996402,
+ },
+ {
+ x: 121.393870000001,
+ y: 31.2902240002375,
+ },
+ {
+ x: 121.393792000001,
+ y: 31.2889550001732,
+ },
+ {
+ x: 121.395771999578,
+ y: 31.2889059997121,
+ },
+ {
+ x: 121.395728000247,
+ y: 31.2879250003385,
+ },
+ {
+ x: 121.399791999701,
+ y: 31.2880319998769,
+ },
+ {
+ x: 121.395433000133,
+ y: 31.2798799998621,
+ },
+ {
+ x: 121.395885000293,
+ y: 31.279188000326,
+ },
+ {
+ x: 121.399176000072,
+ y: 31.2780120000538,
+ },
+ {
+ x: 121.400242999815,
+ y: 31.2790140003959,
+ },
+ {
+ x: 121.401840999762,
+ y: 31.2786719999129,
+ },
+ {
+ x: 121.400787999766,
+ y: 31.2748790003656,
+ },
+ {
+ x: 121.406307999814,
+ y: 31.2749970004113,
+ },
+ {
+ x: 121.405944000116,
+ y: 31.2721559997996,
+ },
+ {
+ x: 121.410623000051,
+ y: 31.270964999735,
+ },
+ {
+ x: 121.411071000027,
+ y: 31.2677299998397,
+ },
+ {
+ x: 121.414856000104,
+ y: 31.26706499975,
+ },
+ {
+ x: 121.417045000327,
+ y: 31.2691099996268,
+ },
+ {
+ x: 121.415429000448,
+ y: 31.2697320004315,
+ },
+ {
+ x: 121.415975999593,
+ y: 31.2704320003366,
+ },
+ {
+ x: 121.418586000344,
+ y: 31.2702079998994,
+ },
+ {
+ x: 121.425202999719,
+ y: 31.276758999828,
+ },
+ {
+ x: 121.427784000032,
+ y: 31.2737779999548,
+ },
+ {
+ x: 121.438108000384,
+ y: 31.2692360000414,
+ },
+ {
+ x: 121.44645200026,
+ y: 31.2581390000149,
+ },
+ {
+ x: 121.444723999713,
+ y: 31.2547969996818,
+ },
+ {
+ x: 121.446877000074,
+ y: 31.2538700001004,
+ },
+ {
+ x: 121.446694999775,
+ y: 31.2526139997364,
+ },
+ {
+ x: 121.4460519998,
+ y: 31.2526440002205,
+ },
+ {
+ x: 121.445817999801,
+ y: 31.2496250003935,
+ },
+ {
+ x: 121.44371700004,
+ y: 31.2470949997345,
+ },
+ {
+ x: 121.445402000402,
+ y: 31.24517400018,
+ },
+ {
+ x: 121.444656000174,
+ y: 31.2443770002984,
+ },
+ {
+ x: 121.441353999887,
+ y: 31.2433169999796,
+ },
+ {
+ x: 121.431063000157,
+ y: 31.2372679998184,
+ },
+ {
+ x: 121.426375999853,
+ y: 31.2369539997273,
+ },
+ {
+ x: 121.42327799998,
+ y: 31.2329979998578,
+ },
+ {
+ x: 121.422880999658,
+ y: 31.231134000234,
+ },
+ {
+ x: 121.421471000286,
+ y: 31.2313110003025,
+ },
+ {
+ x: 121.418693999928,
+ y: 31.2299650002846,
+ },
+ {
+ x: 121.416192999707,
+ y: 31.2272649998799,
+ },
+ {
+ x: 121.414907999804,
+ y: 31.2272279999723,
+ },
+ {
+ x: 121.412051000254,
+ y: 31.2297860001239,
+ },
+ {
+ x: 121.410306999868,
+ y: 31.2303370003523,
+ },
+ {
+ x: 121.41142600021,
+ y: 31.2271299999496,
+ },
+ {
+ x: 121.410741000097,
+ y: 31.2257429998396,
+ },
+ {
+ x: 121.399879000116,
+ y: 31.222565999921,
+ },
+ {
+ x: 121.395814999762,
+ y: 31.2226480001052,
+ },
+ {
+ x: 121.39449600009,
+ y: 31.220134000184,
+ },
+ {
+ x: 121.384014999693,
+ y: 31.2204890003671,
+ },
+ {
+ x: 121.372276999784,
+ y: 31.2225389995752,
+ },
+ {
+ x: 121.368908000004,
+ y: 31.2216950002241,
+ },
+ {
+ x: 121.366330999876,
+ y: 31.2246709998668,
+ },
+ {
+ x: 121.362345000421,
+ y: 31.2255970003014,
+ },
+ {
+ x: 121.361442000148,
+ y: 31.2278719999928,
+ },
+ {
+ x: 121.356640999982,
+ y: 31.2282329995533,
+ },
+ {
+ x: 121.349583000055,
+ y: 31.2389989996042,
+ },
+ {
+ x: 121.351605999817,
+ y: 31.2399130003847,
+ },
+ {
+ x: 121.35146499961,
+ y: 31.2420279998923,
+ },
+ {
+ x: 121.355479000356,
+ y: 31.2423650001447,
+ },
+ {
+ x: 121.356115000007,
+ y: 31.2404699999906,
+ },
+ {
+ x: 121.358108000184,
+ y: 31.2416240001476,
+ },
+ {
+ x: 121.359053999742,
+ y: 31.2413239998028,
+ },
+ {
+ x: 121.358493999998,
+ y: 31.2419499998927,
+ },
+ {
+ x: 121.359902000177,
+ y: 31.2447939997434,
+ },
+ {
+ x: 121.360531000405,
+ y: 31.2445399997213,
+ },
+ {
+ x: 121.361658000217,
+ y: 31.2477130003547,
+ },
+ {
+ x: 121.36375599984,
+ y: 31.2492360004411,
+ },
+ {
+ x: 121.367721000124,
+ y: 31.2455979999478,
+ },
+ {
+ x: 121.368461000075,
+ y: 31.247534000194,
+ },
+ {
+ x: 121.371110999973,
+ y: 31.2462900003833,
+ },
+ {
+ x: 121.376248000345,
+ y: 31.2595959997556,
+ },
+ {
+ x: 121.372259999899,
+ y: 31.2613570000256,
+ },
+ {
+ x: 121.370522999837,
+ y: 31.2613250003486,
+ },
+ {
+ x: 121.369932999608,
+ y: 31.2588929997122,
+ },
+ {
+ x: 121.361258999803,
+ y: 31.2595359996867,
+ },
+ {
+ x: 121.361397999918,
+ y: 31.2612030001184,
+ },
+ {
+ x: 121.357161999727,
+ y: 31.2617940003929,
+ },
+ {
+ x: 121.354306000222,
+ y: 31.2654639996639,
+ },
+ {
+ x: 121.355294999964,
+ y: 31.2663989996142,
+ },
+ {
+ x: 121.355234999895,
+ y: 31.2688510002735,
+ },
+ {
+ x: 121.357605000371,
+ y: 31.2694110000177,
+ },
+ {
+ x: 121.362367999684,
+ y: 31.2685099998367,
+ },
+ {
+ x: 121.362813999566,
+ y: 31.2714780000097,
+ },
+ {
+ x: 121.356650000397,
+ y: 31.2726940003279,
+ },
+ {
+ x: 121.354305000176,
+ y: 31.270650999644,
+ },
+ {
+ x: 121.35271699979,
+ y: 31.2732699999106,
+ },
+ {
+ x: 121.347750000063,
+ y: 31.2749970004113,
+ },
+ {
+ x: 121.347656000224,
+ y: 31.274317999676,
+ },
+ {
+ x: 121.340136999723,
+ y: 31.2757930002468,
+ },
+ {
+ x: 121.338965999681,
+ y: 31.2733150001872,
+ },
+ {
+ x: 121.33369600037,
+ y: 31.2747289997436,
+ },
+ {
+ x: 121.334313000045,
+ y: 31.2768880003809,
+ },
+ {
+ x: 121.33166500024,
+ y: 31.277355000333,
+ },
+ {
+ x: 121.330849000381,
+ y: 31.2791440000956,
+ },
+ {
+ x: 121.332046999869,
+ y: 31.2793339998643,
+ },
+ {
+ x: 121.331499999825,
+ y: 31.2819320000618,
+ },
+ {
+ x: 121.330154999853,
+ y: 31.2817020002472,
+ },
+ {
+ x: 121.328566000321,
+ y: 31.2842950002141,
+ },
+ {
+ x: 121.329165000065,
+ y: 31.2844170004443,
+ },
+ {
+ x: 121.328176000322,
+ y: 31.2879630002923,
+ },
+ {
+ x: 121.324441999898,
+ y: 31.2865020003671,
+ },
+ {
+ x: 121.322091000299,
+ y: 31.2878240001775,
+ },
+ {
+ x: 121.321526000325,
+ y: 31.289195000449,
+ },
+ {
+ x: 121.322437000068,
+ y: 31.2901650002146,
+ },
+ {
+ x: 121.321844999747,
+ y: 31.2908310003505,
+ },
+ {
+ x: 121.328260999745,
+ y: 31.29281300002,
+ },
+ {
+ x: 121.327669000324,
+ y: 31.2948850002426,
+ },
+ {
+ x: 121.329806999993,
+ y: 31.2949329997582,
+ },
+ {
+ x: 121.329461000225,
+ y: 31.2962189997072,
+ },
+ {
+ x: 121.331179000311,
+ y: 31.2958360000314,
+ },
+ {
+ x: 121.331934000054,
+ y: 31.2967790003506,
+ },
+ {
+ x: 121.332351000398,
+ y: 31.2955450001017,
+ },
+ {
+ x: 121.33336100021,
+ y: 31.2952659998261,
+ },
+ {
+ x: 121.33409599993,
+ y: 31.2951089997806,
+ },
+ {
+ x: 121.334668000228,
+ y: 31.2962290001683,
+ },
+ {
+ x: 121.33643900006,
+ y: 31.2955969998018,
+ },
+ {
+ x: 121.336351999645,
+ y: 31.2993080000642,
+ },
+ {
+ x: 121.337706000032,
+ y: 31.2998610003849,
+ },
+ {
+ x: 121.337942000123,
+ y: 31.2990000002499,
+ },
+ {
+ x: 121.34226499983,
+ y: 31.2995139996714,
+ },
+ {
+ x: 121.342298999599,
+ y: 31.2982109998378,
+ },
+ {
+ x: 121.34407000033,
+ y: 31.2984089999754,
+ },
+ {
+ x: 121.344061999961,
+ y: 31.2994039999946,
+ },
+ {
+ x: 121.345060000119,
+ y: 31.2994409999023,
+ },
+ {
+ x: 121.344304000329,
+ y: 31.3021109998228,
+ },
+ {
+ x: 121.348114999807,
+ y: 31.3035590000479,
+ },
+ {
+ x: 121.350641000282,
+ y: 31.3016269999861,
+ },
+ {
+ x: 121.355695000424,
+ y: 31.3045499998826,
+ },
+ {
+ x: 121.358914999628,
+ y: 31.3045719999978,
+ },
+ ],
+ ],
+ province: "涓婃捣甯�",
+ sheng_code: "310000",
+ city: "涓婃捣鍩庡尯",
+ city_code: "310100",
+ district: "鏅檧鍖�",
+ adcode: "310107",
+ },
+ {
+ OGR_FID: 7,
+ SHAPE: [
+ [
+ {
+ x: 121.357622000255,
+ y: 31.5085670003668,
+ },
+ {
+ x: 121.371635999902,
+ y: 31.5028740004348,
+ },
+ {
+ x: 121.400756000089,
+ y: 31.488970999612,
+ },
+ {
+ x: 121.40161300004,
+ y: 31.48713500038,
+ },
+ {
+ x: 121.399299000349,
+ y: 31.4832419998185,
+ },
+ {
+ x: 121.399660999955,
+ y: 31.4809660000809,
+ },
+ {
+ x: 121.414023000361,
+ y: 31.4724460001828,
+ },
+ {
+ x: 121.429625000394,
+ y: 31.4602709999068,
+ },
+ {
+ x: 121.459128000257,
+ y: 31.440125999915,
+ },
+ {
+ x: 121.476827999912,
+ y: 31.4291890000724,
+ },
+ {
+ x: 121.489799000024,
+ y: 31.4197789996012,
+ },
+ {
+ x: 121.501571999748,
+ y: 31.4089910003344,
+ },
+ {
+ x: 121.502805999997,
+ y: 31.4116960000704,
+ },
+ {
+ x: 121.496876999974,
+ y: 31.4139420002232,
+ },
+ {
+ x: 121.496798999974,
+ y: 31.4147800001969,
+ },
+ {
+ x: 121.497928999923,
+ y: 31.4153579998718,
+ },
+ {
+ x: 121.506388999753,
+ y: 31.4119550003231,
+ },
+ {
+ x: 121.512854000212,
+ y: 31.4083090003601,
+ },
+ {
+ x: 121.512196999592,
+ y: 31.407285999949,
+ },
+ {
+ x: 121.505016000288,
+ y: 31.4102730000989,
+ },
+ {
+ x: 121.502933999604,
+ y: 31.4079069998082,
+ },
+ {
+ x: 121.516861999782,
+ y: 31.3968069996434,
+ },
+ {
+ x: 121.507966999677,
+ y: 31.3878539995625,
+ },
+ {
+ x: 121.499407999779,
+ y: 31.375723999563,
+ },
+ {
+ x: 121.499407999779,
+ y: 31.3669119996891,
+ },
+ {
+ x: 121.504008999716,
+ y: 31.3592499997877,
+ },
+ {
+ x: 121.510518999552,
+ y: 31.3540130001999,
+ },
+ {
+ x: 121.52113499988,
+ y: 31.3488450001967,
+ },
+ {
+ x: 121.518522999937,
+ y: 31.3449260002348,
+ },
+ {
+ x: 121.51589099997,
+ y: 31.3460689998845,
+ },
+ {
+ x: 121.513252999726,
+ y: 31.3428000002199,
+ },
+ {
+ x: 121.501136000326,
+ y: 31.3477239997628,
+ },
+ {
+ x: 121.48912200028,
+ y: 31.3324290003981,
+ },
+ {
+ x: 121.493149999873,
+ y: 31.3300769998537,
+ },
+ {
+ x: 121.494504000259,
+ y: 31.3276120003936,
+ },
+ {
+ x: 121.491769000039,
+ y: 31.3253159997337,
+ },
+ {
+ x: 121.492264000383,
+ y: 31.3134639999637,
+ },
+ {
+ x: 121.48091699962,
+ y: 31.3135189998021,
+ },
+ {
+ x: 121.480604999621,
+ y: 31.3166729995593,
+ },
+ {
+ x: 121.474346999714,
+ y: 31.3163410004369,
+ },
+ {
+ x: 121.463762999963,
+ y: 31.3179269998312,
+ },
+ {
+ x: 121.463590000079,
+ y: 31.3222129996303,
+ },
+ {
+ x: 121.46066500009,
+ y: 31.3222769998837,
+ },
+ {
+ x: 121.460821000089,
+ y: 31.3232820003641,
+ },
+ {
+ x: 121.452555000213,
+ y: 31.3228619998815,
+ },
+ {
+ x: 121.450116000153,
+ y: 31.3211059998421,
+ },
+ {
+ x: 121.443282999811,
+ y: 31.3189480001502,
+ },
+ {
+ x: 121.442110999723,
+ y: 31.3216539999322,
+ },
+ {
+ x: 121.432063000407,
+ y: 31.3214949997945,
+ },
+ {
+ x: 121.431830999601,
+ y: 31.322694000228,
+ },
+ {
+ x: 121.428965999681,
+ y: 31.3226859998591,
+ },
+ {
+ x: 121.428557999752,
+ y: 31.3203599996144,
+ },
+ {
+ x: 121.427835999732,
+ y: 31.3204829998906,
+ },
+ {
+ x: 121.429990000138,
+ y: 31.3141209996845,
+ },
+ {
+ x: 121.427532000102,
+ y: 31.313507000148,
+ },
+ {
+ x: 121.427853999662,
+ y: 31.312120000038,
+ },
+ {
+ x: 121.427037999804,
+ y: 31.3113990000638,
+ },
+ {
+ x: 121.427800999916,
+ y: 31.3077370002624,
+ },
+ {
+ x: 121.426411999714,
+ y: 31.3075899997787,
+ },
+ {
+ x: 121.426659000313,
+ y: 31.3054580003865,
+ },
+ {
+ x: 121.421786000424,
+ y: 31.3050199999731,
+ },
+ {
+ x: 121.422296999707,
+ y: 31.3003499995529,
+ },
+ {
+ x: 121.415385000218,
+ y: 31.2987260002048,
+ },
+ {
+ x: 121.415751000009,
+ y: 31.2975340000941,
+ },
+ {
+ x: 121.414492000406,
+ y: 31.2966509998438,
+ },
+ {
+ x: 121.413996000015,
+ y: 31.2947039999897,
+ },
+ {
+ x: 121.415047999965,
+ y: 31.2928839996969,
+ },
+ {
+ x: 121.41915599965,
+ y: 31.2928760002273,
+ },
+ {
+ x: 121.418191000115,
+ y: 31.2860799997922,
+ },
+ {
+ x: 121.419900999831,
+ y: 31.2816840003164,
+ },
+ {
+ x: 121.419926000085,
+ y: 31.2737569998857,
+ },
+ {
+ x: 121.420610000151,
+ y: 31.2724950001442,
+ },
+ {
+ x: 121.418586000344,
+ y: 31.2702079998994,
+ },
+ {
+ x: 121.415975999593,
+ y: 31.2704320003366,
+ },
+ {
+ x: 121.415429000448,
+ y: 31.2697320004315,
+ },
+ {
+ x: 121.417045000327,
+ y: 31.2691099996268,
+ },
+ {
+ x: 121.414856000104,
+ y: 31.26706499975,
+ },
+ {
+ x: 121.411071000027,
+ y: 31.2677299998397,
+ },
+ {
+ x: 121.410623000051,
+ y: 31.270964999735,
+ },
+ {
+ x: 121.405944000116,
+ y: 31.2721559997996,
+ },
+ {
+ x: 121.406307999814,
+ y: 31.2749970004113,
+ },
+ {
+ x: 121.400787999766,
+ y: 31.2748790003656,
+ },
+ {
+ x: 121.401840999762,
+ y: 31.2786719999129,
+ },
+ {
+ x: 121.400242999815,
+ y: 31.2790140003959,
+ },
+ {
+ x: 121.399905000416,
+ y: 31.2780429996847,
+ },
+ {
+ x: 121.398420000283,
+ y: 31.2780900000535,
+ },
+ {
+ x: 121.395433000133,
+ y: 31.2798799998621,
+ },
+ {
+ x: 121.399791999701,
+ y: 31.2880319998769,
+ },
+ {
+ x: 121.395728000247,
+ y: 31.2879250003385,
+ },
+ {
+ x: 121.395771999578,
+ y: 31.2889059997121,
+ },
+ {
+ x: 121.393792000001,
+ y: 31.2889550001732,
+ },
+ {
+ x: 121.393870000001,
+ y: 31.2902240002375,
+ },
+ {
+ x: 121.394730000089,
+ y: 31.2896259996402,
+ },
+ {
+ x: 121.395189999719,
+ y: 31.2902769999836,
+ },
+ {
+ x: 121.392845000397,
+ y: 31.2911230003263,
+ },
+ {
+ x: 121.393236000441,
+ y: 31.2923280001372,
+ },
+ {
+ x: 121.388833999789,
+ y: 31.2930890001573,
+ },
+ {
+ x: 121.390100999761,
+ y: 31.2964850002826,
+ },
+ {
+ x: 121.383738000408,
+ y: 31.2970759996577,
+ },
+ {
+ x: 121.38293000002,
+ y: 31.2960710000767,
+ },
+ {
+ x: 121.378553999667,
+ y: 31.2956890004471,
+ },
+ {
+ x: 121.378440999852,
+ y: 31.2945819997595,
+ },
+ {
+ x: 121.37697399965,
+ y: 31.2945310001056,
+ },
+ {
+ x: 121.377451000064,
+ y: 31.2934830003402,
+ },
+ {
+ x: 121.376887000135,
+ y: 31.291253000026,
+ },
+ {
+ x: 121.371608999556,
+ y: 31.2924209999293,
+ },
+ {
+ x: 121.371565000225,
+ y: 31.2918660004157,
+ },
+ {
+ x: 121.370209999792,
+ y: 31.2919069996084,
+ },
+ {
+ x: 121.370193999953,
+ y: 31.2909260002348,
+ },
+ {
+ x: 121.368473999775,
+ y: 31.2909969999117,
+ },
+ {
+ x: 121.368630999821,
+ y: 31.2919740000002,
+ },
+ {
+ x: 121.36552200034,
+ y: 31.292154000207,
+ },
+ {
+ x: 121.365036000411,
+ y: 31.2909470003038,
+ },
+ {
+ x: 121.359159000088,
+ y: 31.2931700002953,
+ },
+ {
+ x: 121.359159000088,
+ y: 31.2938649999698,
+ },
+ {
+ x: 121.353976000292,
+ y: 31.2953100000565,
+ },
+ {
+ x: 121.35567799964,
+ y: 31.2965190000519,
+ },
+ {
+ x: 121.358914999628,
+ y: 31.3045719999978,
+ },
+ {
+ x: 121.355695000424,
+ y: 31.3045499998826,
+ },
+ {
+ x: 121.350641000282,
+ y: 31.3016269999861,
+ },
+ {
+ x: 121.348114999807,
+ y: 31.3035590000479,
+ },
+ {
+ x: 121.34440000026,
+ y: 31.3021859996842,
+ },
+ {
+ x: 121.345060000119,
+ y: 31.2994409999023,
+ },
+ {
+ x: 121.344061999961,
+ y: 31.2994039999946,
+ },
+ {
+ x: 121.34407000033,
+ y: 31.2984089999754,
+ },
+ {
+ x: 121.342298999599,
+ y: 31.2982109998378,
+ },
+ {
+ x: 121.34226499983,
+ y: 31.2995139996714,
+ },
+ {
+ x: 121.337942000123,
+ y: 31.2990000002499,
+ },
+ {
+ x: 121.337706000032,
+ y: 31.2998610003849,
+ },
+ {
+ x: 121.336351999645,
+ y: 31.2993080000642,
+ },
+ {
+ x: 121.33643900006,
+ y: 31.2955969998018,
+ },
+ {
+ x: 121.334668000228,
+ y: 31.2962290001683,
+ },
+ {
+ x: 121.33409599993,
+ y: 31.2951089997806,
+ },
+ {
+ x: 121.332351000398,
+ y: 31.2955450001017,
+ },
+ {
+ x: 121.331934000054,
+ y: 31.2967790003506,
+ },
+ {
+ x: 121.333062999958,
+ y: 31.2974309998408,
+ },
+ {
+ x: 121.332315999684,
+ y: 31.298555000413,
+ },
+ {
+ x: 121.331318000425,
+ y: 31.2989260004346,
+ },
+ {
+ x: 121.329633000063,
+ y: 31.2980040001845,
+ },
+ {
+ x: 121.328159000438,
+ y: 31.2998810004079,
+ },
+ {
+ x: 121.328913000135,
+ y: 31.3003169998297,
+ },
+ {
+ x: 121.326752000305,
+ y: 31.3033320003716,
+ },
+ {
+ x: 121.329546999694,
+ y: 31.3051489996267,
+ },
+ {
+ x: 121.331343999826,
+ y: 31.3053350001102,
+ },
+ {
+ x: 121.338696999867,
+ y: 31.31882599992,
+ },
+ {
+ x: 121.343097999573,
+ y: 31.3185640004284,
+ },
+ {
+ x: 121.343184999988,
+ y: 31.3213939996334,
+ },
+ {
+ x: 121.344243000214,
+ y: 31.3218019995627,
+ },
+ {
+ x: 121.344609000005,
+ y: 31.3231580000417,
+ },
+ {
+ x: 121.340988000296,
+ y: 31.3226960003202,
+ },
+ {
+ x: 121.340259999999,
+ y: 31.3251870000801,
+ },
+ {
+ x: 121.342923999643,
+ y: 31.3259249999388,
+ },
+ {
+ x: 121.342437999714,
+ y: 31.327111999819,
+ },
+ {
+ x: 121.341343999626,
+ y: 31.3269860003037,
+ },
+ {
+ x: 121.340961999996,
+ y: 31.3288419995587,
+ },
+ {
+ x: 121.338471000236,
+ y: 31.3313890001023,
+ },
+ {
+ x: 121.33889600005,
+ y: 31.33176100017,
+ },
+ {
+ x: 121.337740999847,
+ y: 31.3328609996355,
+ },
+ {
+ x: 121.338766000351,
+ y: 31.3335879998863,
+ },
+ {
+ x: 121.337108000334,
+ y: 31.3351439996959,
+ },
+ {
+ x: 121.338236000191,
+ y: 31.3364549998984,
+ },
+ {
+ x: 121.338254000122,
+ y: 31.3379189999619,
+ },
+ {
+ x: 121.341691000339,
+ y: 31.3381760001224,
+ },
+ {
+ x: 121.339757000186,
+ y: 31.3437809995935,
+ },
+ {
+ x: 121.337811000377,
+ y: 31.3431639999187,
+ },
+ {
+ x: 121.335128999904,
+ y: 31.3461849998379,
+ },
+ {
+ x: 121.332152000215,
+ y: 31.3471379997189,
+ },
+ {
+ x: 121.331889999824,
+ y: 31.3486829999206,
+ },
+ {
+ x: 121.327941000277,
+ y: 31.3489610001501,
+ },
+ {
+ x: 121.327689000347,
+ y: 31.3531799995574,
+ },
+ {
+ x: 121.330068000338,
+ y: 31.3527599999741,
+ },
+ {
+ x: 121.331821000239,
+ y: 31.3534769997638,
+ },
+ {
+ x: 121.331794999939,
+ y: 31.3544420001982,
+ },
+ {
+ x: 121.333167000257,
+ y: 31.3552630002873,
+ },
+ {
+ x: 121.332542000213,
+ y: 31.3578799995624,
+ },
+ {
+ x: 121.33699499962,
+ y: 31.3597549996935,
+ },
+ {
+ x: 121.336518000106,
+ y: 31.3611799997572,
+ },
+ {
+ x: 121.335753999947,
+ y: 31.3623719998679,
+ },
+ {
+ x: 121.33450399986,
+ y: 31.3625849997979,
+ },
+ {
+ x: 121.333001999843,
+ y: 31.3660460002228,
+ },
+ {
+ x: 121.330440000406,
+ y: 31.3688279999123,
+ },
+ {
+ x: 121.330146000338,
+ y: 31.3699009999312,
+ },
+ {
+ x: 121.331526000125,
+ y: 31.3704560003442,
+ },
+ {
+ x: 121.331421999825,
+ y: 31.3719560002692,
+ },
+ {
+ x: 121.328765999651,
+ y: 31.3731470003339,
+ },
+ {
+ x: 121.329399000064,
+ y: 31.3747010000512,
+ },
+ {
+ x: 121.326830000304,
+ y: 31.3761919995612,
+ },
+ {
+ x: 121.32417400013,
+ y: 31.3792149995726,
+ },
+ {
+ x: 121.32674299989,
+ y: 31.3803220002602,
+ },
+ {
+ x: 121.326266000376,
+ y: 31.3811770001185,
+ },
+ {
+ x: 121.326950999589,
+ y: 31.3815110002325,
+ },
+ {
+ x: 121.3259609998,
+ y: 31.3829979995581,
+ },
+ {
+ x: 121.322055000438,
+ y: 31.3829360002962,
+ },
+ {
+ x: 121.318523000336,
+ y: 31.3903719996681,
+ },
+ {
+ x: 121.315884000047,
+ y: 31.3909979997579,
+ },
+ {
+ x: 121.318792000151,
+ y: 31.3952030003182,
+ },
+ {
+ x: 121.318591999921,
+ y: 31.397744999732,
+ },
+ {
+ x: 121.317255000318,
+ y: 31.3974680004479,
+ },
+ {
+ x: 121.316933999904,
+ y: 31.3994469999791,
+ },
+ {
+ x: 121.315761999816,
+ y: 31.3988850001427,
+ },
+ {
+ x: 121.310224999884,
+ y: 31.400257999607,
+ },
+ {
+ x: 121.310059000323,
+ y: 31.4015259996252,
+ },
+ {
+ x: 121.31128300011,
+ y: 31.4021709996919,
+ },
+ {
+ x: 121.311205000111,
+ y: 31.4048530001659,
+ },
+ {
+ x: 121.312836999828,
+ y: 31.4055410004169,
+ },
+ {
+ x: 121.309790999655,
+ y: 31.4090870002649,
+ },
+ {
+ x: 121.323904000269,
+ y: 31.4138159998086,
+ },
+ {
+ x: 121.325389000402,
+ y: 31.4122719996531,
+ },
+ {
+ x: 121.328566000321,
+ y: 31.4125889998825,
+ },
+ {
+ x: 121.327923000346,
+ y: 31.4149699999656,
+ },
+ {
+ x: 121.329528999764,
+ y: 31.4155060004016,
+ },
+ {
+ x: 121.32872999979,
+ y: 31.4158809997084,
+ },
+ {
+ x: 121.329042999835,
+ y: 31.4173439997259,
+ },
+ {
+ x: 121.327897000047,
+ y: 31.4171269996114,
+ },
+ {
+ x: 121.327819000047,
+ y: 31.4187940000431,
+ },
+ {
+ x: 121.330632000267,
+ y: 31.4201430001993,
+ },
+ {
+ x: 121.330050000407,
+ y: 31.4211430004491,
+ },
+ {
+ x: 121.331980000377,
+ y: 31.4209050002656,
+ },
+ {
+ x: 121.331856000054,
+ y: 31.4259900000385,
+ },
+ {
+ x: 121.332854000212,
+ y: 31.4262769997837,
+ },
+ {
+ x: 121.332889000027,
+ y: 31.4271199999881,
+ },
+ {
+ x: 121.331838000124,
+ y: 31.4268419997586,
+ },
+ {
+ x: 121.330527999967,
+ y: 31.4294009999562,
+ },
+ {
+ x: 121.330572000198,
+ y: 31.430998999904,
+ },
+ {
+ x: 121.332072000123,
+ y: 31.4313390002947,
+ },
+ {
+ x: 121.332028999938,
+ y: 31.4340949996845,
+ },
+ {
+ x: 121.329660000409,
+ y: 31.4391849996881,
+ },
+ {
+ x: 121.329616000178,
+ y: 31.4414370001175,
+ },
+ {
+ x: 121.329087000065,
+ y: 31.4419640001386,
+ },
+ {
+ x: 121.32666499989,
+ y: 31.4415039996099,
+ },
+ {
+ x: 121.326230999661,
+ y: 31.4423150001372,
+ },
+ {
+ x: 121.324676999944,
+ y: 31.4421129998152,
+ },
+ {
+ x: 121.323695999671,
+ y: 31.4429450004115,
+ },
+ {
+ x: 121.321551999725,
+ y: 31.449891999716,
+ },
+ {
+ x: 121.322836999628,
+ y: 31.4506860003587,
+ },
+ {
+ x: 121.322706999928,
+ y: 31.4520419999384,
+ },
+ {
+ x: 121.321117000349,
+ y: 31.4530670004418,
+ },
+ {
+ x: 121.319573000194,
+ y: 31.4568690004041,
+ },
+ {
+ x: 121.315249999588,
+ y: 31.4567389998051,
+ },
+ {
+ x: 121.314113000215,
+ y: 31.4587610004199,
+ },
+ {
+ x: 121.315988000346,
+ y: 31.4591490003261,
+ },
+ {
+ x: 121.313244999757,
+ y: 31.4618059996472,
+ },
+ {
+ x: 121.314973000304,
+ y: 31.4636239998478,
+ },
+ {
+ x: 121.314520000098,
+ y: 31.4643930002368,
+ },
+ {
+ x: 121.313287999941,
+ y: 31.4642039996149,
+ },
+ {
+ x: 121.312785000128,
+ y: 31.4657509999088,
+ },
+ {
+ x: 121.313400999756,
+ y: 31.4664240003674,
+ },
+ {
+ x: 121.312490000014,
+ y: 31.467931999762,
+ },
+ {
+ x: 121.315510999933,
+ y: 31.4685890003821,
+ },
+ {
+ x: 121.31645700039,
+ y: 31.4699910002845,
+ },
+ {
+ x: 121.316022000115,
+ y: 31.4709230000964,
+ },
+ {
+ x: 121.313080000242,
+ y: 31.4705170002594,
+ },
+ {
+ x: 121.31170899997,
+ y: 31.4718860004386,
+ },
+ {
+ x: 121.31183899967,
+ y: 31.4729120000888,
+ },
+ {
+ x: 121.309668000278,
+ y: 31.4741149998075,
+ },
+ {
+ x: 121.314260999845,
+ y: 31.4769229997967,
+ },
+ {
+ x: 121.313566000171,
+ y: 31.4787650002046,
+ },
+ {
+ x: 121.312367999783,
+ y: 31.4784940002979,
+ },
+ {
+ x: 121.312881000058,
+ y: 31.4799160002233,
+ },
+ {
+ x: 121.3119870002,
+ y: 31.482841000212,
+ },
+ {
+ x: 121.309424999864,
+ y: 31.4823100000065,
+ },
+ {
+ x: 121.307733000078,
+ y: 31.4838200003928,
+ },
+ {
+ x: 121.305685000063,
+ y: 31.4891940000031,
+ },
+ {
+ x: 121.304113999562,
+ y: 31.4905299995599,
+ },
+ {
+ x: 121.305746000178,
+ y: 31.49161300004,
+ },
+ {
+ x: 121.304644999767,
+ y: 31.4943719995682,
+ },
+ {
+ x: 121.302022000215,
+ y: 31.4951959997956,
+ },
+ {
+ x: 121.301249999688,
+ y: 31.4946259995903,
+ },
+ {
+ x: 121.301465999756,
+ y: 31.4957389996551,
+ },
+ {
+ x: 121.3001559996,
+ y: 31.497660000109,
+ },
+ {
+ x: 121.296353999637,
+ y: 31.4986410003819,
+ },
+ {
+ x: 121.295754999893,
+ y: 31.5002659997761,
+ },
+ {
+ x: 121.297986000254,
+ y: 31.5003350002601,
+ },
+ {
+ x: 121.29542600001,
+ y: 31.5016509997939,
+ },
+ {
+ x: 121.296431999637,
+ y: 31.5025279997674,
+ },
+ {
+ x: 121.297621999656,
+ y: 31.5010819996346,
+ },
+ {
+ x: 121.296953000281,
+ y: 31.5031840003414,
+ },
+ {
+ x: 121.297595000209,
+ y: 31.5042829997607,
+ },
+ {
+ x: 121.299608999556,
+ y: 31.5039010001311,
+ },
+ {
+ x: 121.301353999987,
+ y: 31.5053220000103,
+ },
+ {
+ x: 121.301014999643,
+ y: 31.5072190002567,
+ },
+ {
+ x: 121.303609999702,
+ y: 31.5065419996137,
+ },
+ {
+ x: 121.305824000177,
+ y: 31.5077899996089,
+ },
+ {
+ x: 121.307220999849,
+ y: 31.5067759996127,
+ },
+ {
+ x: 121.307403000148,
+ y: 31.5047749999663,
+ },
+ {
+ x: 121.309304999726,
+ y: 31.5040740000151,
+ },
+ {
+ x: 121.308888000281,
+ y: 31.5026180003205,
+ },
+ {
+ x: 121.311299999995,
+ y: 31.5037609999702,
+ },
+ {
+ x: 121.312108000384,
+ y: 31.5076329995633,
+ },
+ {
+ x: 121.315614000186,
+ y: 31.5077359998166,
+ },
+ {
+ x: 121.31608300023,
+ y: 31.5060480002151,
+ },
+ {
+ x: 121.317177000318,
+ y: 31.5061009999612,
+ },
+ {
+ x: 121.317334000364,
+ y: 31.5052579997569,
+ },
+ {
+ x: 121.315484999633,
+ y: 31.504852999966,
+ },
+ {
+ x: 121.315353999887,
+ y: 31.5015780000247,
+ },
+ {
+ x: 121.317958000362,
+ y: 31.5012160004181,
+ },
+ {
+ x: 121.31914800038,
+ y: 31.501500000025,
+ },
+ {
+ x: 121.318575000036,
+ y: 31.5041429995998,
+ },
+ {
+ x: 121.319929000423,
+ y: 31.5047139998513,
+ },
+ {
+ x: 121.319953999777,
+ y: 31.5060219999154,
+ },
+ {
+ x: 121.320865999566,
+ y: 31.5061270002609,
+ },
+ {
+ x: 121.321100999612,
+ y: 31.5051039998498,
+ },
+ {
+ x: 121.322654000182,
+ y: 31.5054139997563,
+ },
+ {
+ x: 121.322645999813,
+ y: 31.506087000215,
+ },
+ {
+ x: 121.324945999758,
+ y: 31.5060920004455,
+ },
+ {
+ x: 121.33889600005,
+ y: 31.513867000162,
+ },
+ {
+ x: 121.357622000255,
+ y: 31.5085670003668,
+ },
+ ],
+ ],
+ province: "涓婃捣甯�",
+ sheng_code: "310000",
+ city: "涓婃捣鍩庡尯",
+ city_code: "310100",
+ district: "瀹濆北鍖�",
+ adcode: "310113",
+ },
+ {
+ OGR_FID: 8,
+ SHAPE: [
+ [
+ {
+ x: 121.490380999883,
+ y: 31.2442069996534,
+ },
+ {
+ x: 121.488905000166,
+ y: 31.2409190000119,
+ },
+ {
+ x: 121.489894999954,
+ y: 31.2365439997059,
+ },
+ {
+ x: 121.502313999791,
+ y: 31.2251810000032,
+ },
+ {
+ x: 121.504999000404,
+ y: 31.2205179999058,
+ },
+ {
+ x: 121.505510999733,
+ y: 31.216558999898,
+ },
+ {
+ x: 121.503974999946,
+ y: 31.2122119999839,
+ },
+ {
+ x: 121.493635999802,
+ y: 31.1976280001322,
+ },
+ {
+ x: 121.488783999982,
+ y: 31.1941790002607,
+ },
+ {
+ x: 121.471473000279,
+ y: 31.1898569997009,
+ },
+ {
+ x: 121.469946000008,
+ y: 31.1921839999916,
+ },
+ {
+ x: 121.4658570003,
+ y: 31.1932230002413,
+ },
+ {
+ x: 121.465065999796,
+ y: 31.1983530002908,
+ },
+ {
+ x: 121.462326000245,
+ y: 31.2061989996841,
+ },
+ {
+ x: 121.457712999755,
+ y: 31.2050990002188,
+ },
+ {
+ x: 121.45667000022,
+ y: 31.2136349999553,
+ },
+ {
+ x: 121.452323000306,
+ y: 31.2238220002851,
+ },
+ {
+ x: 121.452183000145,
+ y: 31.2258009998163,
+ },
+ {
+ x: 121.463005000081,
+ y: 31.2260220001153,
+ },
+ {
+ x: 121.463372999964,
+ y: 31.2276420001782,
+ },
+ {
+ x: 121.461776000062,
+ y: 31.2362359998915,
+ },
+ {
+ x: 121.458415999799,
+ y: 31.2433099996568,
+ },
+ {
+ x: 121.465022999612,
+ y: 31.2411410003569,
+ },
+ {
+ x: 121.47108300028,
+ y: 31.2434329999331,
+ },
+ {
+ x: 121.476074000215,
+ y: 31.2421249998689,
+ },
+ {
+ x: 121.480562000336,
+ y: 31.2456840003164,
+ },
+ {
+ x: 121.482490000213,
+ y: 31.2462159996687,
+ },
+ {
+ x: 121.490380999883,
+ y: 31.2442069996534,
+ },
+ ],
+ ],
+ province: "涓婃捣甯�",
+ sheng_code: "310000",
+ city: "涓婃捣鍩庡尯",
+ city_code: "310100",
+ district: "榛勬郸鍖�",
+ adcode: "310101",
+ },
+ {
+ OGR_FID: 9,
+ SHAPE: [
+ [
+ {
+ x: 121.52113499988,
+ y: 31.3488450001967,
+ },
+ {
+ x: 121.545123999973,
+ y: 31.3398980003925,
+ },
+ {
+ x: 121.551511999579,
+ y: 31.3360680000382,
+ },
+ {
+ x: 121.554315000237,
+ y: 31.3333850004175,
+ },
+ {
+ x: 121.556233999699,
+ y: 31.3299369996928,
+ },
+ {
+ x: 121.55763899974,
+ y: 31.3232950000643,
+ },
+ {
+ x: 121.55750900004,
+ y: 31.3054809996485,
+ },
+ {
+ x: 121.558273000199,
+ y: 31.3019060002617,
+ },
+ {
+ x: 121.564910999643,
+ y: 31.2874110000177,
+ },
+ {
+ x: 121.565293000172,
+ y: 31.2817269996014,
+ },
+ {
+ x: 121.56427800013,
+ y: 31.2778649995701,
+ },
+ {
+ x: 121.561727000301,
+ y: 31.2739699998157,
+ },
+ {
+ x: 121.554826999566,
+ y: 31.2663730002138,
+ },
+ {
+ x: 121.537243999911,
+ y: 31.2539559995698,
+ },
+ {
+ x: 121.52322600008,
+ y: 31.2493440000256,
+ },
+ {
+ x: 121.512116000353,
+ y: 31.2490109999578,
+ },
+ {
+ x: 121.511630999571,
+ y: 31.2536560001244,
+ },
+ {
+ x: 121.513281000118,
+ y: 31.2539019997775,
+ },
+ {
+ x: 121.502516000113,
+ y: 31.2668820003041,
+ },
+ {
+ x: 121.502098999769,
+ y: 31.272614000236,
+ },
+ {
+ x: 121.496978000135,
+ y: 31.2770620003111,
+ },
+ {
+ x: 121.492117999946,
+ y: 31.2783900003982,
+ },
+ {
+ x: 121.492032999623,
+ y: 31.2864590001828,
+ },
+ {
+ x: 121.498284000107,
+ y: 31.291658999863,
+ },
+ {
+ x: 121.496855999904,
+ y: 31.2966259995903,
+ },
+ {
+ x: 121.496213999976,
+ y: 31.297482000394,
+ },
+ {
+ x: 121.485698999809,
+ y: 31.2945619997366,
+ },
+ {
+ x: 121.481056999781,
+ y: 31.3058050002007,
+ },
+ {
+ x: 121.48091699962,
+ y: 31.3135189998021,
+ },
+ {
+ x: 121.492264000383,
+ y: 31.3134639999637,
+ },
+ {
+ x: 121.491769000039,
+ y: 31.3253159997337,
+ },
+ {
+ x: 121.494504000259,
+ y: 31.3276120003936,
+ },
+ {
+ x: 121.493149999873,
+ y: 31.3300769998537,
+ },
+ {
+ x: 121.48912200028,
+ y: 31.3324290003981,
+ },
+ {
+ x: 121.501256999611,
+ y: 31.3478409997624,
+ },
+ {
+ x: 121.513252999726,
+ y: 31.3428000002199,
+ },
+ {
+ x: 121.51589099997,
+ y: 31.3460689998845,
+ },
+ {
+ x: 121.518522999937,
+ y: 31.3449260002348,
+ },
+ {
+ x: 121.52113499988,
+ y: 31.3488450001967,
+ },
+ ],
+ ],
+ province: "涓婃捣甯�",
+ sheng_code: "310000",
+ city: "涓婃捣鍩庡尯",
+ city_code: "310100",
+ district: "鏉ㄦ郸鍖�",
+ adcode: "310110",
+ },
+ {
+ OGR_FID: 10,
+ SHAPE: [
+ [
+ {
+ x: 121.31932999978,
+ y: 31.1649020000273,
+ },
+ {
+ x: 121.322688999997,
+ y: 31.1588180000507,
+ },
+ {
+ x: 121.324243999761,
+ y: 31.1586270002359,
+ },
+ {
+ x: 121.325041999689,
+ y: 31.157594000263,
+ },
+ {
+ x: 121.325527999618,
+ y: 31.1554149996026,
+ },
+ {
+ x: 121.326986000304,
+ y: 31.1540050002307,
+ },
+ {
+ x: 121.326743999936,
+ y: 31.1517280004469,
+ },
+ {
+ x: 121.329338999995,
+ y: 31.1505049998059,
+ },
+ {
+ x: 121.329181999949,
+ y: 31.1479390001847,
+ },
+ {
+ x: 121.330025000154,
+ y: 31.1482880000912,
+ },
+ {
+ x: 121.330830000404,
+ y: 31.1459249999389,
+ },
+ {
+ x: 121.332169000099,
+ y: 31.145500000125,
+ },
+ {
+ x: 121.334230999861,
+ y: 31.1422779999298,
+ },
+ {
+ x: 121.333601999633,
+ y: 31.1411079999343,
+ },
+ {
+ x: 121.332216999615,
+ y: 31.1409289997736,
+ },
+ {
+ x: 121.332542000213,
+ y: 31.1394580002865,
+ },
+ {
+ x: 121.334762000066,
+ y: 31.139191999711,
+ },
+ {
+ x: 121.336520000198,
+ y: 31.1379360002463,
+ },
+ {
+ x: 121.340107000138,
+ y: 31.132281000268,
+ },
+ {
+ x: 121.339437999864,
+ y: 31.1313990000639,
+ },
+ {
+ x: 121.341433000133,
+ y: 31.1281490003761,
+ },
+ {
+ x: 121.340312999745,
+ y: 31.1277120000088,
+ },
+ {
+ x: 121.342964999735,
+ y: 31.1239160003232,
+ },
+ {
+ x: 121.342172000038,
+ y: 31.1236020002322,
+ },
+ {
+ x: 121.345002000142,
+ y: 31.1196959999705,
+ },
+ {
+ x: 121.347832000247,
+ y: 31.1204430002443,
+ },
+ {
+ x: 121.348471000037,
+ y: 31.1195450002016,
+ },
+ {
+ x: 121.346080000392,
+ y: 31.1174950000942,
+ },
+ {
+ x: 121.349180000357,
+ y: 31.11345199981,
+ },
+ {
+ x: 121.351436000071,
+ y: 31.1144730001289,
+ },
+ {
+ x: 121.352284999653,
+ y: 31.1131080001342,
+ },
+ {
+ x: 121.35241300016,
+ y: 31.1124609999752,
+ },
+ {
+ x: 121.348697999713,
+ y: 31.1097330000779,
+ },
+ {
+ x: 121.348644999967,
+ y: 31.1085519995752,
+ },
+ {
+ x: 121.347638000294,
+ y: 31.1084349995756,
+ },
+ {
+ x: 121.347092000296,
+ y: 31.1096800003318,
+ },
+ {
+ x: 121.343958999708,
+ y: 31.1086119996441,
+ },
+ {
+ x: 121.346583000205,
+ y: 31.1013300001794,
+ },
+ {
+ x: 121.353793999993,
+ y: 31.1027320000818,
+ },
+ {
+ x: 121.354488999668,
+ y: 31.1008729997891,
+ },
+ {
+ x: 121.358152000415,
+ y: 31.1017020002471,
+ },
+ {
+ x: 121.361312000448,
+ y: 31.0957229997167,
+ },
+ {
+ x: 121.361259999849,
+ y: 31.0937660003007,
+ },
+ {
+ x: 121.362196999892,
+ y: 31.0934710001866,
+ },
+ {
+ x: 121.363682000024,
+ y: 31.0909059997122,
+ },
+ {
+ x: 121.367404999941,
+ y: 31.0818060000469,
+ },
+ {
+ x: 121.366009000315,
+ y: 31.0803029999835,
+ },
+ {
+ x: 121.364189000022,
+ y: 31.0810599998192,
+ },
+ {
+ x: 121.360871999943,
+ y: 31.0798390001698,
+ },
+ {
+ x: 121.360757000036,
+ y: 31.0778720002926,
+ },
+ {
+ x: 121.359142000203,
+ y: 31.0771710003414,
+ },
+ {
+ x: 121.359732000432,
+ y: 31.0756520004395,
+ },
+ {
+ x: 121.357509999587,
+ y: 31.0745520000748,
+ },
+ {
+ x: 121.359818999947,
+ y: 31.0718240001775,
+ },
+ {
+ x: 121.358820999789,
+ y: 31.071323999603,
+ },
+ {
+ x: 121.359141000157,
+ y: 31.0703030001833,
+ },
+ {
+ x: 121.352683000021,
+ y: 31.0687240002125,
+ },
+ {
+ x: 121.353602000132,
+ y: 31.0660049998309,
+ },
+ {
+ x: 121.348853999712,
+ y: 31.0632569999107,
+ },
+ {
+ x: 121.338886999635,
+ y: 31.0611230004262,
+ },
+ {
+ x: 121.336898999689,
+ y: 31.06474800032,
+ },
+ {
+ x: 121.333540000371,
+ y: 31.0631700003952,
+ },
+ {
+ x: 121.331179000311,
+ y: 31.0649440003654,
+ },
+ {
+ x: 121.33163899994,
+ y: 31.0632870003948,
+ },
+ {
+ x: 121.330789000312,
+ y: 31.0624389999599,
+ },
+ {
+ x: 121.330527999967,
+ y: 31.0600359997616,
+ },
+ {
+ x: 121.330796999782,
+ y: 31.0501489997766,
+ },
+ {
+ x: 121.329886000039,
+ y: 31.04326499978,
+ },
+ {
+ x: 121.329131000295,
+ y: 31.0427090002202,
+ },
+ {
+ x: 121.328836000181,
+ y: 31.0361340000841,
+ },
+ {
+ x: 121.32947800011,
+ y: 31.0339429997697,
+ },
+ {
+ x: 121.32874799972,
+ y: 31.03157400024,
+ },
+ {
+ x: 121.32935599988,
+ y: 31.0289450004115,
+ },
+ {
+ x: 121.328713999951,
+ y: 31.0281440003454,
+ },
+ {
+ x: 121.329217999811,
+ y: 31.0256110004474,
+ },
+ {
+ x: 121.328627000436,
+ y: 31.0232440001106,
+ },
+ {
+ x: 121.329182999996,
+ y: 31.0176900002933,
+ },
+ {
+ x: 121.328392000391,
+ y: 31.0167310001356,
+ },
+ {
+ x: 121.328530999606,
+ y: 31.0153720004175,
+ },
+ {
+ x: 121.336065999946,
+ y: 31.0154420000483,
+ },
+ {
+ x: 121.338237000237,
+ y: 31.016835000435,
+ },
+ {
+ x: 121.339686999655,
+ y: 31.0159480000003,
+ },
+ {
+ x: 121.335284999903,
+ y: 31.0122880002911,
+ },
+ {
+ x: 121.333688000001,
+ y: 31.0082280001222,
+ },
+ {
+ x: 121.325815000262,
+ y: 30.998958999858,
+ },
+ {
+ x: 121.322967000227,
+ y: 30.997945999908,
+ },
+ {
+ x: 121.322247000299,
+ y: 30.9965349995906,
+ },
+ {
+ x: 121.322376999999,
+ y: 30.9920260002997,
+ },
+ {
+ x: 121.321282999911,
+ y: 30.9853659998411,
+ },
+ {
+ x: 121.322846000043,
+ y: 30.9827230002663,
+ },
+ {
+ x: 121.325034000219,
+ y: 30.9833739997104,
+ },
+ {
+ x: 121.329876999624,
+ y: 30.9827489996666,
+ },
+ {
+ x: 121.341553000271,
+ y: 30.9780610002151,
+ },
+ {
+ x: 121.346691999836,
+ y: 30.9780070004228,
+ },
+ {
+ x: 121.354123999923,
+ y: 30.9798679999083,
+ },
+ {
+ x: 121.356511000282,
+ y: 30.9748329997432,
+ },
+ {
+ x: 121.356397999568,
+ y: 30.9675920003706,
+ },
+ {
+ x: 121.358524999629,
+ y: 30.9581209997843,
+ },
+ {
+ x: 121.357892000116,
+ y: 30.9509229996967,
+ },
+ {
+ x: 121.360314000291,
+ y: 30.9502890001373,
+ },
+ {
+ x: 121.360868999805,
+ y: 30.9492459997032,
+ },
+ {
+ x: 121.359863000177,
+ y: 30.9474929998021,
+ },
+ {
+ x: 121.356624000098,
+ y: 30.946933000058,
+ },
+ {
+ x: 121.358073000369,
+ y: 30.9367869998202,
+ },
+ {
+ x: 121.354757000335,
+ y: 30.9371230000265,
+ },
+ {
+ x: 121.352777999905,
+ y: 30.9356660002857,
+ },
+ {
+ x: 121.351058999773,
+ y: 30.9360770003534,
+ },
+ {
+ x: 121.3501300001,
+ y: 30.9355559997097,
+ },
+ {
+ x: 121.351101999957,
+ y: 30.9341000000151,
+ },
+ {
+ x: 121.350538000029,
+ y: 30.9331290002032,
+ },
+ {
+ x: 121.349349000056,
+ y: 30.9328319999968,
+ },
+ {
+ x: 121.349271000057,
+ y: 30.9336889999474,
+ },
+ {
+ x: 121.346588000436,
+ y: 30.9326820002742,
+ },
+ {
+ x: 121.347628999878,
+ y: 30.9302580000067,
+ },
+ {
+ x: 121.347595000109,
+ y: 30.9258580003465,
+ },
+ {
+ x: 121.350799000374,
+ y: 30.9234309999408,
+ },
+ {
+ x: 121.351476000117,
+ y: 30.9217909998548,
+ },
+ {
+ x: 121.350504000259,
+ y: 30.9183959997756,
+ },
+ {
+ x: 121.34696099965,
+ y: 30.9157100000165,
+ },
+ {
+ x: 121.346978999581,
+ y: 30.9142370004373,
+ },
+ {
+ x: 121.345338000349,
+ y: 30.9134350003251,
+ },
+ {
+ x: 121.343011000058,
+ y: 30.915208000249,
+ },
+ {
+ x: 121.340936999743,
+ y: 30.9144050000907,
+ },
+ {
+ x: 121.34176099997,
+ y: 30.9135169996099,
+ },
+ {
+ x: 121.340076999654,
+ y: 30.9121870003299,
+ },
+ {
+ x: 121.340598000298,
+ y: 30.9110239997578,
+ },
+ {
+ x: 121.335614999832,
+ y: 30.9106349998054,
+ },
+ {
+ x: 121.332090000054,
+ y: 30.9088340003889,
+ },
+ {
+ x: 121.330962000196,
+ y: 30.9098040001545,
+ },
+ {
+ x: 121.329521000294,
+ y: 30.908805999997,
+ },
+ {
+ x: 121.328574999836,
+ y: 30.9099970000615,
+ },
+ {
+ x: 121.326579000421,
+ y: 30.9096110002475,
+ },
+ {
+ x: 121.326022999962,
+ y: 30.9107169999896,
+ },
+ {
+ x: 121.323835999832,
+ y: 30.9110780004494,
+ },
+ {
+ x: 121.323114999857,
+ y: 30.9122440002604,
+ },
+ {
+ x: 121.321422000025,
+ y: 30.9110780004494,
+ },
+ {
+ x: 121.317994000223,
+ y: 30.91069099969,
+ },
+ {
+ x: 121.315632000117,
+ y: 30.91321299998,
+ },
+ {
+ x: 121.313471000287,
+ y: 30.9129640001885,
+ },
+ {
+ x: 121.313365999941,
+ y: 30.9118839998468,
+ },
+ {
+ x: 121.310120999585,
+ y: 30.9112739995954,
+ },
+ {
+ x: 121.30934799991,
+ y: 30.9128529995663,
+ },
+ {
+ x: 121.306961999597,
+ y: 30.911937999639,
+ },
+ {
+ x: 121.307429999595,
+ y: 30.9110239997578,
+ },
+ {
+ x: 121.306432000337,
+ y: 30.9112739995954,
+ },
+ {
+ x: 121.306544000106,
+ y: 30.9123260004446,
+ },
+ {
+ x: 121.304079999792,
+ y: 30.9123260004446,
+ },
+ {
+ x: 121.304106000092,
+ y: 30.9116059996172,
+ },
+ {
+ x: 121.303247000049,
+ y: 30.9115770000785,
+ },
+ {
+ x: 121.30233500026,
+ y: 30.9123539999372,
+ },
+ {
+ x: 121.302030999731,
+ y: 30.9142670000221,
+ },
+ {
+ x: 121.299254000272,
+ y: 30.9142439998607,
+ },
+ {
+ x: 121.298976000042,
+ y: 30.9114369999177,
+ },
+ {
+ x: 121.29776099977,
+ y: 30.9115159999635,
+ },
+ {
+ x: 121.297318000026,
+ y: 30.910610999598,
+ },
+ {
+ x: 121.294029000338,
+ y: 30.9119039998698,
+ },
+ {
+ x: 121.291824000277,
+ y: 30.917112999965,
+ },
+ {
+ x: 121.290365000444,
+ y: 30.917112999965,
+ },
+ {
+ x: 121.289810000032,
+ y: 30.9192379999338,
+ },
+ {
+ x: 121.290582999706,
+ y: 30.9192929997722,
+ },
+ {
+ x: 121.29049600019,
+ y: 30.9206680002281,
+ },
+ {
+ x: 121.285314000441,
+ y: 30.9195530000709,
+ },
+ {
+ x: 121.284402999799,
+ y: 30.9190660000959,
+ },
+ {
+ x: 121.285088999957,
+ y: 30.9163780002445,
+ },
+ {
+ x: 121.284263999684,
+ y: 30.9120880002611,
+ },
+ {
+ x: 121.285634999955,
+ y: 30.9119730003537,
+ },
+ {
+ x: 121.285548999587,
+ y: 30.9101709999917,
+ },
+ {
+ x: 121.286259999999,
+ y: 30.9101709999917,
+ },
+ {
+ x: 121.285236000441,
+ y: 30.9090840002265,
+ },
+ {
+ x: 121.286259999999,
+ y: 30.9088850000427,
+ },
+ {
+ x: 121.286573000044,
+ y: 30.9048520002197,
+ },
+ {
+ x: 121.285723000416,
+ y: 30.9048239998278,
+ },
+ {
+ x: 121.28572200037,
+ y: 30.902191999861,
+ },
+ {
+ x: 121.284289999984,
+ y: 30.9021359999765,
+ },
+ {
+ x: 121.283977999985,
+ y: 30.8982459995533,
+ },
+ {
+ x: 121.28137400041,
+ y: 30.8976170002244,
+ },
+ {
+ x: 121.280827000366,
+ y: 30.8988169998048,
+ },
+ {
+ x: 121.277884999593,
+ y: 30.8987619999664,
+ },
+ {
+ x: 121.277650999594,
+ y: 30.8969890000424,
+ },
+ {
+ x: 121.275219999903,
+ y: 30.8966460004127,
+ },
+ {
+ x: 121.274682000274,
+ y: 30.8993049998259,
+ },
+ {
+ x: 121.273762000116,
+ y: 30.8993920002407,
+ },
+ {
+ x: 121.271193000357,
+ y: 30.8982180000607,
+ },
+ {
+ x: 121.271218999757,
+ y: 30.8970179995811,
+ },
+ {
+ x: 121.270359999714,
+ y: 30.8970179995811,
+ },
+ {
+ x: 121.268563999629,
+ y: 30.9025959996058,
+ },
+ {
+ x: 121.266011999754,
+ y: 30.9023659997911,
+ },
+ {
+ x: 121.264641000382,
+ y: 30.9038829996008,
+ },
+ {
+ x: 121.261758999678,
+ y: 30.9039120000388,
+ },
+ {
+ x: 121.261723999863,
+ y: 30.9049700002653,
+ },
+ {
+ x: 121.262471000137,
+ y: 30.9049399997812,
+ },
+ {
+ x: 121.262531000206,
+ y: 30.9084580001366,
+ },
+ {
+ x: 121.260587999637,
+ y: 30.9084020002522,
+ },
+ {
+ x: 121.259980000377,
+ y: 30.9093180002256,
+ },
+ {
+ x: 121.258123000176,
+ y: 30.9090319996271,
+ },
+ {
+ x: 121.257723999763,
+ y: 30.9102900000835,
+ },
+ {
+ x: 121.254546999844,
+ y: 30.9094029996488,
+ },
+ {
+ x: 121.254546999844,
+ y: 30.9101760002223,
+ },
+ {
+ x: 121.251492000156,
+ y: 30.9101770002684,
+ },
+ {
+ x: 121.250832000297,
+ y: 30.9117499999626,
+ },
+ {
+ x: 121.244340000391,
+ y: 30.9124950001442,
+ },
+ {
+ x: 121.244340000391,
+ y: 30.911551999825,
+ },
+ {
+ x: 121.242221999845,
+ y: 30.9120939996384,
+ },
+ {
+ x: 121.241797000032,
+ y: 30.9109790003806,
+ },
+ {
+ x: 121.241797000032,
+ y: 30.9133809996335,
+ },
+ {
+ x: 121.239281000018,
+ y: 30.9200460003227,
+ },
+ {
+ x: 121.241111999919,
+ y: 30.9192739997953,
+ },
+ {
+ x: 121.240226999576,
+ y: 30.920788000366,
+ },
+ {
+ x: 121.241251000034,
+ y: 30.9210740000651,
+ },
+ {
+ x: 121.240191999761,
+ y: 30.9225050004055,
+ },
+ {
+ x: 121.238533999744,
+ y: 30.922105999992,
+ },
+ {
+ x: 121.236250999684,
+ y: 30.9273380002485,
+ },
+ {
+ x: 121.23376099997,
+ y: 30.9270539997423,
+ },
+ {
+ x: 121.232389999699,
+ y: 30.9283700001754,
+ },
+ {
+ x: 121.230372000168,
+ y: 30.9281629996228,
+ },
+ {
+ x: 121.230086999615,
+ y: 30.9307460000279,
+ },
+ {
+ x: 121.22292999962,
+ y: 30.9289629996427,
+ },
+ {
+ x: 121.218580999614,
+ y: 30.9329289999734,
+ },
+ {
+ x: 121.204963000242,
+ y: 30.9227399995514,
+ },
+ {
+ x: 121.19038199963,
+ y: 30.9194580001866,
+ },
+ {
+ x: 121.185841999809,
+ y: 30.9193020001872,
+ },
+ {
+ x: 121.183299000349,
+ y: 30.918724999659,
+ },
+ {
+ x: 121.182005000031,
+ y: 30.9175349996406,
+ },
+ {
+ x: 121.166763000412,
+ y: 30.9167850001277,
+ },
+ {
+ x: 121.162404999991,
+ y: 30.9190660000959,
+ },
+ {
+ x: 121.160105000046,
+ y: 30.9220279999923,
+ },
+ {
+ x: 121.153680999678,
+ y: 30.922368000383,
+ },
+ {
+ x: 121.15221300033,
+ y: 30.9210319999269,
+ },
+ {
+ x: 121.152118000445,
+ y: 30.9120450000767,
+ },
+ {
+ x: 121.14522600008,
+ y: 30.9133310000257,
+ },
+ {
+ x: 121.145294999665,
+ y: 30.9146780000897,
+ },
+ {
+ x: 121.138445000337,
+ y: 30.9169850003576,
+ },
+ {
+ x: 121.138982999965,
+ y: 30.9175900003783,
+ },
+ {
+ x: 121.137610999648,
+ y: 30.9176490004011,
+ },
+ {
+ x: 121.137447000179,
+ y: 30.9188770003733,
+ },
+ {
+ x: 121.138697000266,
+ y: 30.9201640003684,
+ },
+ {
+ x: 121.136900000135,
+ y: 30.9215660002707,
+ },
+ {
+ x: 121.134494999844,
+ y: 30.92165199974,
+ },
+ {
+ x: 121.132862000081,
+ y: 30.9153899996488,
+ },
+ {
+ x: 121.133209999942,
+ y: 30.913901000231,
+ },
+ {
+ x: 121.135527999817,
+ y: 30.9123820003291,
+ },
+ {
+ x: 121.135111000372,
+ y: 30.909444999787,
+ },
+ {
+ x: 121.136421999676,
+ y: 30.9070350001652,
+ },
+ {
+ x: 121.136708000274,
+ y: 30.9033910002945,
+ },
+ {
+ x: 121.129859000093,
+ y: 30.9038629995778,
+ },
+ {
+ x: 121.129086000419,
+ y: 30.90237400016,
+ },
+ {
+ x: 121.127140999757,
+ y: 30.901775000416,
+ },
+ {
+ x: 121.125595999556,
+ y: 30.904633000013,
+ },
+ {
+ x: 121.118963000342,
+ y: 30.9048910002195,
+ },
+ {
+ x: 121.117651000094,
+ y: 30.9031459997881,
+ },
+ {
+ x: 121.113588999833,
+ y: 30.9035159997636,
+ },
+ {
+ x: 121.112095000184,
+ y: 30.9027450001817,
+ },
+ {
+ x: 121.10886499962,
+ y: 30.899455000448,
+ },
+ {
+ x: 121.106495000044,
+ y: 30.9012549998184,
+ },
+ {
+ x: 121.106259999999,
+ y: 30.9030580002266,
+ },
+ {
+ x: 121.108925999735,
+ y: 30.9056330002628,
+ },
+ {
+ x: 121.111609000255,
+ y: 30.9106379999438,
+ },
+ {
+ x: 121.112816000158,
+ y: 30.9104100002214,
+ },
+ {
+ x: 121.113214999673,
+ y: 30.912726000005,
+ },
+ {
+ x: 121.115132999988,
+ y: 30.9124119999139,
+ },
+ {
+ x: 121.115420999779,
+ y: 30.9134700001404,
+ },
+ {
+ x: 121.11476099992,
+ y: 30.9140119999539,
+ },
+ {
+ x: 121.116861999682,
+ y: 30.9219869999002,
+ },
+ {
+ x: 121.110002999939,
+ y: 30.9236969996169,
+ },
+ {
+ x: 121.109342000033,
+ y: 30.923068000288,
+ },
+ {
+ x: 121.106372999814,
+ y: 30.9237660001009,
+ },
+ {
+ x: 121.10612199993,
+ y: 30.9245340004438,
+ },
+ {
+ x: 121.104550000282,
+ y: 30.9231010000112,
+ },
+ {
+ x: 121.100530000159,
+ y: 30.9221480001302,
+ },
+ {
+ x: 121.099766000001,
+ y: 30.9247699996358,
+ },
+ {
+ x: 121.095805999947,
+ y: 30.9284650000598,
+ },
+ {
+ x: 121.086768000443,
+ y: 30.9182029998686,
+ },
+ {
+ x: 121.084431999737,
+ y: 30.9173120001487,
+ },
+ {
+ x: 121.084508999691,
+ y: 30.9139980002076,
+ },
+ {
+ x: 121.085492000056,
+ y: 30.9130630002573,
+ },
+ {
+ x: 121.087436999818,
+ y: 30.9129789999809,
+ },
+ {
+ x: 121.089216000018,
+ y: 30.9117210004239,
+ },
+ {
+ x: 121.09161299994,
+ y: 30.9123499997527,
+ },
+ {
+ x: 121.09121300038,
+ y: 30.9106620001513,
+ },
+ {
+ x: 121.092733000328,
+ y: 30.9108919999659,
+ },
+ {
+ x: 121.094192000161,
+ y: 30.9086310000207,
+ },
+ {
+ x: 121.093905000415,
+ y: 30.9068010001661,
+ },
+ {
+ x: 121.092272999799,
+ y: 30.9064589996831,
+ },
+ {
+ x: 121.092534000144,
+ y: 30.9052279995726,
+ },
+ {
+ x: 121.090552999621,
+ y: 30.9044840003364,
+ },
+ {
+ x: 121.089669000224,
+ y: 30.9045699998057,
+ },
+ {
+ x: 121.089753999647,
+ y: 30.9068299997048,
+ },
+ {
+ x: 121.087150000072,
+ y: 30.9066569998207,
+ },
+ {
+ x: 121.087072000073,
+ y: 30.9054259997102,
+ },
+ {
+ x: 121.084553999967,
+ y: 30.9051699995958,
+ },
+ {
+ x: 121.084492999852,
+ y: 30.9058559997546,
+ },
+ {
+ x: 121.079144999642,
+ y: 30.9073110003025,
+ },
+ {
+ x: 121.079169999896,
+ y: 30.9064270000061,
+ },
+ {
+ x: 121.07722600018,
+ y: 30.9062839997069,
+ },
+ {
+ x: 121.077260999995,
+ y: 30.9078029996088,
+ },
+ {
+ x: 121.076254000322,
+ y: 30.9079789996312,
+ },
+ {
+ x: 121.067856999801,
+ y: 30.9069550000733,
+ },
+ {
+ x: 121.067927000331,
+ y: 30.9052230002413,
+ },
+ {
+ x: 121.065782000339,
+ y: 30.9048229997817,
+ },
+ {
+ x: 121.065842999555,
+ y: 30.9041660000609,
+ },
+ {
+ x: 121.064411000068,
+ y: 30.9041660000609,
+ },
+ {
+ x: 121.063385999564,
+ y: 30.9065399998212,
+ },
+ {
+ x: 121.048494999944,
+ y: 30.905442000448,
+ },
+ {
+ x: 121.040682000274,
+ y: 30.9039819996696,
+ },
+ {
+ x: 121.037817000354,
+ y: 30.9015049996561,
+ },
+ {
+ x: 121.036375000406,
+ y: 30.9028010000662,
+ },
+ {
+ x: 121.035837999924,
+ y: 30.9065920004205,
+ },
+ {
+ x: 121.034291999676,
+ y: 30.9042460001529,
+ },
+ {
+ x: 121.029917000269,
+ y: 30.9048399996663,
+ },
+ {
+ x: 121.030176999669,
+ y: 30.9082559998146,
+ },
+ {
+ x: 121.020844000051,
+ y: 30.9111910002645,
+ },
+ {
+ x: 121.020714000351,
+ y: 30.9157530002008,
+ },
+ {
+ x: 121.023866000016,
+ y: 30.924710999613,
+ },
+ {
+ x: 121.02423900013,
+ y: 30.9296509998938,
+ },
+ {
+ x: 121.027034000419,
+ y: 30.9381790001608,
+ },
+ {
+ x: 121.027382000279,
+ y: 30.941868000308,
+ },
+ {
+ x: 121.026410000421,
+ y: 30.9423150002371,
+ },
+ {
+ x: 121.02645199966,
+ y: 30.9439449998619,
+ },
+ {
+ x: 121.025150999919,
+ y: 30.9439740002999,
+ },
+ {
+ x: 121.025429000148,
+ y: 30.9465510004284,
+ },
+ {
+ x: 121.023579000271,
+ y: 30.9460370001075,
+ },
+ {
+ x: 121.023448999672,
+ y: 30.9479320002616,
+ },
+ {
+ x: 121.028735999767,
+ y: 30.9491970001415,
+ },
+ {
+ x: 121.031765000055,
+ y: 30.959160000034,
+ },
+ {
+ x: 121.035907000408,
+ y: 30.9585560000594,
+ },
+ {
+ x: 121.039006000327,
+ y: 30.9595659998711,
+ },
+ {
+ x: 121.039415000302,
+ y: 30.9612819998645,
+ },
+ {
+ x: 121.038120999984,
+ y: 30.962492999952,
+ },
+ {
+ x: 121.041428999649,
+ y: 30.9654949998944,
+ },
+ {
+ x: 121.038606999913,
+ y: 30.9714730003787,
+ },
+ {
+ x: 121.042184000291,
+ y: 30.9722809998683,
+ },
+ {
+ x: 121.042895999851,
+ y: 30.9710689997346,
+ },
+ {
+ x: 121.046498999629,
+ y: 30.971397999618,
+ },
+ {
+ x: 121.048721999621,
+ y: 30.9664780002595,
+ },
+ {
+ x: 121.052811000228,
+ y: 30.9673629997027,
+ },
+ {
+ x: 121.052349999653,
+ y: 30.9639319997621,
+ },
+ {
+ x: 121.053314000041,
+ y: 30.9636540004318,
+ },
+ {
+ x: 121.053592000271,
+ y: 30.9615359998866,
+ },
+ {
+ x: 121.054955000173,
+ y: 30.9612090000953,
+ },
+ {
+ x: 121.055787999916,
+ y: 30.9585349999903,
+ },
+ {
+ x: 121.057749999563,
+ y: 30.9575759998326,
+ },
+ {
+ x: 121.058809999882,
+ y: 30.9580049998309,
+ },
+ {
+ x: 121.064159000138,
+ y: 30.956921000204,
+ },
+ {
+ x: 121.071911999739,
+ y: 30.9578069996933,
+ },
+ {
+ x: 121.072059000223,
+ y: 30.9595710001016,
+ },
+ {
+ x: 121.074534000144,
+ y: 30.9602790003756,
+ },
+ {
+ x: 121.073952000285,
+ y: 30.9620189996771,
+ },
+ {
+ x: 121.076148999976,
+ y: 30.9621720004375,
+ },
+ {
+ x: 121.075753999747,
+ y: 30.9638339997393,
+ },
+ {
+ x: 121.076654999928,
+ y: 30.9642700000605,
+ },
+ {
+ x: 121.083590999625,
+ y: 30.9641400003608,
+ },
+ {
+ x: 121.083442999995,
+ y: 30.9661579998918,
+ },
+ {
+ x: 121.092897999843,
+ y: 30.9676209999093,
+ },
+ {
+ x: 121.092975999843,
+ y: 30.9684549996985,
+ },
+ {
+ x: 121.09118700008,
+ y: 30.9703970002215,
+ },
+ {
+ x: 121.090961999597,
+ y: 30.9762250000837,
+ },
+ {
+ x: 121.094572999744,
+ y: 30.9750509999038,
+ },
+ {
+ x: 121.095554000017,
+ y: 30.9969079997045,
+ },
+ {
+ x: 121.099514000071,
+ y: 30.9970489999114,
+ },
+ {
+ x: 121.099608999955,
+ y: 31.0099559997696,
+ },
+ {
+ x: 121.098185999984,
+ y: 31.0113429998796,
+ },
+ {
+ x: 121.097455999595,
+ y: 31.0137189997321,
+ },
+ {
+ x: 121.088434999975,
+ y: 31.0221570003453,
+ },
+ {
+ x: 121.080941999774,
+ y: 31.0274509998638,
+ },
+ {
+ x: 121.082972999904,
+ y: 31.0292760003871,
+ },
+ {
+ x: 121.084917999666,
+ y: 31.0298469997393,
+ },
+ {
+ x: 121.086585000098,
+ y: 31.0278860001388,
+ },
+ {
+ x: 121.091812000124,
+ y: 31.0283879999063,
+ },
+ {
+ x: 121.09236899973,
+ y: 31.0333969997718,
+ },
+ {
+ x: 121.095336999903,
+ y: 31.0331439997958,
+ },
+ {
+ x: 121.095684999763,
+ y: 31.035353000041,
+ },
+ {
+ x: 121.093166999657,
+ y: 31.0408119999739,
+ },
+ {
+ x: 121.091785999824,
+ y: 31.0404240000676,
+ },
+ {
+ x: 121.091266000126,
+ y: 31.0424160001983,
+ },
+ {
+ x: 121.089182000249,
+ y: 31.0418959996007,
+ },
+ {
+ x: 121.08850399956,
+ y: 31.0426559995748,
+ },
+ {
+ x: 121.090422999922,
+ y: 31.0441609997304,
+ },
+ {
+ x: 121.09161299994,
+ y: 31.0467470002739,
+ },
+ {
+ x: 121.085656000424,
+ y: 31.0500679996385,
+ },
+ {
+ x: 121.086611000397,
+ y: 31.0507179999358,
+ },
+ {
+ x: 121.085039999896,
+ y: 31.0522660002757,
+ },
+ {
+ x: 121.085326999641,
+ y: 31.0538699996009,
+ },
+ {
+ x: 121.082556999606,
+ y: 31.0548829995508,
+ },
+ {
+ x: 121.081271999703,
+ y: 31.0521609999303,
+ },
+ {
+ x: 121.076374999607,
+ y: 31.0588360001813,
+ },
+ {
+ x: 121.079822000285,
+ y: 31.0607090002202,
+ },
+ {
+ x: 121.078579999667,
+ y: 31.0618760000774,
+ },
+ {
+ x: 121.081923000046,
+ y: 31.0630999998651,
+ },
+ {
+ x: 121.081342000233,
+ y: 31.0647789999509,
+ },
+ {
+ x: 121.083608000409,
+ y: 31.0665980001976,
+ },
+ {
+ x: 121.086072999869,
+ y: 31.0669609998503,
+ },
+ {
+ x: 121.088330999676,
+ y: 31.0664640003134,
+ },
+ {
+ x: 121.08825199963,
+ y: 31.0654139995565,
+ },
+ {
+ x: 121.089936999993,
+ y: 31.063827000116,
+ },
+ {
+ x: 121.089111999719,
+ y: 31.0633509997489,
+ },
+ {
+ x: 121.088408999676,
+ y: 31.0603689998295,
+ },
+ {
+ x: 121.089814999762,
+ y: 31.0599480002001,
+ },
+ {
+ x: 121.090031999877,
+ y: 31.058265999976,
+ },
+ {
+ x: 121.093740000001,
+ y: 31.0585549998135,
+ },
+ {
+ x: 121.09490399972,
+ y: 31.0579800002769,
+ },
+ {
+ x: 121.095207000203,
+ y: 31.0559949995696,
+ },
+ {
+ x: 121.096543999806,
+ y: 31.0555739999402,
+ },
+ {
+ x: 121.097499999825,
+ y: 31.0573879999563,
+ },
+ {
+ x: 121.09721300008,
+ y: 31.0592050001107,
+ },
+ {
+ x: 121.10379499964,
+ y: 31.059875000431,
+ },
+ {
+ x: 121.104037000008,
+ y: 31.0585569999056,
+ },
+ {
+ x: 121.104959000258,
+ y: 31.058327000091,
+ },
+ {
+ x: 121.113615000132,
+ y: 31.0580059996772,
+ },
+ {
+ x: 121.113406000387,
+ y: 31.0603469997143,
+ },
+ {
+ x: 121.115402999849,
+ y: 31.0605209996445,
+ },
+ {
+ x: 121.116115000307,
+ y: 31.059208000249,
+ },
+ {
+ x: 121.121298000103,
+ y: 31.0593240002025,
+ },
+ {
+ x: 121.121550000033,
+ y: 31.0602030002683,
+ },
+ {
+ x: 121.12322599998,
+ y: 31.0608640001735,
+ },
+ {
+ x: 121.12317400028,
+ y: 31.0616959998706,
+ },
+ {
+ x: 121.121810000331,
+ y: 31.0617539998473,
+ },
+ {
+ x: 121.121637000447,
+ y: 31.068588000236,
+ },
+ {
+ x: 121.117651000094,
+ y: 31.0691150002571,
+ },
+ {
+ x: 121.11694800005,
+ y: 31.0721210003839,
+ },
+ {
+ x: 121.113788000016,
+ y: 31.0778740003848,
+ },
+ {
+ x: 121.112529000413,
+ y: 31.0775519999249,
+ },
+ {
+ x: 121.11157400044,
+ y: 31.0787339995745,
+ },
+ {
+ x: 121.110662999798,
+ y: 31.0783390002447,
+ },
+ {
+ x: 121.108908999851,
+ y: 31.0797689996397,
+ },
+ {
+ x: 121.107997000062,
+ y: 31.0795470001939,
+ },
+ {
+ x: 121.102665999736,
+ y: 31.084034000269,
+ },
+ {
+ x: 121.101684000316,
+ y: 31.0830499998577,
+ },
+ {
+ x: 121.097534999641,
+ y: 31.0822079996995,
+ },
+ {
+ x: 121.096085000223,
+ y: 31.0828499996279,
+ },
+ {
+ x: 121.09490399972,
+ y: 31.0854869998252,
+ },
+ {
+ x: 121.09480000032,
+ y: 31.0878540001621,
+ },
+ {
+ x: 121.096084000177,
+ y: 31.0885709999517,
+ },
+ {
+ x: 121.095119999788,
+ y: 31.0897290002932,
+ },
+ {
+ x: 121.096231999807,
+ y: 31.09059999999,
+ },
+ {
+ x: 121.093002000142,
+ y: 31.0954469995794,
+ },
+ {
+ x: 121.094920999604,
+ y: 31.0960640001535,
+ },
+ {
+ x: 121.095294999765,
+ y: 31.0974199997332,
+ },
+ {
+ x: 121.093366999887,
+ y: 31.1012419997186,
+ },
+ {
+ x: 121.094599000044,
+ y: 31.1019829997157,
+ },
+ {
+ x: 121.096006000177,
+ y: 31.1003309999757,
+ },
+ {
+ x: 121.099235999842,
+ y: 31.10245199976,
+ },
+ {
+ x: 121.098055000238,
+ y: 31.1038579998469,
+ },
+ {
+ x: 121.098940999727,
+ y: 31.1045480001901,
+ },
+ {
+ x: 121.101095000134,
+ y: 31.1027730001739,
+ },
+ {
+ x: 121.100424999814,
+ y: 31.1036849999628,
+ },
+ {
+ x: 121.101781000293,
+ y: 31.1038830001004,
+ },
+ {
+ x: 121.101042000388,
+ y: 31.1053619999564,
+ },
+ {
+ x: 121.1000260003,
+ y: 31.1052880001412,
+ },
+ {
+ x: 121.104150999869,
+ y: 31.1090609996655,
+ },
+ {
+ x: 121.10612199993,
+ y: 31.1095539999172,
+ },
+ {
+ x: 121.10562600044,
+ y: 31.1110339998193,
+ },
+ {
+ x: 121.107987999647,
+ y: 31.1138399997163,
+ },
+ {
+ x: 121.109767999893,
+ y: 31.111708000324,
+ },
+ {
+ x: 121.111520999794,
+ y: 31.1128829996508,
+ },
+ {
+ x: 121.113128000157,
+ y: 31.1107880001661,
+ },
+ {
+ x: 121.113866000016,
+ y: 31.1112829996108,
+ },
+ {
+ x: 121.114898999989,
+ y: 31.1102210000991,
+ },
+ {
+ x: 121.116037000307,
+ y: 31.1109860003037,
+ },
+ {
+ x: 121.116358999868,
+ y: 31.1096560001243,
+ },
+ {
+ x: 121.119119000342,
+ y: 31.1072139999262,
+ },
+ {
+ x: 121.1198570002,
+ y: 31.1076829999705,
+ },
+ {
+ x: 121.120915999574,
+ y: 31.1052920003256,
+ },
+ {
+ x: 121.12310399975,
+ y: 31.1052310002106,
+ },
+ {
+ x: 121.126100000315,
+ y: 31.1024539998523,
+ },
+ {
+ x: 121.127357999872,
+ y: 31.103980000077,
+ },
+ {
+ x: 121.128730000189,
+ y: 31.1010049995811,
+ },
+ {
+ x: 121.130197000391,
+ y: 31.1012409996724,
+ },
+ {
+ x: 121.13118700018,
+ y: 31.1000139997464,
+ },
+ {
+ x: 121.13703900025,
+ y: 31.1006290002283,
+ },
+ {
+ x: 121.137323999903,
+ y: 31.098834000189,
+ },
+ {
+ x: 121.139921000054,
+ y: 31.099401000256,
+ },
+ {
+ x: 121.141292000326,
+ y: 31.095907000108,
+ },
+ {
+ x: 121.14490399962,
+ y: 31.097254000172,
+ },
+ {
+ x: 121.146604999821,
+ y: 31.0936110003474,
+ },
+ {
+ x: 121.148315999584,
+ y: 31.0939980002076,
+ },
+ {
+ x: 121.148922999697,
+ y: 31.0921119995692,
+ },
+ {
+ x: 121.150616999575,
+ y: 31.092442000398,
+ },
+ {
+ x: 121.150833999689,
+ y: 31.0951290002033,
+ },
+ {
+ x: 121.15218700003,
+ y: 31.0951280001572,
+ },
+ {
+ x: 121.152248000145,
+ y: 31.100911999789,
+ },
+ {
+ x: 121.149791000155,
+ y: 31.1008509996739,
+ },
+ {
+ x: 121.14985200027,
+ y: 31.1038040000546,
+ },
+ {
+ x: 121.154723000066,
+ y: 31.1031040001495,
+ },
+ {
+ x: 121.155034000019,
+ y: 31.1025069995984,
+ },
+ {
+ x: 121.16012199993,
+ y: 31.1026370001974,
+ },
+ {
+ x: 121.160043999931,
+ y: 31.1033380001487,
+ },
+ {
+ x: 121.160972999604,
+ y: 31.1034170001944,
+ },
+ {
+ x: 121.160668999974,
+ y: 31.1062460002528,
+ },
+ {
+ x: 121.162274000245,
+ y: 31.1062719996531,
+ },
+ {
+ x: 121.161927000431,
+ y: 31.1102980000527,
+ },
+ {
+ x: 121.166050999954,
+ y: 31.1098059998471,
+ },
+ {
+ x: 121.165983000415,
+ y: 31.111040000096,
+ },
+ {
+ x: 121.170409000375,
+ y: 31.1108619999814,
+ },
+ {
+ x: 121.168480999599,
+ y: 31.116085999869,
+ },
+ {
+ x: 121.17070399959,
+ y: 31.117230999611,
+ },
+ {
+ x: 121.169809999732,
+ y: 31.1198600003388,
+ },
+ {
+ x: 121.171911000392,
+ y: 31.1210050000807,
+ },
+ {
+ x: 121.17268300002,
+ y: 31.1203539997373,
+ },
+ {
+ x: 121.173933000108,
+ y: 31.1206540000821,
+ },
+ {
+ x: 121.174800999666,
+ y: 31.1191720000878,
+ },
+ {
+ x: 121.179331999972,
+ y: 31.120704999736,
+ },
+ {
+ x: 121.179635999602,
+ y: 31.1224700001904,
+ },
+ {
+ x: 121.180633999759,
+ y: 31.1226830001204,
+ },
+ {
+ x: 121.179471000087,
+ y: 31.1231229997267,
+ },
+ {
+ x: 121.179365999741,
+ y: 31.1262979995531,
+ },
+ {
+ x: 121.177317999726,
+ y: 31.1262989995992,
+ },
+ {
+ x: 121.177353000441,
+ y: 31.1289630001424,
+ },
+ {
+ x: 121.175843000054,
+ y: 31.1294209996794,
+ },
+ {
+ x: 121.175417000194,
+ y: 31.1313959999255,
+ },
+ {
+ x: 121.175364999595,
+ y: 31.1338659996163,
+ },
+ {
+ x: 121.177161999727,
+ y: 31.1337790001008,
+ },
+ {
+ x: 121.177466000256,
+ y: 31.1454739998253,
+ },
+ {
+ x: 121.191223999788,
+ y: 31.1400050003306,
+ },
+ {
+ x: 121.197169999696,
+ y: 31.1429680002731,
+ },
+ {
+ x: 121.197516000363,
+ y: 31.1416620003011,
+ },
+ {
+ x: 121.195893000162,
+ y: 31.1398620000313,
+ },
+ {
+ x: 121.196110000276,
+ y: 31.1391569998957,
+ },
+ {
+ x: 121.197446999879,
+ y: 31.1402000003298,
+ },
+ {
+ x: 121.20171699984,
+ y: 31.1403399995913,
+ },
+ {
+ x: 121.203836000431,
+ y: 31.1377259995553,
+ },
+ {
+ x: 121.216116000153,
+ y: 31.1404399997062,
+ },
+ {
+ x: 121.223563000033,
+ y: 31.1411520001647,
+ },
+ {
+ x: 121.218382000329,
+ y: 31.1260279996925,
+ },
+ {
+ x: 121.216724000312,
+ y: 31.1187919996511,
+ },
+ {
+ x: 121.216870999897,
+ y: 31.1171409999573,
+ },
+ {
+ x: 121.219666000186,
+ y: 31.1172100004412,
+ },
+ {
+ x: 121.226801000066,
+ y: 31.1193409997874,
+ },
+ {
+ x: 121.22946499971,
+ y: 31.1193920003406,
+ },
+ {
+ x: 121.230280999569,
+ y: 31.1210650001497,
+ },
+ {
+ x: 121.231391000394,
+ y: 31.1210320004265,
+ },
+ {
+ x: 121.232024999954,
+ y: 31.119862000431,
+ },
+ {
+ x: 121.23157399984,
+ y: 31.1214400003558,
+ },
+ {
+ x: 121.232406999583,
+ y: 31.12777400017,
+ },
+ {
+ x: 121.235435999872,
+ y: 31.1283079996145,
+ },
+ {
+ x: 121.240113999761,
+ y: 31.1274689995947,
+ },
+ {
+ x: 121.24090400022,
+ y: 31.1313650002946,
+ },
+ {
+ x: 121.234923999643,
+ y: 31.1320240001075,
+ },
+ {
+ x: 121.235002999689,
+ y: 31.1325570004053,
+ },
+ {
+ x: 121.241060000219,
+ y: 31.1328359997816,
+ },
+ {
+ x: 121.242570999752,
+ y: 31.1362279997225,
+ },
+ {
+ x: 121.253626999686,
+ y: 31.1344179998908,
+ },
+ {
+ x: 121.253140999757,
+ y: 31.130824999674,
+ },
+ {
+ x: 121.2541040001,
+ y: 31.1290689996347,
+ },
+ {
+ x: 121.257186000134,
+ y: 31.1292469997493,
+ },
+ {
+ x: 121.256395999676,
+ y: 31.1306980001127,
+ },
+ {
+ x: 121.257488999718,
+ y: 31.1308499999276,
+ },
+ {
+ x: 121.257541000317,
+ y: 31.131511999879,
+ },
+ {
+ x: 121.256196000345,
+ y: 31.1343359997067,
+ },
+ {
+ x: 121.256985999904,
+ y: 31.1360149997925,
+ },
+ {
+ x: 121.259199000334,
+ y: 31.1374900003633,
+ },
+ {
+ x: 121.261151000418,
+ y: 31.1368549998584,
+ },
+ {
+ x: 121.261307999565,
+ y: 31.1384580000367,
+ },
+ {
+ x: 121.27654799999,
+ y: 31.135300000095,
+ },
+ {
+ x: 121.283032000426,
+ y: 31.1419989996542,
+ },
+ {
+ x: 121.279733000278,
+ y: 31.1446660003357,
+ },
+ {
+ x: 121.277338000448,
+ y: 31.1440679997385,
+ },
+ {
+ x: 121.274846999789,
+ y: 31.1477539997474,
+ },
+ {
+ x: 121.27257400019,
+ y: 31.146228000422,
+ },
+ {
+ x: 121.2719740004,
+ y: 31.1479050004155,
+ },
+ {
+ x: 121.273354000187,
+ y: 31.1485339997444,
+ },
+ {
+ x: 121.272989999589,
+ y: 31.1497320001317,
+ },
+ {
+ x: 121.274282999861,
+ y: 31.1503030003832,
+ },
+ {
+ x: 121.273319000372,
+ y: 31.1543180002756,
+ },
+ {
+ x: 121.273830999701,
+ y: 31.1548879995815,
+ },
+ {
+ x: 121.275836999578,
+ y: 31.1525790001208,
+ },
+ {
+ x: 121.278622000305,
+ y: 31.1526089997056,
+ },
+ {
+ x: 121.279378000095,
+ y: 31.1528799996124,
+ },
+ {
+ x: 121.27868300042,
+ y: 31.1541980001376,
+ },
+ {
+ x: 121.280393000137,
+ y: 31.1546769997438,
+ },
+ {
+ x: 121.280305999722,
+ y: 31.155305999972,
+ },
+ {
+ x: 121.282676000197,
+ y: 31.1543469998143,
+ },
+ {
+ x: 121.285957999562,
+ y: 31.1542869997453,
+ },
+ {
+ x: 121.285502000117,
+ y: 31.1549050003655,
+ },
+ {
+ x: 121.294143000199,
+ y: 31.1567219996206,
+ },
+ {
+ x: 121.311710000017,
+ y: 31.162173000084,
+ },
+ {
+ x: 121.313547000194,
+ y: 31.1595440002554,
+ },
+ {
+ x: 121.314937999589,
+ y: 31.1597629995628,
+ },
+ {
+ x: 121.316405999837,
+ y: 31.1604600002289,
+ },
+ {
+ x: 121.317966999877,
+ y: 31.1643669996374,
+ },
+ {
+ x: 121.31932999978,
+ y: 31.1649020000273,
+ },
+ ],
+ ],
+ province: "涓婃捣甯�",
+ sheng_code: "310000",
+ city: "涓婃捣鍩庡尯",
+ city_code: "310100",
+ district: "鏉炬睙鍖�",
+ adcode: "310117",
+ },
+ {
+ OGR_FID: 11,
+ SHAPE: [
+ [
+ {
+ x: 121.463762999963,
+ y: 31.3179269998312,
+ },
+ {
+ x: 121.474346999714,
+ y: 31.3163410004369,
+ },
+ {
+ x: 121.480604999621,
+ y: 31.3166729995593,
+ },
+ {
+ x: 121.48091699962,
+ y: 31.3135189998021,
+ },
+ {
+ x: 121.481056999781,
+ y: 31.3058050002007,
+ },
+ {
+ x: 121.485698999809,
+ y: 31.2945619997366,
+ },
+ {
+ x: 121.496213999976,
+ y: 31.297482000394,
+ },
+ {
+ x: 121.496855999904,
+ y: 31.2966259995903,
+ },
+ {
+ x: 121.498284000107,
+ y: 31.291658999863,
+ },
+ {
+ x: 121.492032999623,
+ y: 31.2864590001828,
+ },
+ {
+ x: 121.492117999946,
+ y: 31.2783900003982,
+ },
+ {
+ x: 121.496978000135,
+ y: 31.2770620003111,
+ },
+ {
+ x: 121.502098999769,
+ y: 31.272614000236,
+ },
+ {
+ x: 121.502516000113,
+ y: 31.2668820003041,
+ },
+ {
+ x: 121.513281000118,
+ y: 31.2539019997775,
+ },
+ {
+ x: 121.511630999571,
+ y: 31.2536560001244,
+ },
+ {
+ x: 121.512116000353,
+ y: 31.2490109999578,
+ },
+ {
+ x: 121.498453999852,
+ y: 31.2478300003543,
+ },
+ {
+ x: 121.490380999883,
+ y: 31.2442069996534,
+ },
+ {
+ x: 121.482490000213,
+ y: 31.2462159996687,
+ },
+ {
+ x: 121.480562000336,
+ y: 31.2456840003164,
+ },
+ {
+ x: 121.47849600039,
+ y: 31.2438830000005,
+ },
+ {
+ x: 121.476838000374,
+ y: 31.2496790001858,
+ },
+ {
+ x: 121.475084000426,
+ y: 31.2517599999241,
+ },
+ {
+ x: 121.477183000095,
+ y: 31.2526779999898,
+ },
+ {
+ x: 121.475120000288,
+ y: 31.2553370003023,
+ },
+ {
+ x: 121.476082999731,
+ y: 31.2571939996034,
+ },
+ {
+ x: 121.475990999985,
+ y: 31.2605180000057,
+ },
+ {
+ x: 121.465659000163,
+ y: 31.2690440001805,
+ },
+ {
+ x: 121.457319999618,
+ y: 31.2791609999802,
+ },
+ {
+ x: 121.456756999736,
+ y: 31.2840830003303,
+ },
+ {
+ x: 121.457243999711,
+ y: 31.2865829996058,
+ },
+ {
+ x: 121.456419000337,
+ y: 31.290695000374,
+ },
+ {
+ x: 121.455481000248,
+ y: 31.2917929997472,
+ },
+ {
+ x: 121.457885999639,
+ y: 31.2946310002205,
+ },
+ {
+ x: 121.459969000369,
+ y: 31.2998829996008,
+ },
+ {
+ x: 121.458971000212,
+ y: 31.3078869999851,
+ },
+ {
+ x: 121.463130000449,
+ y: 31.3081979999378,
+ },
+ {
+ x: 121.463762999963,
+ y: 31.3179269998312,
+ },
+ ],
+ ],
+ province: "涓婃捣甯�",
+ sheng_code: "310000",
+ city: "涓婃捣鍩庡尯",
+ city_code: "310100",
+ district: "铏瑰彛鍖�",
+ adcode: "310109",
+ },
+ {
+ OGR_FID: 12,
+ SHAPE: [
+ [
+ {
+ x: 121.341041000042,
+ y: 31.2438450000467,
+ },
+ {
+ x: 121.342231000061,
+ y: 31.2429300001195,
+ },
+ {
+ x: 121.342698000013,
+ y: 31.2450770002034,
+ },
+ {
+ x: 121.344887000235,
+ y: 31.2454379997639,
+ },
+ {
+ x: 121.345537999679,
+ y: 31.2437229998166,
+ },
+ {
+ x: 121.344591000075,
+ y: 31.2432949998644,
+ },
+ {
+ x: 121.344149000376,
+ y: 31.241254000172,
+ },
+ {
+ x: 121.349087999712,
+ y: 31.2397019996476,
+ },
+ {
+ x: 121.356640999982,
+ y: 31.2282329995533,
+ },
+ {
+ x: 121.361442000148,
+ y: 31.2278719999928,
+ },
+ {
+ x: 121.362345000421,
+ y: 31.2255970003014,
+ },
+ {
+ x: 121.366330999876,
+ y: 31.2246709998668,
+ },
+ {
+ x: 121.368908000004,
+ y: 31.2216950002241,
+ },
+ {
+ x: 121.372276999784,
+ y: 31.2225389995752,
+ },
+ {
+ x: 121.384014999693,
+ y: 31.2204890003671,
+ },
+ {
+ x: 121.39449600009,
+ y: 31.220134000184,
+ },
+ {
+ x: 121.395814999762,
+ y: 31.2226480001052,
+ },
+ {
+ x: 121.399879000116,
+ y: 31.222565999921,
+ },
+ {
+ x: 121.410741000097,
+ y: 31.2257429998396,
+ },
+ {
+ x: 121.41142600021,
+ y: 31.2271299999496,
+ },
+ {
+ x: 121.410306999868,
+ y: 31.2303370003523,
+ },
+ {
+ x: 121.411392000441,
+ y: 31.2302309999607,
+ },
+ {
+ x: 121.415298999849,
+ y: 31.227041000342,
+ },
+ {
+ x: 121.418693999928,
+ y: 31.2299650002846,
+ },
+ {
+ x: 121.421798000078,
+ y: 31.2313169996798,
+ },
+ {
+ x: 121.422880999658,
+ y: 31.231134000234,
+ },
+ {
+ x: 121.423078999796,
+ y: 31.2260769999536,
+ },
+ {
+ x: 121.424399000414,
+ y: 31.2249439998657,
+ },
+ {
+ x: 121.42967800014,
+ y: 31.2277509998088,
+ },
+ {
+ x: 121.430788000066,
+ y: 31.2269309997659,
+ },
+ {
+ x: 121.431551000179,
+ y: 31.2225429997597,
+ },
+ {
+ x: 121.434851000373,
+ y: 31.2163560004291,
+ },
+ {
+ x: 121.433218999757,
+ y: 31.2136570000706,
+ },
+ {
+ x: 121.430601000436,
+ y: 31.2129899998886,
+ },
+ {
+ x: 121.433312000448,
+ y: 31.2058479996855,
+ },
+ {
+ x: 121.419159999834,
+ y: 31.1991720002877,
+ },
+ {
+ x: 121.417001000096,
+ y: 31.1972129998801,
+ },
+ {
+ x: 121.417531000256,
+ y: 31.194527000121,
+ },
+ {
+ x: 121.415628999779,
+ y: 31.1927819996896,
+ },
+ {
+ x: 121.412009000115,
+ y: 31.1928160003582,
+ },
+ {
+ x: 121.412269000414,
+ y: 31.1942590003526,
+ },
+ {
+ x: 121.41154800044,
+ y: 31.1942859997991,
+ },
+ {
+ x: 121.410272000053,
+ y: 31.1928680000582,
+ },
+ {
+ x: 121.387558000302,
+ y: 31.1938179998009,
+ },
+ {
+ x: 121.377513000225,
+ y: 31.1923729997142,
+ },
+ {
+ x: 121.36042600006,
+ y: 31.1872039996649,
+ },
+ {
+ x: 121.356546000098,
+ y: 31.1870400001959,
+ },
+ {
+ x: 121.353715999993,
+ y: 31.1879079997544,
+ },
+ {
+ x: 121.352352000045,
+ y: 31.184661000205,
+ },
+ {
+ x: 121.348705000036,
+ y: 31.1835369996329,
+ },
+ {
+ x: 121.348072999669,
+ y: 31.1848889999275,
+ },
+ {
+ x: 121.346830999951,
+ y: 31.1854030002483,
+ },
+ {
+ x: 121.337534000194,
+ y: 31.1816200002629,
+ },
+ {
+ x: 121.337333999964,
+ y: 31.1797080002241,
+ },
+ {
+ x: 121.33665700022,
+ y: 31.1801119999689,
+ },
+ {
+ x: 121.336846999989,
+ y: 31.1813690003791,
+ },
+ {
+ x: 121.33377400037,
+ y: 31.1820429999845,
+ },
+ {
+ x: 121.327256000164,
+ y: 31.1915660002708,
+ },
+ {
+ x: 121.333488999818,
+ y: 31.1945409998673,
+ },
+ {
+ x: 121.332733000028,
+ y: 31.1975379995791,
+ },
+ {
+ x: 121.334356000229,
+ y: 31.198570999552,
+ },
+ {
+ x: 121.3339480003,
+ y: 31.2140959996307,
+ },
+ {
+ x: 121.335424000018,
+ y: 31.2141870002299,
+ },
+ {
+ x: 121.33665700022,
+ y: 31.216214000176,
+ },
+ {
+ x: 121.335692999832,
+ y: 31.2163320002217,
+ },
+ {
+ x: 121.335154000157,
+ y: 31.2148939995585,
+ },
+ {
+ x: 121.334798999974,
+ y: 31.2185210004438,
+ },
+ {
+ x: 121.337645999963,
+ y: 31.2192200003028,
+ },
+ {
+ x: 121.338514000421,
+ y: 31.2249789996811,
+ },
+ {
+ x: 121.340736000366,
+ y: 31.2246250004434,
+ },
+ {
+ x: 121.341049999558,
+ y: 31.2254289997486,
+ },
+ {
+ x: 121.336222999991,
+ y: 31.2264570003903,
+ },
+ {
+ x: 121.337350999849,
+ y: 31.2271160002033,
+ },
+ {
+ x: 121.337004000035,
+ y: 31.2281999998302,
+ },
+ {
+ x: 121.338601999982,
+ y: 31.2286479998054,
+ },
+ {
+ x: 121.338532000352,
+ y: 31.2294059996872,
+ },
+ {
+ x: 121.340788000066,
+ y: 31.2297850000778,
+ },
+ {
+ x: 121.340094000438,
+ y: 31.2321320003916,
+ },
+ {
+ x: 121.340796999582,
+ y: 31.2322870003449,
+ },
+ {
+ x: 121.338930999866,
+ y: 31.2362050002606,
+ },
+ {
+ x: 121.337897999893,
+ y: 31.2360569997308,
+ },
+ {
+ x: 121.337333999964,
+ y: 31.2372970002564,
+ },
+ {
+ x: 121.335535999787,
+ y: 31.2379659996312,
+ },
+ {
+ x: 121.33420000023,
+ y: 31.2374969995869,
+ },
+ {
+ x: 121.333704999886,
+ y: 31.2382209996994,
+ },
+ {
+ x: 121.334470000091,
+ y: 31.2387550000433,
+ },
+ {
+ x: 121.333782999886,
+ y: 31.2394299996948,
+ },
+ {
+ x: 121.336291999576,
+ y: 31.2418459995932,
+ },
+ {
+ x: 121.340996999812,
+ y: 31.2417739998702,
+ },
+ {
+ x: 121.340033000323,
+ y: 31.2454429999945,
+ },
+ {
+ x: 121.341448999971,
+ y: 31.2458679998084,
+ },
+ {
+ x: 121.341041000042,
+ y: 31.2438450000467,
+ },
+ ],
+ ],
+ province: "涓婃捣甯�",
+ sheng_code: "310000",
+ city: "涓婃捣鍩庡尯",
+ city_code: "310100",
+ district: "闀垮畞鍖�",
+ adcode: "310105",
+ },
+ {
+ OGR_FID: 13,
+ SHAPE: [
+ [
+ {
+ x: 121.463590000079,
+ y: 31.3222129996303,
+ },
+ {
+ x: 121.463130000449,
+ y: 31.3081979999378,
+ },
+ {
+ x: 121.458971000212,
+ y: 31.3078869999851,
+ },
+ {
+ x: 121.459969000369,
+ y: 31.2998829996008,
+ },
+ {
+ x: 121.457885999639,
+ y: 31.2946310002205,
+ },
+ {
+ x: 121.455481000248,
+ y: 31.2917929997472,
+ },
+ {
+ x: 121.456419000337,
+ y: 31.290695000374,
+ },
+ {
+ x: 121.457243999711,
+ y: 31.2865829996058,
+ },
+ {
+ x: 121.456896999897,
+ y: 31.2808149998124,
+ },
+ {
+ x: 121.458278999776,
+ y: 31.2772839997568,
+ },
+ {
+ x: 121.460263999584,
+ y: 31.2760939997384,
+ },
+ {
+ x: 121.465659000163,
+ y: 31.2690440001805,
+ },
+ {
+ x: 121.475990999985,
+ y: 31.2605180000057,
+ },
+ {
+ x: 121.476082999731,
+ y: 31.2571939996034,
+ },
+ {
+ x: 121.475120000288,
+ y: 31.2553370003023,
+ },
+ {
+ x: 121.477183000095,
+ y: 31.2526779999898,
+ },
+ {
+ x: 121.475084000426,
+ y: 31.2517599999241,
+ },
+ {
+ x: 121.476838000374,
+ y: 31.2496790001858,
+ },
+ {
+ x: 121.47849600039,
+ y: 31.2438830000005,
+ },
+ {
+ x: 121.475822000285,
+ y: 31.2420619996616,
+ },
+ {
+ x: 121.47108300028,
+ y: 31.2434329999331,
+ },
+ {
+ x: 121.465022999612,
+ y: 31.2411410003569,
+ },
+ {
+ x: 121.458415999799,
+ y: 31.2433099996568,
+ },
+ {
+ x: 121.461776000062,
+ y: 31.2362359998915,
+ },
+ {
+ x: 121.463372999964,
+ y: 31.2276420001782,
+ },
+ {
+ x: 121.463005000081,
+ y: 31.2260220001153,
+ },
+ {
+ x: 121.452183000145,
+ y: 31.2258009998163,
+ },
+ {
+ x: 121.453114999957,
+ y: 31.2221010000612,
+ },
+ {
+ x: 121.444953000381,
+ y: 31.2183650004445,
+ },
+ {
+ x: 121.434690000143,
+ y: 31.2162829997607,
+ },
+ {
+ x: 121.431551000179,
+ y: 31.2225429997597,
+ },
+ {
+ x: 121.430788000066,
+ y: 31.2269309997659,
+ },
+ {
+ x: 121.42967800014,
+ y: 31.2277509998088,
+ },
+ {
+ x: 121.424399000414,
+ y: 31.2249439998657,
+ },
+ {
+ x: 121.423078999796,
+ y: 31.2260769999536,
+ },
+ {
+ x: 121.423112999565,
+ y: 31.2325180002056,
+ },
+ {
+ x: 121.426375999853,
+ y: 31.2369539997273,
+ },
+ {
+ x: 121.431063000157,
+ y: 31.2372679998184,
+ },
+ {
+ x: 121.441353999887,
+ y: 31.2433169999796,
+ },
+ {
+ x: 121.444656000174,
+ y: 31.2443770002984,
+ },
+ {
+ x: 121.445402000402,
+ y: 31.24517400018,
+ },
+ {
+ x: 121.44371700004,
+ y: 31.2470949997345,
+ },
+ {
+ x: 121.445817999801,
+ y: 31.2496250003935,
+ },
+ {
+ x: 121.4460519998,
+ y: 31.2526440002205,
+ },
+ {
+ x: 121.446694999775,
+ y: 31.2526139997364,
+ },
+ {
+ x: 121.446877000074,
+ y: 31.2538700001004,
+ },
+ {
+ x: 121.444723999713,
+ y: 31.2547969996818,
+ },
+ {
+ x: 121.44645200026,
+ y: 31.2581390000149,
+ },
+ {
+ x: 121.438108000384,
+ y: 31.2692360000414,
+ },
+ {
+ x: 121.427784000032,
+ y: 31.2737779999548,
+ },
+ {
+ x: 121.425202999719,
+ y: 31.276758999828,
+ },
+ {
+ x: 121.420403999645,
+ y: 31.2726829998206,
+ },
+ {
+ x: 121.419900999831,
+ y: 31.2816840003164,
+ },
+ {
+ x: 121.418191000115,
+ y: 31.2860799997922,
+ },
+ {
+ x: 121.41915599965,
+ y: 31.2928760002273,
+ },
+ {
+ x: 121.415047999965,
+ y: 31.2928839996969,
+ },
+ {
+ x: 121.413996000015,
+ y: 31.2940700004302,
+ },
+ {
+ x: 121.414492000406,
+ y: 31.2966509998438,
+ },
+ {
+ x: 121.415751000009,
+ y: 31.2975340000941,
+ },
+ {
+ x: 121.415385000218,
+ y: 31.2987260002048,
+ },
+ {
+ x: 121.422296999707,
+ y: 31.3003499995529,
+ },
+ {
+ x: 121.421786000424,
+ y: 31.3050199999731,
+ },
+ {
+ x: 121.426659000313,
+ y: 31.3054580003865,
+ },
+ {
+ x: 121.426411999714,
+ y: 31.3075899997787,
+ },
+ {
+ x: 121.427800999916,
+ y: 31.3077370002624,
+ },
+ {
+ x: 121.427037999804,
+ y: 31.3113990000638,
+ },
+ {
+ x: 121.427853999662,
+ y: 31.312120000038,
+ },
+ {
+ x: 121.427532000102,
+ y: 31.313507000148,
+ },
+ {
+ x: 121.429990000138,
+ y: 31.3141209996845,
+ },
+ {
+ x: 121.427835999732,
+ y: 31.3204829998906,
+ },
+ {
+ x: 121.428557999752,
+ y: 31.3203599996144,
+ },
+ {
+ x: 121.429078000349,
+ y: 31.3227429997897,
+ },
+ {
+ x: 121.431830999601,
+ y: 31.322694000228,
+ },
+ {
+ x: 121.432063000407,
+ y: 31.3214949997945,
+ },
+ {
+ x: 121.442110999723,
+ y: 31.3216539999322,
+ },
+ {
+ x: 121.443282999811,
+ y: 31.3189480001502,
+ },
+ {
+ x: 121.450116000153,
+ y: 31.3211059998421,
+ },
+ {
+ x: 121.452555000213,
+ y: 31.3228619998815,
+ },
+ {
+ x: 121.460821000089,
+ y: 31.3232820003641,
+ },
+ {
+ x: 121.46066500009,
+ y: 31.3222769998837,
+ },
+ {
+ x: 121.463590000079,
+ y: 31.3222129996303,
+ },
+ ],
+ ],
+ province: "涓婃捣甯�",
+ sheng_code: "310000",
+ city: "涓婃捣鍩庡尯",
+ city_code: "310100",
+ district: "闈欏畨鍖�",
+ adcode: "310106",
+ },
+ {
+ OGR_FID: 14,
+ SHAPE: [
+ [
+ {
+ x: 121.251681999924,
+ y: 31.2606400002359,
+ },
+ {
+ x: 121.25578700037,
+ y: 31.2603310003754,
+ },
+ {
+ x: 121.259546000148,
+ y: 31.2611620000263,
+ },
+ {
+ x: 121.260015000192,
+ y: 31.258505999852,
+ },
+ {
+ x: 121.263077000203,
+ y: 31.2565169998597,
+ },
+ {
+ x: 121.262617999721,
+ y: 31.2553310000257,
+ },
+ {
+ x: 121.263337999649,
+ y: 31.2535099996868,
+ },
+ {
+ x: 121.264076999554,
+ y: 31.2561669999072,
+ },
+ {
+ x: 121.266845000397,
+ y: 31.2542660003757,
+ },
+ {
+ x: 121.269213999926,
+ y: 31.2555500002324,
+ },
+ {
+ x: 121.270854000012,
+ y: 31.2555219998405,
+ },
+ {
+ x: 121.275906000062,
+ y: 31.2538839998468,
+ },
+ {
+ x: 121.27889100012,
+ y: 31.2543509997989,
+ },
+ {
+ x: 121.279768000093,
+ y: 31.2538259998701,
+ },
+ {
+ x: 121.277138000219,
+ y: 31.2497849996781,
+ },
+ {
+ x: 121.279880999908,
+ y: 31.246714000151,
+ },
+ {
+ x: 121.282588999783,
+ y: 31.2456899996938,
+ },
+ {
+ x: 121.283525999825,
+ y: 31.2412560002642,
+ },
+ {
+ x: 121.287717999786,
+ y: 31.2351419998035,
+ },
+ {
+ x: 121.292449000321,
+ y: 31.2330300004342,
+ },
+ {
+ x: 121.298506999998,
+ y: 31.2325800003668,
+ },
+ {
+ x: 121.310876000227,
+ y: 31.229160000034,
+ },
+ {
+ x: 121.317550999579,
+ y: 31.2314460002328,
+ },
+ {
+ x: 121.321587999587,
+ y: 31.231510999633,
+ },
+ {
+ x: 121.329321000064,
+ y: 31.2339169999696,
+ },
+ {
+ x: 121.330093999738,
+ y: 31.2347169999896,
+ },
+ {
+ x: 121.330086000269,
+ y: 31.237526000025,
+ },
+ {
+ x: 121.333782999886,
+ y: 31.2394299996948,
+ },
+ {
+ x: 121.334470000091,
+ y: 31.2387550000433,
+ },
+ {
+ x: 121.333704999886,
+ y: 31.2382209996994,
+ },
+ {
+ x: 121.33420000023,
+ y: 31.2374969995869,
+ },
+ {
+ x: 121.335535999787,
+ y: 31.2379659996312,
+ },
+ {
+ x: 121.337333999964,
+ y: 31.2372970002564,
+ },
+ {
+ x: 121.337897999893,
+ y: 31.2360569997308,
+ },
+ {
+ x: 121.338930999866,
+ y: 31.2362050002606,
+ },
+ {
+ x: 121.340796999582,
+ y: 31.2322870003449,
+ },
+ {
+ x: 121.340094000438,
+ y: 31.2321320003916,
+ },
+ {
+ x: 121.340788000066,
+ y: 31.2297850000778,
+ },
+ {
+ x: 121.338532000352,
+ y: 31.2294059996872,
+ },
+ {
+ x: 121.338601999982,
+ y: 31.2286479998054,
+ },
+ {
+ x: 121.337004000035,
+ y: 31.2281999998302,
+ },
+ {
+ x: 121.337350999849,
+ y: 31.2271160002033,
+ },
+ {
+ x: 121.336222999991,
+ y: 31.2264570003903,
+ },
+ {
+ x: 121.341049999558,
+ y: 31.2254289997486,
+ },
+ {
+ x: 121.340736000366,
+ y: 31.2246250004434,
+ },
+ {
+ x: 121.338514000421,
+ y: 31.2249789996811,
+ },
+ {
+ x: 121.337645999963,
+ y: 31.2192200003028,
+ },
+ {
+ x: 121.334798999974,
+ y: 31.2185210004438,
+ },
+ {
+ x: 121.335154000157,
+ y: 31.2148939995585,
+ },
+ {
+ x: 121.335692999832,
+ y: 31.2163320002217,
+ },
+ {
+ x: 121.33665700022,
+ y: 31.216214000176,
+ },
+ {
+ x: 121.335424000018,
+ y: 31.2141870002299,
+ },
+ {
+ x: 121.3339480003,
+ y: 31.2140959996307,
+ },
+ {
+ x: 121.334356000229,
+ y: 31.198570999552,
+ },
+ {
+ x: 121.332733000028,
+ y: 31.1975379995791,
+ },
+ {
+ x: 121.333488999818,
+ y: 31.1945409998673,
+ },
+ {
+ x: 121.327256000164,
+ y: 31.1915660002708,
+ },
+ {
+ x: 121.33377400037,
+ y: 31.1820429999845,
+ },
+ {
+ x: 121.336846999989,
+ y: 31.1813690003791,
+ },
+ {
+ x: 121.337177999965,
+ y: 31.1797209999243,
+ },
+ {
+ x: 121.337785000078,
+ y: 31.1801790003606,
+ },
+ {
+ x: 121.337534000194,
+ y: 31.1816200002629,
+ },
+ {
+ x: 121.346830999951,
+ y: 31.1854030002483,
+ },
+ {
+ x: 121.348072999669,
+ y: 31.1848889999275,
+ },
+ {
+ x: 121.348705000036,
+ y: 31.1835369996329,
+ },
+ {
+ x: 121.352352000045,
+ y: 31.184661000205,
+ },
+ {
+ x: 121.353715999993,
+ y: 31.1879079997544,
+ },
+ {
+ x: 121.356546000098,
+ y: 31.1870400001959,
+ },
+ {
+ x: 121.36042600006,
+ y: 31.1872039996649,
+ },
+ {
+ x: 121.377513000225,
+ y: 31.1923729997142,
+ },
+ {
+ x: 121.387558000302,
+ y: 31.1938179998009,
+ },
+ {
+ x: 121.407924999739,
+ y: 31.1929739995505,
+ },
+ {
+ x: 121.408264000084,
+ y: 31.1895869998402,
+ },
+ {
+ x: 121.40890900015,
+ y: 31.1886950000742,
+ },
+ {
+ x: 121.410611000397,
+ y: 31.189220000003,
+ },
+ {
+ x: 121.411131000096,
+ y: 31.1876769998937,
+ },
+ {
+ x: 121.410514999568,
+ y: 31.1852569998107,
+ },
+ {
+ x: 121.395450000018,
+ y: 31.1806680004279,
+ },
+ {
+ x: 121.393704999586,
+ y: 31.1817639997089,
+ },
+ {
+ x: 121.393044999727,
+ y: 31.1814329997332,
+ },
+ {
+ x: 121.393428000302,
+ y: 31.1800889998075,
+ },
+ {
+ x: 121.389802000362,
+ y: 31.1797409999472,
+ },
+ {
+ x: 121.390776000312,
+ y: 31.1764560004441,
+ },
+ {
+ x: 121.388052999746,
+ y: 31.1749510002885,
+ },
+ {
+ x: 121.389408000179,
+ y: 31.1713590001178,
+ },
+ {
+ x: 121.386863999774,
+ y: 31.1705590000979,
+ },
+ {
+ x: 121.389927999877,
+ y: 31.1614770003633,
+ },
+ {
+ x: 121.39799499957,
+ y: 31.1640999999151,
+ },
+ {
+ x: 121.39992999977,
+ y: 31.1594610000252,
+ },
+ {
+ x: 121.391255999965,
+ y: 31.1577549995936,
+ },
+ {
+ x: 121.392293000122,
+ y: 31.1545589996981,
+ },
+ {
+ x: 121.396804999551,
+ y: 31.1556470004088,
+ },
+ {
+ x: 121.396329000083,
+ y: 31.1570870002649,
+ },
+ {
+ x: 121.40030399993,
+ y: 31.1585640000286,
+ },
+ {
+ x: 121.408310000406,
+ y: 31.1405840000516,
+ },
+ {
+ x: 121.416889000327,
+ y: 31.1290270003958,
+ },
+ {
+ x: 121.431892999762,
+ y: 31.1309629997427,
+ },
+ {
+ x: 121.434328999684,
+ y: 31.1215849998479,
+ },
+ {
+ x: 121.431121000134,
+ y: 31.1154609998254,
+ },
+ {
+ x: 121.434809000235,
+ y: 31.1139920004305,
+ },
+ {
+ x: 121.436944999812,
+ y: 31.1144999995753,
+ },
+ {
+ x: 121.441346999564,
+ y: 31.1173580000717,
+ },
+ {
+ x: 121.442043000184,
+ y: 31.1161880000762,
+ },
+ {
+ x: 121.445075999758,
+ y: 31.117210999588,
+ },
+ {
+ x: 121.447085999819,
+ y: 31.1169589996582,
+ },
+ {
+ x: 121.445575000286,
+ y: 31.1147619999664,
+ },
+ {
+ x: 121.447788999862,
+ y: 31.1105439997059,
+ },
+ {
+ x: 121.447016000188,
+ y: 31.110462000421,
+ },
+ {
+ x: 121.447016000188,
+ y: 31.1095669996174,
+ },
+ {
+ x: 121.443040000296,
+ y: 31.1093670002869,
+ },
+ {
+ x: 121.443082999581,
+ y: 31.1087149998974,
+ },
+ {
+ x: 121.441563999679,
+ y: 31.1085080002441,
+ },
+ {
+ x: 121.441685999909,
+ y: 31.1076809998783,
+ },
+ {
+ x: 121.443473999625,
+ y: 31.1078630001774,
+ },
+ {
+ x: 121.444003999785,
+ y: 31.1066770003433,
+ },
+ {
+ x: 121.445956999916,
+ y: 31.1069019999274,
+ },
+ {
+ x: 121.446104000399,
+ y: 31.1057689998395,
+ },
+ {
+ x: 121.447302999934,
+ y: 31.1058069997932,
+ },
+ {
+ x: 121.448049000161,
+ y: 31.1031870003798,
+ },
+ {
+ x: 121.450854000012,
+ y: 31.1027190003816,
+ },
+ {
+ x: 121.453745000232,
+ y: 31.1034980003325,
+ },
+ {
+ x: 121.454552999721,
+ y: 31.1029439999657,
+ },
+ {
+ x: 121.458311000352,
+ y: 31.1039359998466,
+ },
+ {
+ x: 121.458694000028,
+ y: 31.1105609995905,
+ },
+ {
+ x: 121.460664000044,
+ y: 31.1140769998537,
+ },
+ {
+ x: 121.467036999858,
+ y: 31.1121920001607,
+ },
+ {
+ x: 121.468443999991,
+ y: 31.1131009998114,
+ },
+ {
+ x: 121.466907000158,
+ y: 31.1139579997619,
+ },
+ {
+ x: 121.469468000448,
+ y: 31.1149240002425,
+ },
+ {
+ x: 121.470014999593,
+ y: 31.1164389999599,
+ },
+ {
+ x: 121.472514999767,
+ y: 31.1132929996722,
+ },
+ {
+ x: 121.472593999813,
+ y: 31.1113780003944,
+ },
+ {
+ x: 121.473523000386,
+ y: 31.1114940003479,
+ },
+ {
+ x: 121.472819000297,
+ y: 31.1128669998122,
+ },
+ {
+ x: 121.474033999669,
+ y: 31.1133489995568,
+ },
+ {
+ x: 121.474824000128,
+ y: 31.1120030004382,
+ },
+ {
+ x: 121.476873000189,
+ y: 31.1127249995591,
+ },
+ {
+ x: 121.475127999757,
+ y: 31.1157509997089,
+ },
+ {
+ x: 121.473260999995,
+ y: 31.1171270002109,
+ },
+ {
+ x: 121.473582999556,
+ y: 31.1185419998135,
+ },
+ {
+ x: 121.472948999996,
+ y: 31.1193429998796,
+ },
+ {
+ x: 121.474484999783,
+ y: 31.1198180002006,
+ },
+ {
+ x: 121.475076000057,
+ y: 31.1192170003643,
+ },
+ {
+ x: 121.477385000417,
+ y: 31.1205200001979,
+ },
+ {
+ x: 121.477428999749,
+ y: 31.1221099997767,
+ },
+ {
+ x: 121.478982000319,
+ y: 31.1221020003071,
+ },
+ {
+ x: 121.479597999948,
+ y: 31.1226290003282,
+ },
+ {
+ x: 121.479269000064,
+ y: 31.1236040003244,
+ },
+ {
+ x: 121.480484000336,
+ y: 31.1233140004408,
+ },
+ {
+ x: 121.481230999711,
+ y: 31.1239680000232,
+ },
+ {
+ x: 121.481656000424,
+ y: 31.1266680004279,
+ },
+ {
+ x: 121.485814999763,
+ y: 31.1263229998066,
+ },
+ {
+ x: 121.488358000122,
+ y: 31.1207679999433,
+ },
+ {
+ x: 121.494114000261,
+ y: 31.1235739998403,
+ },
+ {
+ x: 121.49470399959,
+ y: 31.1232090000954,
+ },
+ {
+ x: 121.497160000434,
+ y: 31.1167439996359,
+ },
+ {
+ x: 121.499052999596,
+ y: 31.1177819998395,
+ },
+ {
+ x: 121.49954799994,
+ y: 31.1168700000505,
+ },
+ {
+ x: 121.500892999912,
+ y: 31.1175809995635,
+ },
+ {
+ x: 121.49945200001,
+ y: 31.1204050002906,
+ },
+ {
+ x: 121.501310000256,
+ y: 31.1214049996411,
+ },
+ {
+ x: 121.501093000142,
+ y: 31.1220970000766,
+ },
+ {
+ x: 121.504921000404,
+ y: 31.1226270002359,
+ },
+ {
+ x: 121.505354999734,
+ y: 31.1235559999095,
+ },
+ {
+ x: 121.505554999963,
+ y: 31.1229000002349,
+ },
+ {
+ x: 121.50696100005,
+ y: 31.1232999997952,
+ },
+ {
+ x: 121.508417999791,
+ y: 31.1215500000325,
+ },
+ {
+ x: 121.510146000338,
+ y: 31.1173990001638,
+ },
+ {
+ x: 121.517071999573,
+ y: 31.1184490000214,
+ },
+ {
+ x: 121.518530000259,
+ y: 31.1173840003714,
+ },
+ {
+ x: 121.519944999862,
+ y: 31.1178690002542,
+ },
+ {
+ x: 121.519598000048,
+ y: 31.1188630002273,
+ },
+ {
+ x: 121.527106000042,
+ y: 31.1205879997365,
+ },
+ {
+ x: 121.527938999785,
+ y: 31.1193730003637,
+ },
+ {
+ x: 121.531047000119,
+ y: 31.1201490001762,
+ },
+ {
+ x: 121.531254999818,
+ y: 31.1186189997671,
+ },
+ {
+ x: 121.532375000206,
+ y: 31.1189359999964,
+ },
+ {
+ x: 121.532644000021,
+ y: 31.1177700001854,
+ },
+ {
+ x: 121.533251000134,
+ y: 31.1179159997237,
+ },
+ {
+ x: 121.533589999579,
+ y: 31.1161670000071,
+ },
+ {
+ x: 121.534953000381,
+ y: 31.1164569998907,
+ },
+ {
+ x: 121.535238000034,
+ y: 31.117817999701,
+ },
+ {
+ x: 121.537963999839,
+ y: 31.1183509999987,
+ },
+ {
+ x: 121.539951999785,
+ y: 31.1136629996478,
+ },
+ {
+ x: 121.541192000311,
+ y: 31.1136400003858,
+ },
+ {
+ x: 121.541505000356,
+ y: 31.1120859997691,
+ },
+ {
+ x: 121.543422999772,
+ y: 31.1118660004157,
+ },
+ {
+ x: 121.546166000361,
+ y: 31.1138340003389,
+ },
+ {
+ x: 121.544951000089,
+ y: 31.115630999571,
+ },
+ {
+ x: 121.548058000376,
+ y: 31.1161160003532,
+ },
+ {
+ x: 121.549081999934,
+ y: 31.1149010000811,
+ },
+ {
+ x: 121.551035000065,
+ y: 31.1171040000496,
+ },
+ {
+ x: 121.552458000037,
+ y: 31.1153130001949,
+ },
+ {
+ x: 121.553932999708,
+ y: 31.1156529996862,
+ },
+ {
+ x: 121.55562600044,
+ y: 31.1141230001764,
+ },
+ {
+ x: 121.555165999911,
+ y: 31.1130989997191,
+ },
+ {
+ x: 121.553282000264,
+ y: 31.1128370002274,
+ },
+ {
+ x: 121.553630000124,
+ y: 31.1111780001646,
+ },
+ {
+ x: 121.557162000226,
+ y: 31.1084609998753,
+ },
+ {
+ x: 121.555902999724,
+ y: 31.1076629999475,
+ },
+ {
+ x: 121.556900999881,
+ y: 31.1075019997176,
+ },
+ {
+ x: 121.559418999987,
+ y: 31.1041069996384,
+ },
+ {
+ x: 121.55783899997,
+ y: 31.1034960002403,
+ },
+ {
+ x: 121.559089000057,
+ y: 31.1012019996726,
+ },
+ {
+ x: 121.558724000312,
+ y: 31.1003340001141,
+ },
+ {
+ x: 121.560780999843,
+ y: 31.1009580001117,
+ },
+ {
+ x: 121.561294000118,
+ y: 31.0986040003744,
+ },
+ {
+ x: 121.562604000274,
+ y: 31.0988229996817,
+ },
+ {
+ x: 121.563045999973,
+ y: 31.0958809998083,
+ },
+ {
+ x: 121.558880000312,
+ y: 31.094024999654,
+ },
+ {
+ x: 121.557621999855,
+ y: 31.0941120000688,
+ },
+ {
+ x: 121.557109999627,
+ y: 31.0958219997855,
+ },
+ {
+ x: 121.556963000043,
+ y: 31.0950500001574,
+ },
+ {
+ x: 121.554852999866,
+ y: 31.094185999884,
+ },
+ {
+ x: 121.553446999779,
+ y: 31.0943749996066,
+ },
+ {
+ x: 121.551520999994,
+ y: 31.0931060004416,
+ },
+ {
+ x: 121.547355000333,
+ y: 31.0923539999372,
+ },
+ {
+ x: 121.547848999732,
+ y: 31.0912250000338,
+ },
+ {
+ x: 121.54677399962,
+ y: 31.0908479997354,
+ },
+ {
+ x: 121.547285999849,
+ y: 31.0903789996912,
+ },
+ {
+ x: 121.544282999861,
+ y: 31.0891099996268,
+ },
+ {
+ x: 121.546304999576,
+ y: 31.0850640001036,
+ },
+ {
+ x: 121.547519999848,
+ y: 31.0849239999427,
+ },
+ {
+ x: 121.549307999565,
+ y: 31.0825360004361,
+ },
+ {
+ x: 121.550280000322,
+ y: 31.0833930003867,
+ },
+ {
+ x: 121.552171000292,
+ y: 31.0833049999259,
+ },
+ {
+ x: 121.552796000335,
+ y: 31.0849439999657,
+ },
+ {
+ x: 121.556832000297,
+ y: 31.0859719997081,
+ },
+ {
+ x: 121.559357999872,
+ y: 31.0847429996898,
+ },
+ {
+ x: 121.565546000148,
+ y: 31.0838740000851,
+ },
+ {
+ x: 121.566969000119,
+ y: 31.0823609995605,
+ },
+ {
+ x: 121.568444999837,
+ y: 31.0835830001554,
+ },
+ {
+ x: 121.57123900008,
+ y: 31.0830289997886,
+ },
+ {
+ x: 121.569061000365,
+ y: 31.0813430002793,
+ },
+ {
+ x: 121.565658999963,
+ y: 31.081432999933,
+ },
+ {
+ x: 121.56690900005,
+ y: 31.0798909998698,
+ },
+ {
+ x: 121.564382999576,
+ y: 31.0787880002661,
+ },
+ {
+ x: 121.561857000001,
+ y: 31.0789699996658,
+ },
+ {
+ x: 121.562030999931,
+ y: 31.0782450004065,
+ },
+ {
+ x: 121.558395000429,
+ y: 31.0773739998103,
+ },
+ {
+ x: 121.558454999599,
+ y: 31.0765640002285,
+ },
+ {
+ x: 121.55745700034,
+ y: 31.0759830004152,
+ },
+ {
+ x: 121.556320000068,
+ y: 31.0763969997218,
+ },
+ {
+ x: 121.55329099978,
+ y: 31.0756100003013,
+ },
+ {
+ x: 121.554802000212,
+ y: 31.0744269997063,
+ },
+ {
+ x: 121.55135599958,
+ y: 31.0739290001233,
+ },
+ {
+ x: 121.548535999936,
+ y: 31.0717500003623,
+ },
+ {
+ x: 121.549794000393,
+ y: 31.0707079999743,
+ },
+ {
+ x: 121.548803999705,
+ y: 31.070067000092,
+ },
+ {
+ x: 121.549047000119,
+ y: 31.0692179996111,
+ },
+ {
+ x: 121.550756999836,
+ y: 31.0705190002517,
+ },
+ {
+ x: 121.552509999737,
+ y: 31.0696170000246,
+ },
+ {
+ x: 121.549515000117,
+ y: 31.0680329998231,
+ },
+ {
+ x: 121.548015000192,
+ y: 31.0682479998454,
+ },
+ {
+ x: 121.546843000104,
+ y: 31.0660409996925,
+ },
+ {
+ x: 121.544292000276,
+ y: 31.0658699999006,
+ },
+ {
+ x: 121.544733999974,
+ y: 31.0646830000205,
+ },
+ {
+ x: 121.542936999843,
+ y: 31.0638860001388,
+ },
+ {
+ x: 121.544420999929,
+ y: 31.0601060002917,
+ },
+ {
+ x: 121.544126999861,
+ y: 31.0591409998573,
+ },
+ {
+ x: 121.542590000029,
+ y: 31.0598809998083,
+ },
+ {
+ x: 121.542850000327,
+ y: 31.0590649999498,
+ },
+ {
+ x: 121.539882000154,
+ y: 31.0581750002761,
+ },
+ {
+ x: 121.539499999625,
+ y: 31.0574209996794,
+ },
+ {
+ x: 121.539039999996,
+ y: 31.0579259995853,
+ },
+ {
+ x: 121.539013999696,
+ y: 31.0562460003527,
+ },
+ {
+ x: 121.536514000421,
+ y: 31.0547529998511,
+ },
+ {
+ x: 121.538034000369,
+ y: 31.0513090002103,
+ },
+ {
+ x: 121.537192000211,
+ y: 31.048622000405,
+ },
+ {
+ x: 121.538414999952,
+ y: 31.0479459998081,
+ },
+ {
+ x: 121.538953999627,
+ y: 31.0477259995553,
+ },
+ {
+ x: 121.540100000315,
+ y: 31.0497480001701,
+ },
+ {
+ x: 121.541609999802,
+ y: 31.0492840003564,
+ },
+ {
+ x: 121.543535999587,
+ y: 31.0507939998433,
+ },
+ {
+ x: 121.545289000387,
+ y: 31.0501600002838,
+ },
+ {
+ x: 121.546287999691,
+ y: 31.0516459995633,
+ },
+ {
+ x: 121.548449000421,
+ y: 31.0515489995867,
+ },
+ {
+ x: 121.550497000436,
+ y: 31.0530789999959,
+ },
+ {
+ x: 121.551884999693,
+ y: 31.0498939997084,
+ },
+ {
+ x: 121.552787999966,
+ y: 31.0502410004219,
+ },
+ {
+ x: 121.55542600021,
+ y: 31.0484139998063,
+ },
+ {
+ x: 121.554887999681,
+ y: 31.0478879998314,
+ },
+ {
+ x: 121.55569600007,
+ y: 31.0459270002309,
+ },
+ {
+ x: 121.556935999697,
+ y: 31.0473090001103,
+ },
+ {
+ x: 121.557899000039,
+ y: 31.0459040000696,
+ },
+ {
+ x: 121.55522599998,
+ y: 31.0436670003319,
+ },
+ {
+ x: 121.555278999726,
+ y: 31.0325549996136,
+ },
+ {
+ x: 121.556069000184,
+ y: 31.032487000075,
+ },
+ {
+ x: 121.553725000009,
+ y: 31.0314459997331,
+ },
+ {
+ x: 121.554124000422,
+ y: 31.0296319997171,
+ },
+ {
+ x: 121.552952000335,
+ y: 31.0290279997424,
+ },
+ {
+ x: 121.553255999964,
+ y: 31.0284229997217,
+ },
+ {
+ x: 121.554315000237,
+ y: 31.028768000343,
+ },
+ {
+ x: 121.554167999753,
+ y: 31.0268029996587,
+ },
+ {
+ x: 121.551530000409,
+ y: 31.0251859997342,
+ },
+ {
+ x: 121.548552999821,
+ y: 31.0255330004476,
+ },
+ {
+ x: 121.547927999777,
+ y: 31.0237449998319,
+ },
+ {
+ x: 121.549897999793,
+ y: 31.0208820000043,
+ },
+ {
+ x: 121.552275999738,
+ y: 31.0210149998424,
+ },
+ {
+ x: 121.552240999922,
+ y: 31.0225319996521,
+ },
+ {
+ x: 121.554471000237,
+ y: 31.0225359998366,
+ },
+ {
+ x: 121.554775999913,
+ y: 31.0248939997583,
+ },
+ {
+ x: 121.555512999725,
+ y: 31.0248050001507,
+ },
+ {
+ x: 121.556041999838,
+ y: 31.0264090003751,
+ },
+ {
+ x: 121.558134000084,
+ y: 31.0268209995895,
+ },
+ {
+ x: 121.557396000225,
+ y: 31.0250020002422,
+ },
+ {
+ x: 121.559435999872,
+ y: 31.0258329998931,
+ },
+ {
+ x: 121.5600779998,
+ y: 31.0234760000174,
+ },
+ {
+ x: 121.561996000115,
+ y: 31.0234279996026,
+ },
+ {
+ x: 121.563246000203,
+ y: 31.0259580002615,
+ },
+ {
+ x: 121.564843000104,
+ y: 31.0266889997976,
+ },
+ {
+ x: 121.563497000086,
+ y: 31.0269069999582,
+ },
+ {
+ x: 121.564174999876,
+ y: 31.0275790003706,
+ },
+ {
+ x: 121.565858000147,
+ y: 31.0276039997249,
+ },
+ {
+ x: 121.568124000322,
+ y: 31.0289729999041,
+ },
+ {
+ x: 121.567758999678,
+ y: 31.0274719999329,
+ },
+ {
+ x: 121.568731000435,
+ y: 31.0275239996329,
+ },
+ {
+ x: 121.570562000336,
+ y: 31.0232569998108,
+ },
+ {
+ x: 121.570466999552,
+ y: 31.020938999935,
+ },
+ {
+ x: 121.568592000321,
+ y: 31.0206900001434,
+ },
+ {
+ x: 121.566804999751,
+ y: 31.0187250003585,
+ },
+ {
+ x: 121.56685700035,
+ y: 31.0163169999296,
+ },
+ {
+ x: 121.565614999732,
+ y: 31.0147499996128,
+ },
+ {
+ x: 121.561024000257,
+ y: 31.0138030000085,
+ },
+ {
+ x: 121.561284999703,
+ y: 31.0127879999663,
+ },
+ {
+ x: 121.562004999631,
+ y: 31.0127879999663,
+ },
+ {
+ x: 121.561831999747,
+ y: 31.0135429997097,
+ },
+ {
+ x: 121.563314999788,
+ y: 31.0133689997796,
+ },
+ {
+ x: 121.563966000131,
+ y: 31.0123690004291,
+ },
+ {
+ x: 121.565519999848,
+ y: 31.0129039999197,
+ },
+ {
+ x: 121.567254999818,
+ y: 31.007942000423,
+ },
+ {
+ x: 121.566040000446,
+ y: 31.0068690004041,
+ },
+ {
+ x: 121.566500000075,
+ y: 31.0046079995596,
+ },
+ {
+ x: 121.563750000063,
+ y: 31.0031859996342,
+ },
+ {
+ x: 121.566232000307,
+ y: 31.0014850003325,
+ },
+ {
+ x: 121.566266000076,
+ y: 31.0006630001973,
+ },
+ {
+ x: 121.559279999872,
+ y: 30.9980749995617,
+ },
+ {
+ x: 121.551676999994,
+ y: 30.9974379998638,
+ },
+ {
+ x: 121.551990000039,
+ y: 30.9956690001243,
+ },
+ {
+ x: 121.549584999748,
+ y: 30.9958149996626,
+ },
+ {
+ x: 121.548952000235,
+ y: 30.9971190004416,
+ },
+ {
+ x: 121.54830900026,
+ y: 30.9969459996582,
+ },
+ {
+ x: 121.548222999892,
+ y: 30.9954659997562,
+ },
+ {
+ x: 121.54923899998,
+ y: 30.9947989995742,
+ },
+ {
+ x: 121.548544000305,
+ y: 30.9911450001417,
+ },
+ {
+ x: 121.547146999734,
+ y: 30.9902450000068,
+ },
+ {
+ x: 121.545289000387,
+ y: 30.9905939999132,
+ },
+ {
+ x: 121.544100000415,
+ y: 30.9931469998342,
+ },
+ {
+ x: 121.541870000101,
+ y: 30.995321000264,
+ },
+ {
+ x: 121.540854000012,
+ y: 30.9952220001952,
+ },
+ {
+ x: 121.540742000243,
+ y: 30.9962960002603,
+ },
+ {
+ x: 121.540419999783,
+ y: 30.99525199978,
+ },
+ {
+ x: 121.538823999928,
+ y: 30.9955989995942,
+ },
+ {
+ x: 121.539031999627,
+ y: 30.9964700001904,
+ },
+ {
+ x: 121.533955000223,
+ y: 30.9953990002637,
+ },
+ {
+ x: 121.533485000133,
+ y: 30.9969350000503,
+ },
+ {
+ x: 121.530708999821,
+ y: 30.9971389995652,
+ },
+ {
+ x: 121.53021300033,
+ y: 30.9980959996307,
+ },
+ {
+ x: 121.527661999602,
+ y: 30.9970530000959,
+ },
+ {
+ x: 121.526671999813,
+ y: 30.9982119995842,
+ },
+ {
+ x: 121.524293999868,
+ y: 30.9981539996074,
+ },
+ {
+ x: 121.520267000322,
+ y: 31.0013660002408,
+ },
+ {
+ x: 121.518565000075,
+ y: 31.0020169996848,
+ },
+ {
+ x: 121.515978000385,
+ y: 31.0015549999633,
+ },
+ {
+ x: 121.515744000385,
+ y: 31.004763999559,
+ },
+ {
+ x: 121.517774999617,
+ y: 31.0044080002291,
+ },
+ {
+ x: 121.517906000262,
+ y: 31.0051720003876,
+ },
+ {
+ x: 121.516830000105,
+ y: 31.0054220002252,
+ },
+ {
+ x: 121.514971999858,
+ y: 31.0084889995677,
+ },
+ {
+ x: 121.512854000212,
+ y: 31.0087619995667,
+ },
+ {
+ x: 121.512653999982,
+ y: 31.009817999701,
+ },
+ {
+ x: 121.511143999596,
+ y: 31.009654000232,
+ },
+ {
+ x: 121.510188999623,
+ y: 31.0080570003303,
+ },
+ {
+ x: 121.500355000283,
+ y: 31.005704999786,
+ },
+ {
+ x: 121.494408000329,
+ y: 31.0015620002861,
+ },
+ {
+ x: 121.494460000029,
+ y: 31.000355000383,
+ },
+ {
+ x: 121.49178699997,
+ y: 31.0001049996461,
+ },
+ {
+ x: 121.487507000448,
+ y: 31.012147000084,
+ },
+ {
+ x: 121.488444999637,
+ y: 31.0148650004195,
+ },
+ {
+ x: 121.484702999744,
+ y: 31.0170559998346,
+ },
+ {
+ x: 121.471864000323,
+ y: 31.0154060001868,
+ },
+ {
+ x: 121.466924000043,
+ y: 31.0140000001,
+ },
+ {
+ x: 121.461062999558,
+ y: 31.0107890004121,
+ },
+ {
+ x: 121.455403000248,
+ y: 31.0094230003712,
+ },
+ {
+ x: 121.443725999555,
+ y: 31.009461000325,
+ },
+ {
+ x: 121.436216000368,
+ y: 31.0077729998241,
+ },
+ {
+ x: 121.43223900043,
+ y: 31.0060470002689,
+ },
+ {
+ x: 121.426820999689,
+ y: 31.0011500001724,
+ },
+ {
+ x: 121.419353999787,
+ y: 30.9964910002595,
+ },
+ {
+ x: 121.404698000213,
+ y: 30.9921939999532,
+ },
+ {
+ x: 121.386029999985,
+ y: 30.9893839998717,
+ },
+ {
+ x: 121.354123999923,
+ y: 30.9798679999083,
+ },
+ {
+ x: 121.346691999836,
+ y: 30.9780070004228,
+ },
+ {
+ x: 121.341553000271,
+ y: 30.9780610002151,
+ },
+ {
+ x: 121.329876999624,
+ y: 30.9827489996666,
+ },
+ {
+ x: 121.325034000219,
+ y: 30.9833739997104,
+ },
+ {
+ x: 121.322846000043,
+ y: 30.9827230002663,
+ },
+ {
+ x: 121.321282999911,
+ y: 30.9853659998411,
+ },
+ {
+ x: 121.322376999999,
+ y: 30.9920260002997,
+ },
+ {
+ x: 121.322247000299,
+ y: 30.9965349995906,
+ },
+ {
+ x: 121.322967000227,
+ y: 30.997945999908,
+ },
+ {
+ x: 121.325815000262,
+ y: 30.998958999858,
+ },
+ {
+ x: 121.333688000001,
+ y: 31.0082280001222,
+ },
+ {
+ x: 121.335284999903,
+ y: 31.0122880002911,
+ },
+ {
+ x: 121.339686999655,
+ y: 31.0159480000003,
+ },
+ {
+ x: 121.338237000237,
+ y: 31.016835000435,
+ },
+ {
+ x: 121.336065999946,
+ y: 31.0154420000483,
+ },
+ {
+ x: 121.328530999606,
+ y: 31.0153720004175,
+ },
+ {
+ x: 121.328392000391,
+ y: 31.0167310001356,
+ },
+ {
+ x: 121.329182999996,
+ y: 31.0176900002933,
+ },
+ {
+ x: 121.328627000436,
+ y: 31.0232440001106,
+ },
+ {
+ x: 121.329217999811,
+ y: 31.0256110004474,
+ },
+ {
+ x: 121.328713999951,
+ y: 31.0281440003454,
+ },
+ {
+ x: 121.32935599988,
+ y: 31.0289450004115,
+ },
+ {
+ x: 121.32874799972,
+ y: 31.03157400024,
+ },
+ {
+ x: 121.32947800011,
+ y: 31.0339429997697,
+ },
+ {
+ x: 121.328836000181,
+ y: 31.0361340000841,
+ },
+ {
+ x: 121.329131000295,
+ y: 31.0427090002202,
+ },
+ {
+ x: 121.329886000039,
+ y: 31.04326499978,
+ },
+ {
+ x: 121.330796999782,
+ y: 31.0501489997766,
+ },
+ {
+ x: 121.330527999967,
+ y: 31.0600359997616,
+ },
+ {
+ x: 121.330789000312,
+ y: 31.0624389999599,
+ },
+ {
+ x: 121.33163899994,
+ y: 31.0632870003948,
+ },
+ {
+ x: 121.331179000311,
+ y: 31.0649440003654,
+ },
+ {
+ x: 121.333540000371,
+ y: 31.0631700003952,
+ },
+ {
+ x: 121.336898999689,
+ y: 31.06474800032,
+ },
+ {
+ x: 121.338886999635,
+ y: 31.0611230004262,
+ },
+ {
+ x: 121.348853999712,
+ y: 31.0632569999107,
+ },
+ {
+ x: 121.353602000132,
+ y: 31.0660049998309,
+ },
+ {
+ x: 121.352683000021,
+ y: 31.0687240002125,
+ },
+ {
+ x: 121.359141000157,
+ y: 31.0703030001833,
+ },
+ {
+ x: 121.358820999789,
+ y: 31.071323999603,
+ },
+ {
+ x: 121.359818999947,
+ y: 31.0718240001775,
+ },
+ {
+ x: 121.357509999587,
+ y: 31.0745520000748,
+ },
+ {
+ x: 121.359732000432,
+ y: 31.0756520004395,
+ },
+ {
+ x: 121.359142000203,
+ y: 31.0771710003414,
+ },
+ {
+ x: 121.360757000036,
+ y: 31.0778720002926,
+ },
+ {
+ x: 121.360871999943,
+ y: 31.0798390001698,
+ },
+ {
+ x: 121.364189000022,
+ y: 31.0810599998192,
+ },
+ {
+ x: 121.366009000315,
+ y: 31.0803029999835,
+ },
+ {
+ x: 121.367404999941,
+ y: 31.0818060000469,
+ },
+ {
+ x: 121.366364999645,
+ y: 31.0852020001722,
+ },
+ {
+ x: 121.362363000352,
+ y: 31.0932079997494,
+ },
+ {
+ x: 121.361259999849,
+ y: 31.0937660003007,
+ },
+ {
+ x: 121.361312000448,
+ y: 31.0957229997167,
+ },
+ {
+ x: 121.358152000415,
+ y: 31.1017020002471,
+ },
+ {
+ x: 121.354488999668,
+ y: 31.1008729997891,
+ },
+ {
+ x: 121.353793999993,
+ y: 31.1027320000818,
+ },
+ {
+ x: 121.346583000205,
+ y: 31.1013300001794,
+ },
+ {
+ x: 121.343958999708,
+ y: 31.1086119996441,
+ },
+ {
+ x: 121.347092000296,
+ y: 31.1096800003318,
+ },
+ {
+ x: 121.347638000294,
+ y: 31.1084349995756,
+ },
+ {
+ x: 121.348644999967,
+ y: 31.1085519995752,
+ },
+ {
+ x: 121.348697999713,
+ y: 31.1097330000779,
+ },
+ {
+ x: 121.35241300016,
+ y: 31.1124609999752,
+ },
+ {
+ x: 121.352284999653,
+ y: 31.1131080001342,
+ },
+ {
+ x: 121.351436000071,
+ y: 31.1144730001289,
+ },
+ {
+ x: 121.349180000357,
+ y: 31.11345199981,
+ },
+ {
+ x: 121.346080000392,
+ y: 31.1174950000942,
+ },
+ {
+ x: 121.348471000037,
+ y: 31.1195450002016,
+ },
+ {
+ x: 121.347832000247,
+ y: 31.1204430002443,
+ },
+ {
+ x: 121.345002000142,
+ y: 31.1196959999705,
+ },
+ {
+ x: 121.344267000422,
+ y: 31.1203230001064,
+ },
+ {
+ x: 121.342172000038,
+ y: 31.1236020002322,
+ },
+ {
+ x: 121.342964999735,
+ y: 31.1239160003232,
+ },
+ {
+ x: 121.340312999745,
+ y: 31.1277120000088,
+ },
+ {
+ x: 121.341433000133,
+ y: 31.1281490003761,
+ },
+ {
+ x: 121.339437999864,
+ y: 31.1313990000639,
+ },
+ {
+ x: 121.340107000138,
+ y: 31.132281000268,
+ },
+ {
+ x: 121.336520000198,
+ y: 31.1379360002463,
+ },
+ {
+ x: 121.334762000066,
+ y: 31.139191999711,
+ },
+ {
+ x: 121.332542000213,
+ y: 31.1394580002865,
+ },
+ {
+ x: 121.332216999615,
+ y: 31.1409289997736,
+ },
+ {
+ x: 121.333601999633,
+ y: 31.1411079999343,
+ },
+ {
+ x: 121.334230999861,
+ y: 31.1422779999298,
+ },
+ {
+ x: 121.332169000099,
+ y: 31.145500000125,
+ },
+ {
+ x: 121.330830000404,
+ y: 31.1459249999389,
+ },
+ {
+ x: 121.330025000154,
+ y: 31.1482880000912,
+ },
+ {
+ x: 121.329181999949,
+ y: 31.1479390001847,
+ },
+ {
+ x: 121.329338999995,
+ y: 31.1505049998059,
+ },
+ {
+ x: 121.326743999936,
+ y: 31.1517280004469,
+ },
+ {
+ x: 121.326986000304,
+ y: 31.1540050002307,
+ },
+ {
+ x: 121.325527999618,
+ y: 31.1554149996026,
+ },
+ {
+ x: 121.325041999689,
+ y: 31.157594000263,
+ },
+ {
+ x: 121.324243999761,
+ y: 31.1586270002359,
+ },
+ {
+ x: 121.322688999997,
+ y: 31.1588180000507,
+ },
+ {
+ x: 121.320529000213,
+ y: 31.1634939998482,
+ },
+ {
+ x: 121.317576999879,
+ y: 31.1665199999981,
+ },
+ {
+ x: 121.317377999695,
+ y: 31.1679830000155,
+ },
+ {
+ x: 121.313965999731,
+ y: 31.1723429996298,
+ },
+ {
+ x: 121.312456000244,
+ y: 31.1777600003238,
+ },
+ {
+ x: 121.308827000166,
+ y: 31.1831960000954,
+ },
+ {
+ x: 121.307741999594,
+ y: 31.1837090003701,
+ },
+ {
+ x: 121.306180000407,
+ y: 31.187071999873,
+ },
+ {
+ x: 121.304149000276,
+ y: 31.1892460003027,
+ },
+ {
+ x: 121.304296999907,
+ y: 31.1901770000686,
+ },
+ {
+ x: 121.303158999588,
+ y: 31.1906789998361,
+ },
+ {
+ x: 121.301249999688,
+ y: 31.1936110001476,
+ },
+ {
+ x: 121.299340999787,
+ y: 31.1946310004204,
+ },
+ {
+ x: 121.299321999811,
+ y: 31.1959740002999,
+ },
+ {
+ x: 121.296988000096,
+ y: 31.1978670003618,
+ },
+ {
+ x: 121.297178999911,
+ y: 31.1988519999199,
+ },
+ {
+ x: 121.295877000123,
+ y: 31.1991619998265,
+ },
+ {
+ x: 121.295989999939,
+ y: 31.2001789999609,
+ },
+ {
+ x: 121.294800999966,
+ y: 31.2005079998444,
+ },
+ {
+ x: 121.293872000293,
+ y: 31.2026240002974,
+ },
+ {
+ x: 121.290183000145,
+ y: 31.2051659997111,
+ },
+ {
+ x: 121.289306000172,
+ y: 31.2041590000379,
+ },
+ {
+ x: 121.287969999716,
+ y: 31.2045219996906,
+ },
+ {
+ x: 121.287891999716,
+ y: 31.2030439998807,
+ },
+ {
+ x: 121.286651000044,
+ y: 31.2015070000481,
+ },
+ {
+ x: 121.281381999879,
+ y: 31.1973499999026,
+ },
+ {
+ x: 121.279585999794,
+ y: 31.1964089996757,
+ },
+ {
+ x: 121.272946000258,
+ y: 31.1955980000477,
+ },
+ {
+ x: 121.262287999791,
+ y: 31.2052869998952,
+ },
+ {
+ x: 121.260352999591,
+ y: 31.2053429997796,
+ },
+ {
+ x: 121.25862599999,
+ y: 31.2077270000011,
+ },
+ {
+ x: 121.260249000191,
+ y: 31.208758999928,
+ },
+ {
+ x: 121.259416000448,
+ y: 31.2109450000118,
+ },
+ {
+ x: 121.254971999658,
+ y: 31.2148039999047,
+ },
+ {
+ x: 121.256785999674,
+ y: 31.2171080000342,
+ },
+ {
+ x: 121.255249999888,
+ y: 31.2201730001839,
+ },
+ {
+ x: 121.254684999913,
+ y: 31.2200000002998,
+ },
+ {
+ x: 121.253019000427,
+ y: 31.2222349999453,
+ },
+ {
+ x: 121.254042999985,
+ y: 31.2238780001696,
+ },
+ {
+ x: 121.252160000384,
+ y: 31.2283470003139,
+ },
+ {
+ x: 121.253583000355,
+ y: 31.2288890001273,
+ },
+ {
+ x: 121.252732999828,
+ y: 31.2327249998589,
+ },
+ {
+ x: 121.24945199961,
+ y: 31.235045999873,
+ },
+ {
+ x: 121.249634999955,
+ y: 31.2366110000976,
+ },
+ {
+ x: 121.248366999937,
+ y: 31.2389849998579,
+ },
+ {
+ x: 121.246648999852,
+ y: 31.2402159999685,
+ },
+ {
+ x: 121.245269000064,
+ y: 31.2385539997673,
+ },
+ {
+ x: 121.244366999837,
+ y: 31.2393389999949,
+ },
+ {
+ x: 121.24349099991,
+ y: 31.2429360003961,
+ },
+ {
+ x: 121.236964000189,
+ y: 31.2422399997762,
+ },
+ {
+ x: 121.235505000355,
+ y: 31.2430819999344,
+ },
+ {
+ x: 121.236997999958,
+ y: 31.2447599999741,
+ },
+ {
+ x: 121.236201000076,
+ y: 31.245823999578,
+ },
+ {
+ x: 121.236858999843,
+ y: 31.2481230003762,
+ },
+ {
+ x: 121.237562999933,
+ y: 31.2482439996609,
+ },
+ {
+ x: 121.237248999842,
+ y: 31.2493630000025,
+ },
+ {
+ x: 121.241485000033,
+ y: 31.2508389997201,
+ },
+ {
+ x: 121.24253499989,
+ y: 31.2529869998502,
+ },
+ {
+ x: 121.243784999978,
+ y: 31.2532369996878,
+ },
+ {
+ x: 121.242144999892,
+ y: 31.2535630003322,
+ },
+ {
+ x: 121.242881999705,
+ y: 31.2552940001181,
+ },
+ {
+ x: 121.246536000036,
+ y: 31.2585100000366,
+ },
+ {
+ x: 121.24927000021,
+ y: 31.2597010001011,
+ },
+ {
+ x: 121.249973000254,
+ y: 31.2616370003473,
+ },
+ {
+ x: 121.25145700034,
+ y: 31.2614519999099,
+ },
+ {
+ x: 121.251681999924,
+ y: 31.2606400002359,
+ },
+ ],
+ ],
+ province: "涓婃捣甯�",
+ sheng_code: "310000",
+ city: "涓婃捣鍩庡尯",
+ city_code: "310100",
+ district: "闂佃鍖�",
+ adcode: "310112",
+ },
+ {
+ OGR_FID: 15,
+ SHAPE: [
+ [
+ {
+ x: 121.45667000022,
+ y: 31.2136349999553,
+ },
+ {
+ x: 121.457712999755,
+ y: 31.2050990002188,
+ },
+ {
+ x: 121.462326000245,
+ y: 31.2061989996841,
+ },
+ {
+ x: 121.465065999796,
+ y: 31.1983530002908,
+ },
+ {
+ x: 121.465814000116,
+ y: 31.19325199978,
+ },
+ {
+ x: 121.469946000008,
+ y: 31.1921839999916,
+ },
+ {
+ x: 121.471473000279,
+ y: 31.1898569997009,
+ },
+ {
+ x: 121.464198000238,
+ y: 31.1860690003841,
+ },
+ {
+ x: 121.461706999578,
+ y: 31.1830349998654,
+ },
+ {
+ x: 121.460360999561,
+ y: 31.1799709997619,
+ },
+ {
+ x: 121.460360999561,
+ y: 31.1773520003945,
+ },
+ {
+ x: 121.463624999894,
+ y: 31.1690529998961,
+ },
+ {
+ x: 121.464770999682,
+ y: 31.1622190004066,
+ },
+ {
+ x: 121.463815999709,
+ y: 31.1600500002074,
+ },
+ {
+ x: 121.452893999658,
+ y: 31.1483939995834,
+ },
+ {
+ x: 121.452894999705,
+ y: 31.1441800004067,
+ },
+ {
+ x: 121.454421999975,
+ y: 31.141307000118,
+ },
+ {
+ x: 121.45787800017,
+ y: 31.1364239997678,
+ },
+ {
+ x: 121.464198000238,
+ y: 31.1298479995855,
+ },
+ {
+ x: 121.465153000211,
+ y: 31.1268469996893,
+ },
+ {
+ x: 121.464770999682,
+ y: 31.1207180003355,
+ },
+ {
+ x: 121.458694000028,
+ y: 31.1105609995905,
+ },
+ {
+ x: 121.458311000352,
+ y: 31.1039359998466,
+ },
+ {
+ x: 121.450854000012,
+ y: 31.1027190003816,
+ },
+ {
+ x: 121.448049000161,
+ y: 31.1031870003798,
+ },
+ {
+ x: 121.447302999934,
+ y: 31.1058069997932,
+ },
+ {
+ x: 121.446104000399,
+ y: 31.1057689998395,
+ },
+ {
+ x: 121.445956999916,
+ y: 31.1069019999274,
+ },
+ {
+ x: 121.444003999785,
+ y: 31.1066770003433,
+ },
+ {
+ x: 121.443473999625,
+ y: 31.1078630001774,
+ },
+ {
+ x: 121.441685999909,
+ y: 31.1076809998783,
+ },
+ {
+ x: 121.441563999679,
+ y: 31.1085080002441,
+ },
+ {
+ x: 121.443082999581,
+ y: 31.1087149998974,
+ },
+ {
+ x: 121.443040000296,
+ y: 31.1093670002869,
+ },
+ {
+ x: 121.447016000188,
+ y: 31.1095669996174,
+ },
+ {
+ x: 121.447016000188,
+ y: 31.110462000421,
+ },
+ {
+ x: 121.447788999862,
+ y: 31.1105439997059,
+ },
+ {
+ x: 121.445575000286,
+ y: 31.1147619999664,
+ },
+ {
+ x: 121.447085999819,
+ y: 31.1169589996582,
+ },
+ {
+ x: 121.445075999758,
+ y: 31.117210999588,
+ },
+ {
+ x: 121.442043000184,
+ y: 31.1161880000762,
+ },
+ {
+ x: 121.441346999564,
+ y: 31.1173580000717,
+ },
+ {
+ x: 121.436944999812,
+ y: 31.1144999995753,
+ },
+ {
+ x: 121.434809000235,
+ y: 31.1139920004305,
+ },
+ {
+ x: 121.431431000041,
+ y: 31.1151459996882,
+ },
+ {
+ x: 121.434328999684,
+ y: 31.1215849998479,
+ },
+ {
+ x: 121.431892999762,
+ y: 31.1309629997427,
+ },
+ {
+ x: 121.416889000327,
+ y: 31.1290270003958,
+ },
+ {
+ x: 121.408310000406,
+ y: 31.1405840000516,
+ },
+ {
+ x: 121.40030399993,
+ y: 31.1585640000286,
+ },
+ {
+ x: 121.396329000083,
+ y: 31.1570870002649,
+ },
+ {
+ x: 121.396804999551,
+ y: 31.1556470004088,
+ },
+ {
+ x: 121.392293000122,
+ y: 31.1545589996981,
+ },
+ {
+ x: 121.391255999965,
+ y: 31.1577549995936,
+ },
+ {
+ x: 121.39992999977,
+ y: 31.1594610000252,
+ },
+ {
+ x: 121.39799499957,
+ y: 31.1640999999151,
+ },
+ {
+ x: 121.389927999877,
+ y: 31.1614770003633,
+ },
+ {
+ x: 121.386863999774,
+ y: 31.1705590000979,
+ },
+ {
+ x: 121.389408000179,
+ y: 31.1713590001178,
+ },
+ {
+ x: 121.388052999746,
+ y: 31.1749510002885,
+ },
+ {
+ x: 121.390776000312,
+ y: 31.1764560004441,
+ },
+ {
+ x: 121.389802000362,
+ y: 31.1797409999472,
+ },
+ {
+ x: 121.393428000302,
+ y: 31.1800889998075,
+ },
+ {
+ x: 121.393044999727,
+ y: 31.1814329997332,
+ },
+ {
+ x: 121.393704999586,
+ y: 31.1817639997089,
+ },
+ {
+ x: 121.395450000018,
+ y: 31.1806680004279,
+ },
+ {
+ x: 121.410514999568,
+ y: 31.1852569998107,
+ },
+ {
+ x: 121.411131000096,
+ y: 31.1876769998937,
+ },
+ {
+ x: 121.410611000397,
+ y: 31.189220000003,
+ },
+ {
+ x: 121.40890900015,
+ y: 31.1886950000742,
+ },
+ {
+ x: 121.408264000084,
+ y: 31.1895869998402,
+ },
+ {
+ x: 121.407924999739,
+ y: 31.1929739995505,
+ },
+ {
+ x: 121.410272000053,
+ y: 31.1928680000582,
+ },
+ {
+ x: 121.41154800044,
+ y: 31.1942859997991,
+ },
+ {
+ x: 121.412269000414,
+ y: 31.1942590003526,
+ },
+ {
+ x: 121.412009000115,
+ y: 31.1928160003582,
+ },
+ {
+ x: 121.416114999708,
+ y: 31.1929409998273,
+ },
+ {
+ x: 121.417531000256,
+ y: 31.194527000121,
+ },
+ {
+ x: 121.417001000096,
+ y: 31.1972129998801,
+ },
+ {
+ x: 121.419159999834,
+ y: 31.1991720002877,
+ },
+ {
+ x: 121.433312000448,
+ y: 31.2058479996855,
+ },
+ {
+ x: 121.430601000436,
+ y: 31.2129899998886,
+ },
+ {
+ x: 121.433218999757,
+ y: 31.2136570000706,
+ },
+ {
+ x: 121.434851000373,
+ y: 31.2163560004291,
+ },
+ {
+ x: 121.444252999576,
+ y: 31.2181440001455,
+ },
+ {
+ x: 121.453114999957,
+ y: 31.2221010000612,
+ },
+ {
+ x: 121.45667000022,
+ y: 31.2136349999553,
+ },
+ ],
+ ],
+ province: "涓婃捣甯�",
+ sheng_code: "310000",
+ city: "涓婃捣鍩庡尯",
+ city_code: "310100",
+ district: "寰愭眹鍖�",
+ adcode: "310104",
+ },
+ {
+ OGR_FID: 16,
+ SHAPE: [
+ [
+ {
+ x: 121.085518000355,
+ y: 31.2937180003855,
+ },
+ {
+ x: 121.087574999886,
+ y: 31.2910190000269,
+ },
+ {
+ x: 121.088964000089,
+ y: 31.2916929996323,
+ },
+ {
+ x: 121.088469999791,
+ y: 31.2900250000538,
+ },
+ {
+ x: 121.089640999832,
+ y: 31.2901319995922,
+ },
+ {
+ x: 121.090779000151,
+ y: 31.2888190001968,
+ },
+ {
+ x: 121.093740000001,
+ y: 31.2806609999053,
+ },
+ {
+ x: 121.093436000371,
+ y: 31.279198999934,
+ },
+ {
+ x: 121.094182999746,
+ y: 31.2780710000766,
+ },
+ {
+ x: 121.098558000052,
+ y: 31.2759280001771,
+ },
+ {
+ x: 121.100825000274,
+ y: 31.2754729998791,
+ },
+ {
+ x: 121.101190000019,
+ y: 31.2768610000352,
+ },
+ {
+ x: 121.099227000326,
+ y: 31.2765720001977,
+ },
+ {
+ x: 121.099201000026,
+ y: 31.2771479997804,
+ },
+ {
+ x: 121.102049000061,
+ y: 31.2785279995676,
+ },
+ {
+ x: 121.110376000052,
+ y: 31.2870929997422,
+ },
+ {
+ x: 121.113100999811,
+ y: 31.2875130002248,
+ },
+ {
+ x: 121.114674000405,
+ y: 31.2869450001117,
+ },
+ {
+ x: 121.116487000375,
+ y: 31.2879770000386,
+ },
+ {
+ x: 121.120407000383,
+ y: 31.2862399999761,
+ },
+ {
+ x: 121.119718000086,
+ y: 31.2849370001425,
+ },
+ {
+ x: 121.122604000075,
+ y: 31.2830419999884,
+ },
+ {
+ x: 121.126450000267,
+ y: 31.2819469998542,
+ },
+ {
+ x: 121.127078999596,
+ y: 31.2832050003105,
+ },
+ {
+ x: 121.129589000232,
+ y: 31.2821019998075,
+ },
+ {
+ x: 121.12909099975,
+ y: 31.2807319995821,
+ },
+ {
+ x: 121.130575999883,
+ y: 31.2802079996995,
+ },
+ {
+ x: 121.131266000226,
+ y: 31.281487000225,
+ },
+ {
+ x: 121.133440999802,
+ y: 31.280597999698,
+ },
+ {
+ x: 121.133008999666,
+ y: 31.2794449995871,
+ },
+ {
+ x: 121.135112000419,
+ y: 31.278784999728,
+ },
+ {
+ x: 121.136401999653,
+ y: 31.2785279995676,
+ },
+ {
+ x: 121.136814999812,
+ y: 31.2796279999323,
+ },
+ {
+ x: 121.138297999853,
+ y: 31.2795190003017,
+ },
+ {
+ x: 121.138413999806,
+ y: 31.277325999895,
+ },
+ {
+ x: 121.145823999778,
+ y: 31.2773079999643,
+ },
+ {
+ x: 121.149174999627,
+ y: 31.2785180000058,
+ },
+ {
+ x: 121.149557000155,
+ y: 31.2747980002276,
+ },
+ {
+ x: 121.14721299998,
+ y: 31.2695069999481,
+ },
+ {
+ x: 121.148219999653,
+ y: 31.2693639996489,
+ },
+ {
+ x: 121.148315999584,
+ y: 31.2686000003898,
+ },
+ {
+ x: 121.150981000173,
+ y: 31.2680290001383,
+ },
+ {
+ x: 121.152846999889,
+ y: 31.2723679996835,
+ },
+ {
+ x: 121.154678999836,
+ y: 31.2718829998007,
+ },
+ {
+ x: 121.156502000267,
+ y: 31.2695170004093,
+ },
+ {
+ x: 121.158072999869,
+ y: 31.2710659998961,
+ },
+ {
+ x: 121.163125999965,
+ y: 31.2658450001467,
+ },
+ {
+ x: 121.163507999595,
+ y: 31.2615320000019,
+ },
+ {
+ x: 121.16585199977,
+ y: 31.261037999704,
+ },
+ {
+ x: 121.164905000166,
+ y: 31.2594599997792,
+ },
+ {
+ x: 121.163958999708,
+ y: 31.2595060001019,
+ },
+ {
+ x: 121.164409999822,
+ y: 31.258108000384,
+ },
+ {
+ x: 121.165495000394,
+ y: 31.2583770001984,
+ },
+ {
+ x: 121.166893000112,
+ y: 31.2568459997431,
+ },
+ {
+ x: 121.169731999732,
+ y: 31.2587830000355,
+ },
+ {
+ x: 121.17225700016,
+ y: 31.256530999606,
+ },
+ {
+ x: 121.173333000318,
+ y: 31.2581509996689,
+ },
+ {
+ x: 121.174279999922,
+ y: 31.2577910001546,
+ },
+ {
+ x: 121.17351699981,
+ y: 31.2566190000668,
+ },
+ {
+ x: 121.174505999552,
+ y: 31.2566190000668,
+ },
+ {
+ x: 121.174826999966,
+ y: 31.2553560002792,
+ },
+ {
+ x: 121.177032000027,
+ y: 31.2563480001601,
+ },
+ {
+ x: 121.179739999901,
+ y: 31.2540959997307,
+ },
+ {
+ x: 121.181944999962,
+ y: 31.2542759999375,
+ },
+ {
+ x: 121.184608999606,
+ y: 31.2569360002962,
+ },
+ {
+ x: 121.188532999798,
+ y: 31.2555819999094,
+ },
+ {
+ x: 121.188889000027,
+ y: 31.2534169998947,
+ },
+ {
+ x: 121.191779000201,
+ y: 31.2531910002645,
+ },
+ {
+ x: 121.191596999902,
+ y: 31.2553560002792,
+ },
+ {
+ x: 121.190693999628,
+ y: 31.25585199977,
+ },
+ {
+ x: 121.192447000429,
+ y: 31.2567099997667,
+ },
+ {
+ x: 121.192855000358,
+ y: 31.2556719995632,
+ },
+ {
+ x: 121.195380999933,
+ y: 31.2572040000646,
+ },
+ {
+ x: 121.196144000046,
+ y: 31.2567099997667,
+ },
+ {
+ x: 121.197906000362,
+ y: 31.2580159997386,
+ },
+ {
+ x: 121.198669999621,
+ y: 31.2577900001085,
+ },
+ {
+ x: 121.198401999852,
+ y: 31.2590980001726,
+ },
+ {
+ x: 121.201907999655,
+ y: 31.2620349998155,
+ },
+ {
+ x: 121.204017999831,
+ y: 31.259467000102,
+ },
+ {
+ x: 121.205362999803,
+ y: 31.2599960002153,
+ },
+ {
+ x: 121.204815999759,
+ y: 31.2611500003723,
+ },
+ {
+ x: 121.2059610004,
+ y: 31.2632880000412,
+ },
+ {
+ x: 121.207254999818,
+ y: 31.262020000023,
+ },
+ {
+ x: 121.208139000115,
+ y: 31.2628579999968,
+ },
+ {
+ x: 121.208850999674,
+ y: 31.2624520001597,
+ },
+ {
+ x: 121.208165999561,
+ y: 31.2618189997471,
+ },
+ {
+ x: 121.209589999579,
+ y: 31.2588500004272,
+ },
+ {
+ x: 121.209737000063,
+ y: 31.2563409998373,
+ },
+ {
+ x: 121.212879000166,
+ y: 31.2574040002945,
+ },
+ {
+ x: 121.213138999565,
+ y: 31.2554269999561,
+ },
+ {
+ x: 121.214101999907,
+ y: 31.2552230004412,
+ },
+ {
+ x: 121.214119999838,
+ y: 31.2577089999704,
+ },
+ {
+ x: 121.216836000081,
+ y: 31.2582909998299,
+ },
+ {
+ x: 121.215769000339,
+ y: 31.2594070000331,
+ },
+ {
+ x: 121.219422999772,
+ y: 31.2610290001883,
+ },
+ {
+ x: 121.219092999842,
+ y: 31.2625270000211,
+ },
+ {
+ x: 121.220230000114,
+ y: 31.263843999601,
+ },
+ {
+ x: 121.220560000044,
+ y: 31.263032999973,
+ },
+ {
+ x: 121.22476899989,
+ y: 31.2637180000857,
+ },
+ {
+ x: 121.224647999705,
+ y: 31.264704999736,
+ },
+ {
+ x: 121.230749999613,
+ y: 31.2647029996438,
+ },
+ {
+ x: 121.233265999626,
+ y: 31.2640960004301,
+ },
+ {
+ x: 121.237822000185,
+ y: 31.2613780000947,
+ },
+ {
+ x: 121.242153000261,
+ y: 31.2618050000008,
+ },
+ {
+ x: 121.242334999661,
+ y: 31.2604569998907,
+ },
+ {
+ x: 121.245121000434,
+ y: 31.2609520002347,
+ },
+ {
+ x: 121.246761999667,
+ y: 31.260410999568,
+ },
+ {
+ x: 121.246553999967,
+ y: 31.2619840001615,
+ },
+ {
+ x: 121.247541999664,
+ y: 31.2619599999541,
+ },
+ {
+ x: 121.247584999848,
+ y: 31.2607709999817,
+ },
+ {
+ x: 121.249756000139,
+ y: 31.2606980002126,
+ },
+ {
+ x: 121.24927000021,
+ y: 31.2597010001011,
+ },
+ {
+ x: 121.246536000036,
+ y: 31.2585100000366,
+ },
+ {
+ x: 121.242881999705,
+ y: 31.2552940001181,
+ },
+ {
+ x: 121.242144999892,
+ y: 31.2535630003322,
+ },
+ {
+ x: 121.243784999978,
+ y: 31.2532369996878,
+ },
+ {
+ x: 121.24253499989,
+ y: 31.2529869998502,
+ },
+ {
+ x: 121.241485000033,
+ y: 31.2508389997201,
+ },
+ {
+ x: 121.237248999842,
+ y: 31.2493630000025,
+ },
+ {
+ x: 121.237562999933,
+ y: 31.2482439996609,
+ },
+ {
+ x: 121.236858999843,
+ y: 31.2481230003762,
+ },
+ {
+ x: 121.236201000076,
+ y: 31.245823999578,
+ },
+ {
+ x: 121.236997999958,
+ y: 31.2447599999741,
+ },
+ {
+ x: 121.235505000355,
+ y: 31.2430819999344,
+ },
+ {
+ x: 121.236964000189,
+ y: 31.2422399997762,
+ },
+ {
+ x: 121.24349099991,
+ y: 31.2429360003961,
+ },
+ {
+ x: 121.244366999837,
+ y: 31.2393389999949,
+ },
+ {
+ x: 121.245269000064,
+ y: 31.2385539997673,
+ },
+ {
+ x: 121.246648999852,
+ y: 31.2402159999685,
+ },
+ {
+ x: 121.248366999937,
+ y: 31.2389849998579,
+ },
+ {
+ x: 121.249634999955,
+ y: 31.2366110000976,
+ },
+ {
+ x: 121.24945199961,
+ y: 31.235045999873,
+ },
+ {
+ x: 121.252732999828,
+ y: 31.2327249998589,
+ },
+ {
+ x: 121.253583000355,
+ y: 31.2288890001273,
+ },
+ {
+ x: 121.252160000384,
+ y: 31.2283470003139,
+ },
+ {
+ x: 121.254042999985,
+ y: 31.2238780001696,
+ },
+ {
+ x: 121.253019000427,
+ y: 31.2222349999453,
+ },
+ {
+ x: 121.254684999913,
+ y: 31.2200000002998,
+ },
+ {
+ x: 121.255249999888,
+ y: 31.2201730001839,
+ },
+ {
+ x: 121.256785999674,
+ y: 31.2171080000342,
+ },
+ {
+ x: 121.254971999658,
+ y: 31.2148039999047,
+ },
+ {
+ x: 121.259416000448,
+ y: 31.2109450000118,
+ },
+ {
+ x: 121.260249000191,
+ y: 31.208758999928,
+ },
+ {
+ x: 121.25862599999,
+ y: 31.2077270000011,
+ },
+ {
+ x: 121.260352999591,
+ y: 31.2053429997796,
+ },
+ {
+ x: 121.262287999791,
+ y: 31.2052869998952,
+ },
+ {
+ x: 121.272946000258,
+ y: 31.1955980000477,
+ },
+ {
+ x: 121.279585999794,
+ y: 31.1964089996757,
+ },
+ {
+ x: 121.281381999879,
+ y: 31.1973499999026,
+ },
+ {
+ x: 121.286651000044,
+ y: 31.2015070000481,
+ },
+ {
+ x: 121.287891999716,
+ y: 31.2030439998807,
+ },
+ {
+ x: 121.287969999716,
+ y: 31.2045219996906,
+ },
+ {
+ x: 121.289306000172,
+ y: 31.2041590000379,
+ },
+ {
+ x: 121.290183000145,
+ y: 31.2051659997111,
+ },
+ {
+ x: 121.29286499972,
+ y: 31.2035400002708,
+ },
+ {
+ x: 121.294800999966,
+ y: 31.2005079998444,
+ },
+ {
+ x: 121.295989999939,
+ y: 31.2001789999609,
+ },
+ {
+ x: 121.295877000123,
+ y: 31.1991619998265,
+ },
+ {
+ x: 121.297178999911,
+ y: 31.1988519999199,
+ },
+ {
+ x: 121.296988000096,
+ y: 31.1978670003618,
+ },
+ {
+ x: 121.299321999811,
+ y: 31.1959740002999,
+ },
+ {
+ x: 121.299340999787,
+ y: 31.1946310004204,
+ },
+ {
+ x: 121.301249999688,
+ y: 31.1936110001476,
+ },
+ {
+ x: 121.303158999588,
+ y: 31.1906789998361,
+ },
+ {
+ x: 121.304296999907,
+ y: 31.1901770000686,
+ },
+ {
+ x: 121.304149000276,
+ y: 31.1892460003027,
+ },
+ {
+ x: 121.306180000407,
+ y: 31.187071999873,
+ },
+ {
+ x: 121.307741999594,
+ y: 31.1837090003701,
+ },
+ {
+ x: 121.308827000166,
+ y: 31.1831960000954,
+ },
+ {
+ x: 121.312456000244,
+ y: 31.1777600003238,
+ },
+ {
+ x: 121.313965999731,
+ y: 31.1723429996298,
+ },
+ {
+ x: 121.317377999695,
+ y: 31.1679830000155,
+ },
+ {
+ x: 121.317784999578,
+ y: 31.1662120001837,
+ },
+ {
+ x: 121.319304000379,
+ y: 31.1651960000954,
+ },
+ {
+ x: 121.317966999877,
+ y: 31.1643669996374,
+ },
+ {
+ x: 121.316279000276,
+ y: 31.1602939997683,
+ },
+ {
+ x: 121.314937999589,
+ y: 31.1597629995628,
+ },
+ {
+ x: 121.313547000194,
+ y: 31.1595440002554,
+ },
+ {
+ x: 121.311710000017,
+ y: 31.162173000084,
+ },
+ {
+ x: 121.294143000199,
+ y: 31.1567219996206,
+ },
+ {
+ x: 121.285502000117,
+ y: 31.1549050003655,
+ },
+ {
+ x: 121.285957999562,
+ y: 31.1542869997453,
+ },
+ {
+ x: 121.282676000197,
+ y: 31.1543469998143,
+ },
+ {
+ x: 121.280305999722,
+ y: 31.155305999972,
+ },
+ {
+ x: 121.280393000137,
+ y: 31.1546769997438,
+ },
+ {
+ x: 121.27868300042,
+ y: 31.1541980001376,
+ },
+ {
+ x: 121.279378000095,
+ y: 31.1528799996124,
+ },
+ {
+ x: 121.278622000305,
+ y: 31.1526089997056,
+ },
+ {
+ x: 121.275836999578,
+ y: 31.1525790001208,
+ },
+ {
+ x: 121.273830999701,
+ y: 31.1548879995815,
+ },
+ {
+ x: 121.273319000372,
+ y: 31.1543180002756,
+ },
+ {
+ x: 121.274282999861,
+ y: 31.1503030003832,
+ },
+ {
+ x: 121.272989999589,
+ y: 31.1497320001317,
+ },
+ {
+ x: 121.273354000187,
+ y: 31.1485339997444,
+ },
+ {
+ x: 121.2719740004,
+ y: 31.1479050004155,
+ },
+ {
+ x: 121.27257400019,
+ y: 31.146228000422,
+ },
+ {
+ x: 121.274846999789,
+ y: 31.1477539997474,
+ },
+ {
+ x: 121.277338000448,
+ y: 31.1440679997385,
+ },
+ {
+ x: 121.279733000278,
+ y: 31.1446660003357,
+ },
+ {
+ x: 121.283032000426,
+ y: 31.1419989996542,
+ },
+ {
+ x: 121.27654799999,
+ y: 31.135300000095,
+ },
+ {
+ x: 121.261307999565,
+ y: 31.1384580000367,
+ },
+ {
+ x: 121.261151000418,
+ y: 31.1368549998584,
+ },
+ {
+ x: 121.259199000334,
+ y: 31.1374900003633,
+ },
+ {
+ x: 121.256985999904,
+ y: 31.1360149997925,
+ },
+ {
+ x: 121.256196000345,
+ y: 31.1343359997067,
+ },
+ {
+ x: 121.257541000317,
+ y: 31.131511999879,
+ },
+ {
+ x: 121.257488999718,
+ y: 31.1308499999276,
+ },
+ {
+ x: 121.256395999676,
+ y: 31.1306980001127,
+ },
+ {
+ x: 121.257186000134,
+ y: 31.1292469997493,
+ },
+ {
+ x: 121.2541040001,
+ y: 31.1290689996347,
+ },
+ {
+ x: 121.253140999757,
+ y: 31.130824999674,
+ },
+ {
+ x: 121.253626999686,
+ y: 31.1344179998908,
+ },
+ {
+ x: 121.242570999752,
+ y: 31.1362279997225,
+ },
+ {
+ x: 121.241060000219,
+ y: 31.1328359997816,
+ },
+ {
+ x: 121.235002999689,
+ y: 31.1325570004053,
+ },
+ {
+ x: 121.234923999643,
+ y: 31.1320240001075,
+ },
+ {
+ x: 121.24090400022,
+ y: 31.1313650002946,
+ },
+ {
+ x: 121.240113999761,
+ y: 31.1274689995947,
+ },
+ {
+ x: 121.235435999872,
+ y: 31.1283079996145,
+ },
+ {
+ x: 121.232406999583,
+ y: 31.12777400017,
+ },
+ {
+ x: 121.23157399984,
+ y: 31.1214400003558,
+ },
+ {
+ x: 121.232024999954,
+ y: 31.119862000431,
+ },
+ {
+ x: 121.231391000394,
+ y: 31.1210320004265,
+ },
+ {
+ x: 121.230280999569,
+ y: 31.1210650001497,
+ },
+ {
+ x: 121.22946499971,
+ y: 31.1193920003406,
+ },
+ {
+ x: 121.226801000066,
+ y: 31.1193409997874,
+ },
+ {
+ x: 121.219666000186,
+ y: 31.1172100004412,
+ },
+ {
+ x: 121.216870999897,
+ y: 31.1171409999573,
+ },
+ {
+ x: 121.216724000312,
+ y: 31.1187919996511,
+ },
+ {
+ x: 121.218382000329,
+ y: 31.1260279996925,
+ },
+ {
+ x: 121.223563000033,
+ y: 31.1411520001647,
+ },
+ {
+ x: 121.216116000153,
+ y: 31.1404399997062,
+ },
+ {
+ x: 121.203836000431,
+ y: 31.1377259995553,
+ },
+ {
+ x: 121.20171699984,
+ y: 31.1403399995913,
+ },
+ {
+ x: 121.197446999879,
+ y: 31.1402000003298,
+ },
+ {
+ x: 121.196110000276,
+ y: 31.1391569998957,
+ },
+ {
+ x: 121.195893000162,
+ y: 31.1398620000313,
+ },
+ {
+ x: 121.197516000363,
+ y: 31.1416620003011,
+ },
+ {
+ x: 121.197169999696,
+ y: 31.1429680002731,
+ },
+ {
+ x: 121.191223999788,
+ y: 31.1400050003306,
+ },
+ {
+ x: 121.177466000256,
+ y: 31.1454739998253,
+ },
+ {
+ x: 121.177161999727,
+ y: 31.1337790001008,
+ },
+ {
+ x: 121.175364999595,
+ y: 31.1338659996163,
+ },
+ {
+ x: 121.175417000194,
+ y: 31.1313959999255,
+ },
+ {
+ x: 121.175843000054,
+ y: 31.1294209996794,
+ },
+ {
+ x: 121.177353000441,
+ y: 31.1289630001424,
+ },
+ {
+ x: 121.177317999726,
+ y: 31.1262989995992,
+ },
+ {
+ x: 121.179365999741,
+ y: 31.1262979995531,
+ },
+ {
+ x: 121.179471000087,
+ y: 31.1231229997267,
+ },
+ {
+ x: 121.180633999759,
+ y: 31.1226830001204,
+ },
+ {
+ x: 121.179635999602,
+ y: 31.1224700001904,
+ },
+ {
+ x: 121.179331999972,
+ y: 31.120704999736,
+ },
+ {
+ x: 121.174800999666,
+ y: 31.1191720000878,
+ },
+ {
+ x: 121.173933000108,
+ y: 31.1206540000821,
+ },
+ {
+ x: 121.17268300002,
+ y: 31.1203539997373,
+ },
+ {
+ x: 121.171911000392,
+ y: 31.1210050000807,
+ },
+ {
+ x: 121.169809999732,
+ y: 31.1198600003388,
+ },
+ {
+ x: 121.17070399959,
+ y: 31.117230999611,
+ },
+ {
+ x: 121.168480999599,
+ y: 31.116085999869,
+ },
+ {
+ x: 121.170409000375,
+ y: 31.1108619999814,
+ },
+ {
+ x: 121.165983000415,
+ y: 31.111040000096,
+ },
+ {
+ x: 121.166050999954,
+ y: 31.1098059998471,
+ },
+ {
+ x: 121.161927000431,
+ y: 31.1102980000527,
+ },
+ {
+ x: 121.162274000245,
+ y: 31.1062719996531,
+ },
+ {
+ x: 121.160668999974,
+ y: 31.1062460002528,
+ },
+ {
+ x: 121.160972999604,
+ y: 31.1034170001944,
+ },
+ {
+ x: 121.160043999931,
+ y: 31.1033380001487,
+ },
+ {
+ x: 121.16012199993,
+ y: 31.1026370001974,
+ },
+ {
+ x: 121.155034000019,
+ y: 31.1025069995984,
+ },
+ {
+ x: 121.154723000066,
+ y: 31.1031040001495,
+ },
+ {
+ x: 121.14985200027,
+ y: 31.1038040000546,
+ },
+ {
+ x: 121.149791000155,
+ y: 31.1008509996739,
+ },
+ {
+ x: 121.152248000145,
+ y: 31.100911999789,
+ },
+ {
+ x: 121.15218700003,
+ y: 31.0951280001572,
+ },
+ {
+ x: 121.150833999689,
+ y: 31.0951290002033,
+ },
+ {
+ x: 121.150616999575,
+ y: 31.092442000398,
+ },
+ {
+ x: 121.148922999697,
+ y: 31.0921119995692,
+ },
+ {
+ x: 121.148315999584,
+ y: 31.0939980002076,
+ },
+ {
+ x: 121.146604999821,
+ y: 31.0936110003474,
+ },
+ {
+ x: 121.14490399962,
+ y: 31.097254000172,
+ },
+ {
+ x: 121.141292000326,
+ y: 31.095907000108,
+ },
+ {
+ x: 121.139921000054,
+ y: 31.099401000256,
+ },
+ {
+ x: 121.137323999903,
+ y: 31.098834000189,
+ },
+ {
+ x: 121.13703900025,
+ y: 31.1006290002283,
+ },
+ {
+ x: 121.13118700018,
+ y: 31.1000139997464,
+ },
+ {
+ x: 121.130197000391,
+ y: 31.1012409996724,
+ },
+ {
+ x: 121.128730000189,
+ y: 31.1010049995811,
+ },
+ {
+ x: 121.127357999872,
+ y: 31.103980000077,
+ },
+ {
+ x: 121.126100000315,
+ y: 31.1024539998523,
+ },
+ {
+ x: 121.12310399975,
+ y: 31.1052310002106,
+ },
+ {
+ x: 121.120915999574,
+ y: 31.1052920003256,
+ },
+ {
+ x: 121.1198570002,
+ y: 31.1076829999705,
+ },
+ {
+ x: 121.119119000342,
+ y: 31.1072139999262,
+ },
+ {
+ x: 121.116358999868,
+ y: 31.1096560001243,
+ },
+ {
+ x: 121.116037000307,
+ y: 31.1109860003037,
+ },
+ {
+ x: 121.114898999989,
+ y: 31.1102210000991,
+ },
+ {
+ x: 121.113866000016,
+ y: 31.1112829996108,
+ },
+ {
+ x: 121.113128000157,
+ y: 31.1107880001661,
+ },
+ {
+ x: 121.111520999794,
+ y: 31.1128829996508,
+ },
+ {
+ x: 121.109767999893,
+ y: 31.111708000324,
+ },
+ {
+ x: 121.107987999647,
+ y: 31.1138399997163,
+ },
+ {
+ x: 121.10562600044,
+ y: 31.1110339998193,
+ },
+ {
+ x: 121.10612199993,
+ y: 31.1095539999172,
+ },
+ {
+ x: 121.104150999869,
+ y: 31.1090609996655,
+ },
+ {
+ x: 121.1000260003,
+ y: 31.1052880001412,
+ },
+ {
+ x: 121.101042000388,
+ y: 31.1053619999564,
+ },
+ {
+ x: 121.101781000293,
+ y: 31.1038830001004,
+ },
+ {
+ x: 121.100424999814,
+ y: 31.1036849999628,
+ },
+ {
+ x: 121.101095000134,
+ y: 31.1027730001739,
+ },
+ {
+ x: 121.098940999727,
+ y: 31.1045480001901,
+ },
+ {
+ x: 121.098055000238,
+ y: 31.1038579998469,
+ },
+ {
+ x: 121.099235999842,
+ y: 31.10245199976,
+ },
+ {
+ x: 121.096006000177,
+ y: 31.1003309999757,
+ },
+ {
+ x: 121.094599000044,
+ y: 31.1019829997157,
+ },
+ {
+ x: 121.093366999887,
+ y: 31.1012419997186,
+ },
+ {
+ x: 121.095294999765,
+ y: 31.0974199997332,
+ },
+ {
+ x: 121.094920999604,
+ y: 31.0960640001535,
+ },
+ {
+ x: 121.093002000142,
+ y: 31.0954469995794,
+ },
+ {
+ x: 121.096231999807,
+ y: 31.09059999999,
+ },
+ {
+ x: 121.095119999788,
+ y: 31.0897290002932,
+ },
+ {
+ x: 121.096084000177,
+ y: 31.0885709999517,
+ },
+ {
+ x: 121.09480000032,
+ y: 31.0878540001621,
+ },
+ {
+ x: 121.09490399972,
+ y: 31.0854869998252,
+ },
+ {
+ x: 121.096085000223,
+ y: 31.0828499996279,
+ },
+ {
+ x: 121.097534999641,
+ y: 31.0822079996995,
+ },
+ {
+ x: 121.101684000316,
+ y: 31.0830499998577,
+ },
+ {
+ x: 121.102665999736,
+ y: 31.084034000269,
+ },
+ {
+ x: 121.107997000062,
+ y: 31.0795470001939,
+ },
+ {
+ x: 121.108908999851,
+ y: 31.0797689996397,
+ },
+ {
+ x: 121.110662999798,
+ y: 31.0783390002447,
+ },
+ {
+ x: 121.11157400044,
+ y: 31.0787339995745,
+ },
+ {
+ x: 121.112529000413,
+ y: 31.0775519999249,
+ },
+ {
+ x: 121.113788000016,
+ y: 31.0778740003848,
+ },
+ {
+ x: 121.11694800005,
+ y: 31.0721210003839,
+ },
+ {
+ x: 121.117651000094,
+ y: 31.0691150002571,
+ },
+ {
+ x: 121.121637000447,
+ y: 31.068588000236,
+ },
+ {
+ x: 121.121810000331,
+ y: 31.0617539998473,
+ },
+ {
+ x: 121.12317400028,
+ y: 31.0616959998706,
+ },
+ {
+ x: 121.12322599998,
+ y: 31.0608640001735,
+ },
+ {
+ x: 121.121550000033,
+ y: 31.0602030002683,
+ },
+ {
+ x: 121.121298000103,
+ y: 31.0593240002025,
+ },
+ {
+ x: 121.116115000307,
+ y: 31.059208000249,
+ },
+ {
+ x: 121.115402999849,
+ y: 31.0605209996445,
+ },
+ {
+ x: 121.113406000387,
+ y: 31.0603469997143,
+ },
+ {
+ x: 121.113615000132,
+ y: 31.0580059996772,
+ },
+ {
+ x: 121.104959000258,
+ y: 31.058327000091,
+ },
+ {
+ x: 121.104037000008,
+ y: 31.0585569999056,
+ },
+ {
+ x: 121.10379499964,
+ y: 31.059875000431,
+ },
+ {
+ x: 121.09721300008,
+ y: 31.0592050001107,
+ },
+ {
+ x: 121.097499999825,
+ y: 31.0573879999563,
+ },
+ {
+ x: 121.096543999806,
+ y: 31.0555739999402,
+ },
+ {
+ x: 121.095207000203,
+ y: 31.0559949995696,
+ },
+ {
+ x: 121.09490399972,
+ y: 31.0579800002769,
+ },
+ {
+ x: 121.093740000001,
+ y: 31.0585549998135,
+ },
+ {
+ x: 121.090031999877,
+ y: 31.058265999976,
+ },
+ {
+ x: 121.089814999762,
+ y: 31.0599480002001,
+ },
+ {
+ x: 121.088408999676,
+ y: 31.0603689998295,
+ },
+ {
+ x: 121.089111999719,
+ y: 31.0633509997489,
+ },
+ {
+ x: 121.089936999993,
+ y: 31.063827000116,
+ },
+ {
+ x: 121.08825199963,
+ y: 31.0654139995565,
+ },
+ {
+ x: 121.088330999676,
+ y: 31.0664640003134,
+ },
+ {
+ x: 121.086072999869,
+ y: 31.0669609998503,
+ },
+ {
+ x: 121.083608000409,
+ y: 31.0665980001976,
+ },
+ {
+ x: 121.081342000233,
+ y: 31.0647789999509,
+ },
+ {
+ x: 121.081923000046,
+ y: 31.0630999998651,
+ },
+ {
+ x: 121.078579999667,
+ y: 31.0618760000774,
+ },
+ {
+ x: 121.079822000285,
+ y: 31.0607090002202,
+ },
+ {
+ x: 121.076374999607,
+ y: 31.0588360001813,
+ },
+ {
+ x: 121.081271999703,
+ y: 31.0521609999303,
+ },
+ {
+ x: 121.082556999606,
+ y: 31.0548829995508,
+ },
+ {
+ x: 121.085326999641,
+ y: 31.0538699996009,
+ },
+ {
+ x: 121.085039999896,
+ y: 31.0522660002757,
+ },
+ {
+ x: 121.086611000397,
+ y: 31.0507179999358,
+ },
+ {
+ x: 121.085656000424,
+ y: 31.0500679996385,
+ },
+ {
+ x: 121.09161299994,
+ y: 31.0467470002739,
+ },
+ {
+ x: 121.090422999922,
+ y: 31.0441609997304,
+ },
+ {
+ x: 121.08850399956,
+ y: 31.0426559995748,
+ },
+ {
+ x: 121.089182000249,
+ y: 31.0418959996007,
+ },
+ {
+ x: 121.091266000126,
+ y: 31.0424160001983,
+ },
+ {
+ x: 121.091785999824,
+ y: 31.0404240000676,
+ },
+ {
+ x: 121.093166999657,
+ y: 31.0408119999739,
+ },
+ {
+ x: 121.095684999763,
+ y: 31.035353000041,
+ },
+ {
+ x: 121.095336999903,
+ y: 31.0331439997958,
+ },
+ {
+ x: 121.09236899973,
+ y: 31.0333969997718,
+ },
+ {
+ x: 121.091812000124,
+ y: 31.0283879999063,
+ },
+ {
+ x: 121.086585000098,
+ y: 31.0278860001388,
+ },
+ {
+ x: 121.084917999666,
+ y: 31.0298469997393,
+ },
+ {
+ x: 121.082972999904,
+ y: 31.0292760003871,
+ },
+ {
+ x: 121.080941999774,
+ y: 31.0274509998638,
+ },
+ {
+ x: 121.088434999975,
+ y: 31.0221570003453,
+ },
+ {
+ x: 121.097455999595,
+ y: 31.0137189997321,
+ },
+ {
+ x: 121.098185999984,
+ y: 31.0113429998796,
+ },
+ {
+ x: 121.099608999955,
+ y: 31.0099559997696,
+ },
+ {
+ x: 121.099514000071,
+ y: 30.9970489999114,
+ },
+ {
+ x: 121.095554000017,
+ y: 30.9969079997045,
+ },
+ {
+ x: 121.094572999744,
+ y: 30.9750509999038,
+ },
+ {
+ x: 121.090961999597,
+ y: 30.9762250000837,
+ },
+ {
+ x: 121.09118700008,
+ y: 30.9703970002215,
+ },
+ {
+ x: 121.092975999843,
+ y: 30.9684549996985,
+ },
+ {
+ x: 121.092897999843,
+ y: 30.9676209999093,
+ },
+ {
+ x: 121.083442999995,
+ y: 30.9661579998918,
+ },
+ {
+ x: 121.083590999625,
+ y: 30.9641400003608,
+ },
+ {
+ x: 121.076654999928,
+ y: 30.9642700000605,
+ },
+ {
+ x: 121.075753999747,
+ y: 30.9638339997393,
+ },
+ {
+ x: 121.076148999976,
+ y: 30.9621720004375,
+ },
+ {
+ x: 121.073952000285,
+ y: 30.9620189996771,
+ },
+ {
+ x: 121.074534000144,
+ y: 30.9602790003756,
+ },
+ {
+ x: 121.072059000223,
+ y: 30.9595710001016,
+ },
+ {
+ x: 121.071911999739,
+ y: 30.9578069996933,
+ },
+ {
+ x: 121.064159000138,
+ y: 30.956921000204,
+ },
+ {
+ x: 121.058809999882,
+ y: 30.9580049998309,
+ },
+ {
+ x: 121.057749999563,
+ y: 30.9575759998326,
+ },
+ {
+ x: 121.055787999916,
+ y: 30.9585349999903,
+ },
+ {
+ x: 121.054955000173,
+ y: 30.9612090000953,
+ },
+ {
+ x: 121.053592000271,
+ y: 30.9615359998866,
+ },
+ {
+ x: 121.053314000041,
+ y: 30.9636540004318,
+ },
+ {
+ x: 121.052349999653,
+ y: 30.9639319997621,
+ },
+ {
+ x: 121.052811000228,
+ y: 30.9673629997027,
+ },
+ {
+ x: 121.048721999621,
+ y: 30.9664780002595,
+ },
+ {
+ x: 121.046498999629,
+ y: 30.971397999618,
+ },
+ {
+ x: 121.042895999851,
+ y: 30.9710689997346,
+ },
+ {
+ x: 121.042184000291,
+ y: 30.9722809998683,
+ },
+ {
+ x: 121.038606999913,
+ y: 30.9714730003787,
+ },
+ {
+ x: 121.041428999649,
+ y: 30.9654949998944,
+ },
+ {
+ x: 121.038120999984,
+ y: 30.962492999952,
+ },
+ {
+ x: 121.039415000302,
+ y: 30.9612819998645,
+ },
+ {
+ x: 121.039006000327,
+ y: 30.9595659998711,
+ },
+ {
+ x: 121.035907000408,
+ y: 30.9585560000594,
+ },
+ {
+ x: 121.031765000055,
+ y: 30.959160000034,
+ },
+ {
+ x: 121.028735999767,
+ y: 30.9491970001415,
+ },
+ {
+ x: 121.023448999672,
+ y: 30.9479320002616,
+ },
+ {
+ x: 121.023579000271,
+ y: 30.9460370001075,
+ },
+ {
+ x: 121.015036000211,
+ y: 30.9432949995646,
+ },
+ {
+ x: 121.014629000328,
+ y: 30.944198999884,
+ },
+ {
+ x: 121.012509999737,
+ y: 30.9434690003941,
+ },
+ {
+ x: 121.013274999941,
+ y: 30.9413539999871,
+ },
+ {
+ x: 121.01087800002,
+ y: 30.9424280000522,
+ },
+ {
+ x: 121.009420000233,
+ y: 30.946314000291,
+ },
+ {
+ x: 121.007198000288,
+ y: 30.9457579998319,
+ },
+ {
+ x: 121.006954999873,
+ y: 30.9466260002897,
+ },
+ {
+ x: 121.007858000147,
+ y: 30.9470059998271,
+ },
+ {
+ x: 121.006399000314,
+ y: 30.9469370002424,
+ },
+ {
+ x: 121.006676999644,
+ y: 30.9493310000257,
+ },
+ {
+ x: 121.008656000074,
+ y: 30.9497470003238,
+ },
+ {
+ x: 121.008933000258,
+ y: 30.948950999589,
+ },
+ {
+ x: 121.010947999651,
+ y: 30.9503029998836,
+ },
+ {
+ x: 121.01059999979,
+ y: 30.9518629998776,
+ },
+ {
+ x: 121.008621000259,
+ y: 30.9516219995557,
+ },
+ {
+ x: 121.007232000057,
+ y: 30.9521060002917,
+ },
+ {
+ x: 121.006850999574,
+ y: 30.953112999965,
+ },
+ {
+ x: 121.004429000298,
+ y: 30.9513090004101,
+ },
+ {
+ x: 121.005669999971,
+ y: 30.9507889998125,
+ },
+ {
+ x: 120.998282000114,
+ y: 30.9491940000032,
+ },
+ {
+ x: 120.997691999886,
+ y: 30.9532170002644,
+ },
+ {
+ x: 120.99102600005,
+ y: 30.9525599996443,
+ },
+ {
+ x: 120.990452999706,
+ y: 30.9570170001345,
+ },
+ {
+ x: 120.988195999945,
+ y: 30.9572259998801,
+ },
+ {
+ x: 120.987353999787,
+ y: 30.9604160003981,
+ },
+ {
+ x: 120.990417999891,
+ y: 30.9608889997276,
+ },
+ {
+ x: 120.988265999576,
+ y: 30.9650289999884,
+ },
+ {
+ x: 120.989333000218,
+ y: 30.9673279998873,
+ },
+ {
+ x: 120.988848000335,
+ y: 30.9684900004132,
+ },
+ {
+ x: 120.987779999647,
+ y: 30.9682480000452,
+ },
+ {
+ x: 120.987102999904,
+ y: 30.9705720001977,
+ },
+ {
+ x: 120.988117999946,
+ y: 30.9708630001274,
+ },
+ {
+ x: 120.987519000202,
+ y: 30.9727030004432,
+ },
+ {
+ x: 120.988777999805,
+ y: 30.9729219997506,
+ },
+ {
+ x: 120.988804000105,
+ y: 30.974302000437,
+ },
+ {
+ x: 120.994758000381,
+ y: 30.9751000003648,
+ },
+ {
+ x: 120.994984000012,
+ y: 30.9760360003612,
+ },
+ {
+ x: 120.996146999684,
+ y: 30.9761019998075,
+ },
+ {
+ x: 120.996208999846,
+ y: 30.9791680000033,
+ },
+ {
+ x: 120.997988000046,
+ y: 30.979782000439,
+ },
+ {
+ x: 120.997631999817,
+ y: 30.9816549995786,
+ },
+ {
+ x: 120.996468000098,
+ y: 30.9826230001514,
+ },
+ {
+ x: 120.994984000012,
+ y: 30.9822659998761,
+ },
+ {
+ x: 120.992778999951,
+ y: 30.9913970000716,
+ },
+ {
+ x: 120.991859999839,
+ y: 30.9913970000716,
+ },
+ {
+ x: 120.990253000376,
+ y: 30.9940940003379,
+ },
+ {
+ x: 120.991000999796,
+ y: 30.9948969995969,
+ },
+ {
+ x: 120.990488000421,
+ y: 30.9974230000714,
+ },
+ {
+ x: 120.9861819997,
+ y: 30.9967339997743,
+ },
+ {
+ x: 120.985514000371,
+ y: 30.9988510002735,
+ },
+ {
+ x: 120.987710000017,
+ y: 30.9992859996492,
+ },
+ {
+ x: 120.987285000203,
+ y: 31.0034710001866,
+ },
+ {
+ x: 120.986320999814,
+ y: 31.0037620001162,
+ },
+ {
+ x: 120.986207999999,
+ y: 31.0054309997409,
+ },
+ {
+ x: 120.987754000247,
+ y: 31.0055919999709,
+ },
+ {
+ x: 120.987164000019,
+ y: 31.0073380004484,
+ },
+ {
+ x: 120.987753000201,
+ y: 31.007457999687,
+ },
+ {
+ x: 120.986721000274,
+ y: 31.0096429997247,
+ },
+ {
+ x: 120.987598000248,
+ y: 31.0103200003678,
+ },
+ {
+ x: 120.984733000328,
+ y: 31.0150879999113,
+ },
+ {
+ x: 120.986086999815,
+ y: 31.0159829998157,
+ },
+ {
+ x: 120.979550999679,
+ y: 31.0166380003435,
+ },
+ {
+ x: 120.97868300012,
+ y: 31.0182789995762,
+ },
+ {
+ x: 120.958963999989,
+ y: 31.0188430004042,
+ },
+ {
+ x: 120.958624999644,
+ y: 31.0198039997549,
+ },
+ {
+ x: 120.960612000444,
+ y: 31.0219869997003,
+ },
+ {
+ x: 120.960047999616,
+ y: 31.0230069999731,
+ },
+ {
+ x: 120.956246999699,
+ y: 31.0239149995776,
+ },
+ {
+ x: 120.954077000353,
+ y: 31.0308209996894,
+ },
+ {
+ x: 120.950596999952,
+ y: 31.032314000191,
+ },
+ {
+ x: 120.947993000377,
+ y: 31.0325209998443,
+ },
+ {
+ x: 120.946882000404,
+ y: 31.0313499998027,
+ },
+ {
+ x: 120.944920999904,
+ y: 31.0322279998224,
+ },
+ {
+ x: 120.943982999816,
+ y: 31.0307069998282,
+ },
+ {
+ x: 120.945242000318,
+ y: 31.0300039997848,
+ },
+ {
+ x: 120.944539000275,
+ y: 31.0273410001871,
+ },
+ {
+ x: 120.946968999919,
+ y: 31.0262860000989,
+ },
+ {
+ x: 120.945771999578,
+ y: 31.0199090001003,
+ },
+ {
+ x: 120.932137000322,
+ y: 31.0194119996641,
+ },
+ {
+ x: 120.931373000164,
+ y: 31.0188279997125,
+ },
+ {
+ x: 120.935911999939,
+ y: 31.0123300004292,
+ },
+ {
+ x: 120.935616999825,
+ y: 31.0116869995554,
+ },
+ {
+ x: 120.933915999624,
+ y: 31.011305999972,
+ },
+ {
+ x: 120.929620000263,
+ y: 31.012330999576,
+ },
+ {
+ x: 120.927214999972,
+ y: 31.0140869996154,
+ },
+ {
+ x: 120.922833000243,
+ y: 31.0143809996835,
+ },
+ {
+ x: 120.922007999969,
+ y: 31.0127419996436,
+ },
+ {
+ x: 120.913964000438,
+ y: 31.015114000211,
+ },
+ {
+ x: 120.906881000258,
+ y: 31.0128900001734,
+ },
+ {
+ x: 120.905806000147,
+ y: 31.0149689998195,
+ },
+ {
+ x: 120.905917999916,
+ y: 31.0192710003564,
+ },
+ {
+ x: 120.897221999995,
+ y: 31.01982599987,
+ },
+ {
+ x: 120.896424000068,
+ y: 31.022752999951,
+ },
+ {
+ x: 120.897837999624,
+ y: 31.0399580001616,
+ },
+ {
+ x: 120.895598999794,
+ y: 31.0419159996237,
+ },
+ {
+ x: 120.892882999551,
+ y: 31.0478889998775,
+ },
+ {
+ x: 120.893074000265,
+ y: 31.0505320003516,
+ },
+ {
+ x: 120.891303000433,
+ y: 31.0526330001129,
+ },
+ {
+ x: 120.890426999606,
+ y: 31.0561969998917,
+ },
+ {
+ x: 120.890479000206,
+ y: 31.0609620001962,
+ },
+ {
+ x: 120.894722999867,
+ y: 31.0728099997817,
+ },
+ {
+ x: 120.89547799961,
+ y: 31.080652999936,
+ },
+ {
+ x: 120.899261999642,
+ y: 31.080358999868,
+ },
+ {
+ x: 120.900883999797,
+ y: 31.0816780004394,
+ },
+ {
+ x: 120.89753500004,
+ y: 31.0863819997296,
+ },
+ {
+ x: 120.897969000269,
+ y: 31.0879469999541,
+ },
+ {
+ x: 120.895157000096,
+ y: 31.0892230003412,
+ },
+ {
+ x: 120.892552999621,
+ y: 31.0889329995583,
+ },
+ {
+ x: 120.891277000134,
+ y: 31.092990999635,
+ },
+ {
+ x: 120.888553000421,
+ y: 31.095107000088,
+ },
+ {
+ x: 120.888204999661,
+ y: 31.0997730003238,
+ },
+ {
+ x: 120.887076999804,
+ y: 31.0994540000021,
+ },
+ {
+ x: 120.886876999574,
+ y: 31.0965849998979,
+ },
+ {
+ x: 120.88612199983,
+ y: 31.0962659995762,
+ },
+ {
+ x: 120.874474999622,
+ y: 31.0976890004471,
+ },
+ {
+ x: 120.873928999624,
+ y: 31.0980289999384,
+ },
+ {
+ x: 120.87481299992,
+ y: 31.1006539995824,
+ },
+ {
+ x: 120.871854000162,
+ y: 31.1001289996536,
+ },
+ {
+ x: 120.872479000206,
+ y: 31.1022090002452,
+ },
+ {
+ x: 120.869728000147,
+ y: 31.1027130001049,
+ },
+ {
+ x: 120.868382000129,
+ y: 31.1011499999726,
+ },
+ {
+ x: 120.865649000001,
+ y: 31.1012019996726,
+ },
+ {
+ x: 120.865413999956,
+ y: 31.099481000348,
+ },
+ {
+ x: 120.861578000225,
+ y: 31.099878999816,
+ },
+ {
+ x: 120.860328000137,
+ y: 31.1006209998593,
+ },
+ {
+ x: 120.859824000277,
+ y: 31.1025539999672,
+ },
+ {
+ x: 120.858582999706,
+ y: 31.1023690004291,
+ },
+ {
+ x: 120.857889000077,
+ y: 31.1032970000566,
+ },
+ {
+ x: 120.855589000132,
+ y: 31.1025289997136,
+ },
+ {
+ x: 120.854372999814,
+ y: 31.1030850001727,
+ },
+ {
+ x: 120.852619999913,
+ y: 31.1050699999806,
+ },
+ {
+ x: 120.852671999613,
+ y: 31.1061339995845,
+ },
+ {
+ x: 120.853731999932,
+ y: 31.1107609998203,
+ },
+ {
+ x: 120.856040000246,
+ y: 31.1115660000709,
+ },
+ {
+ x: 120.858071000376,
+ y: 31.1147450000817,
+ },
+ {
+ x: 120.861795000339,
+ y: 31.1169920002806,
+ },
+ {
+ x: 120.866428999998,
+ y: 31.1219610001001,
+ },
+ {
+ x: 120.866853999812,
+ y: 31.1260509998538,
+ },
+ {
+ x: 120.868182999946,
+ y: 31.1294049998409,
+ },
+ {
+ x: 120.872270999607,
+ y: 31.1337380000087,
+ },
+ {
+ x: 120.877139000165,
+ y: 31.1369729999041,
+ },
+ {
+ x: 120.895069999681,
+ y: 31.1383129996453,
+ },
+ {
+ x: 120.902256000114,
+ y: 31.1365330002978,
+ },
+ {
+ x: 120.912766000051,
+ y: 31.1384450003366,
+ },
+ {
+ x: 120.926166000161,
+ y: 31.1436490002013,
+ },
+ {
+ x: 120.948426999706,
+ y: 31.140455000398,
+ },
+ {
+ x: 120.979593999863,
+ y: 31.1338339999392,
+ },
+ {
+ x: 120.986912000089,
+ y: 31.1352790000259,
+ },
+ {
+ x: 121.014046000423,
+ y: 31.1361159999535,
+ },
+ {
+ x: 121.018353000291,
+ y: 31.1403160002832,
+ },
+ {
+ x: 121.017814999762,
+ y: 31.1424669996524,
+ },
+ {
+ x: 121.021208999796,
+ y: 31.1427680000432,
+ },
+ {
+ x: 121.022719000182,
+ y: 31.1446499995978,
+ },
+ {
+ x: 121.022251000184,
+ y: 31.1457570002854,
+ },
+ {
+ x: 121.023891000269,
+ y: 31.1458589995932,
+ },
+ {
+ x: 121.024300000245,
+ y: 31.1432400002259,
+ },
+ {
+ x: 121.028596999652,
+ y: 31.1441800004067,
+ },
+ {
+ x: 121.031617999571,
+ y: 31.1422989999989,
+ },
+ {
+ x: 121.031756999686,
+ y: 31.1393420003331,
+ },
+ {
+ x: 121.033597000002,
+ y: 31.1398129995703,
+ },
+ {
+ x: 121.034135999677,
+ y: 31.138875000381,
+ },
+ {
+ x: 121.036253000176,
+ y: 31.139544999802,
+ },
+ {
+ x: 121.040246999999,
+ y: 31.1474740003249,
+ },
+ {
+ x: 121.03702599985,
+ y: 31.1488829996508,
+ },
+ {
+ x: 121.036957000265,
+ y: 31.151771999778,
+ },
+ {
+ x: 121.040724999559,
+ y: 31.1535170002094,
+ },
+ {
+ x: 121.040889999974,
+ y: 31.1559700000155,
+ },
+ {
+ x: 121.044588999683,
+ y: 31.1565400002209,
+ },
+ {
+ x: 121.045725999955,
+ y: 31.1526449995671,
+ },
+ {
+ x: 121.047340999787,
+ y: 31.152410999568,
+ },
+ {
+ x: 121.051274000395,
+ y: 31.1525790001208,
+ },
+ {
+ x: 121.051099999565,
+ y: 31.1537209997244,
+ },
+ {
+ x: 121.052818999697,
+ y: 31.1546949996745,
+ },
+ {
+ x: 121.057984999608,
+ y: 31.1550319999269,
+ },
+ {
+ x: 121.058124999769,
+ y: 31.1540260002997,
+ },
+ {
+ x: 121.05949600004,
+ y: 31.1540590000229,
+ },
+ {
+ x: 121.059564999625,
+ y: 31.1527469997743,
+ },
+ {
+ x: 121.061483999987,
+ y: 31.1528500000275,
+ },
+ {
+ x: 121.061144999642,
+ y: 31.1504999995753,
+ },
+ {
+ x: 121.064539999721,
+ y: 31.1505999996903,
+ },
+ {
+ x: 121.063194999749,
+ y: 31.1541929999071,
+ },
+ {
+ x: 121.066319999968,
+ y: 31.1554019999024,
+ },
+ {
+ x: 121.065980999624,
+ y: 31.1570149996426,
+ },
+ {
+ x: 121.066823999828,
+ y: 31.1573170000796,
+ },
+ {
+ x: 121.067458000287,
+ y: 31.1554029999485,
+ },
+ {
+ x: 121.06843899966,
+ y: 31.1557400002009,
+ },
+ {
+ x: 121.06843899966,
+ y: 31.1581570001455,
+ },
+ {
+ x: 121.072433000383,
+ y: 31.1603410001371,
+ },
+ {
+ x: 121.071459999579,
+ y: 31.1624239999677,
+ },
+ {
+ x: 121.072467000152,
+ y: 31.1625919996212,
+ },
+ {
+ x: 121.072199000384,
+ y: 31.164504999706,
+ },
+ {
+ x: 121.069107999934,
+ y: 31.1635980001477,
+ },
+ {
+ x: 121.068534999591,
+ y: 31.1651430003492,
+ },
+ {
+ x: 121.072771999828,
+ y: 31.1664199998831,
+ },
+ {
+ x: 121.072702000197,
+ y: 31.167897999693,
+ },
+ {
+ x: 121.070874000435,
+ y: 31.1721980001377,
+ },
+ {
+ x: 121.067795999686,
+ y: 31.1714899998636,
+ },
+ {
+ x: 121.067327999687,
+ y: 31.1723970003214,
+ },
+ {
+ x: 121.068169999846,
+ y: 31.1735070002479,
+ },
+ {
+ x: 121.067935999847,
+ y: 31.174581000313,
+ },
+ {
+ x: 121.070835999582,
+ y: 31.1753230003562,
+ },
+ {
+ x: 121.069637000048,
+ y: 31.1781029999535,
+ },
+ {
+ x: 121.066815000312,
+ y: 31.1813549997335,
+ },
+ {
+ x: 121.066633000013,
+ y: 31.1833459998181,
+ },
+ {
+ x: 121.070991999581,
+ y: 31.1847240004124,
+ },
+ {
+ x: 121.070392999837,
+ y: 31.1862590001528,
+ },
+ {
+ x: 121.064887999582,
+ y: 31.184772999974,
+ },
+ {
+ x: 121.064166999607,
+ y: 31.1867759997127,
+ },
+ {
+ x: 121.067092999642,
+ y: 31.1878360000314,
+ },
+ {
+ x: 121.066876000427,
+ y: 31.1903099999066,
+ },
+ {
+ x: 121.065756000039,
+ y: 31.1906149995826,
+ },
+ {
+ x: 121.066024999854,
+ y: 31.1931699995959,
+ },
+ {
+ x: 121.067969999616,
+ y: 31.1934059996872,
+ },
+ {
+ x: 121.067597000401,
+ y: 31.1950410004418,
+ },
+ {
+ x: 121.06552200004,
+ y: 31.1954830001404,
+ },
+ {
+ x: 121.065008999766,
+ y: 31.1971840003414,
+ },
+ {
+ x: 121.06221300033,
+ y: 31.1968429999046,
+ },
+ {
+ x: 121.062021999616,
+ y: 31.1990649998499,
+ },
+ {
+ x: 121.064627000136,
+ y: 31.1983940003828,
+ },
+ {
+ x: 121.058054000092,
+ y: 31.2265360004361,
+ },
+ {
+ x: 121.058228000022,
+ y: 31.2288340002889,
+ },
+ {
+ x: 121.060137999969,
+ y: 31.2291400000111,
+ },
+ {
+ x: 121.060069000384,
+ y: 31.2326459998131,
+ },
+ {
+ x: 121.06258699959,
+ y: 31.2327829998356,
+ },
+ {
+ x: 121.062795000189,
+ y: 31.2347899997587,
+ },
+ {
+ x: 121.059998999854,
+ y: 31.2348240004274,
+ },
+ {
+ x: 121.059149000226,
+ y: 31.2370030001883,
+ },
+ {
+ x: 121.058028999838,
+ y: 31.2365600004437,
+ },
+ {
+ x: 121.057420999679,
+ y: 31.2371050003955,
+ },
+ {
+ x: 121.05666499989,
+ y: 31.2396889999474,
+ },
+ {
+ x: 121.05932200011,
+ y: 31.2403030003832,
+ },
+ {
+ x: 121.058982999766,
+ y: 31.244080000092,
+ },
+ {
+ x: 121.060137999969,
+ y: 31.2440119996541,
+ },
+ {
+ x: 121.060477000313,
+ y: 31.2450000002499,
+ },
+ {
+ x: 121.059590999925,
+ y: 31.2454429999945,
+ },
+ {
+ x: 121.059763999809,
+ y: 31.2479939998233,
+ },
+ {
+ x: 121.057690000393,
+ y: 31.2482330000529,
+ },
+ {
+ x: 121.057073999865,
+ y: 31.2471090003801,
+ },
+ {
+ x: 121.053108000434,
+ y: 31.2486230000515,
+ },
+ {
+ x: 121.054537999829,
+ y: 31.249104999796,
+ },
+ {
+ x: 121.056404999591,
+ y: 31.2483520001447,
+ },
+ {
+ x: 121.057317000279,
+ y: 31.2548280002121,
+ },
+ {
+ x: 121.057333000118,
+ y: 31.2570150003421,
+ },
+ {
+ x: 121.05665700042,
+ y: 31.2575580002016,
+ },
+ {
+ x: 121.057507000048,
+ y: 31.2578890001773,
+ },
+ {
+ x: 121.058072000023,
+ y: 31.2595549996636,
+ },
+ {
+ x: 121.057367999933,
+ y: 31.2598000001699,
+ },
+ {
+ x: 121.058349000206,
+ y: 31.2685150000672,
+ },
+ {
+ x: 121.057690000393,
+ y: 31.2685659997211,
+ },
+ {
+ x: 121.057881000208,
+ y: 31.2693030004332,
+ },
+ {
+ x: 121.074568999959,
+ y: 31.2717130000549,
+ },
+ {
+ x: 121.077538000179,
+ y: 31.273364999795,
+ },
+ {
+ x: 121.0799350001,
+ y: 31.2775320004015,
+ },
+ {
+ x: 121.076747999721,
+ y: 31.2790840000266,
+ },
+ {
+ x: 121.077806999993,
+ y: 31.2827439997358,
+ },
+ {
+ x: 121.080081999685,
+ y: 31.289420000033,
+ },
+ {
+ x: 121.082712999605,
+ y: 31.2924739996754,
+ },
+ {
+ x: 121.082286999745,
+ y: 31.2935390002247,
+ },
+ {
+ x: 121.084172000338,
+ y: 31.2938959996007,
+ },
+ {
+ x: 121.085518000355,
+ y: 31.2937180003855,
+ },
+ ],
+ ],
+ province: "涓婃捣甯�",
+ sheng_code: "310000",
+ city: "涓婃捣鍩庡尯",
+ city_code: "310100",
+ district: "闈掓郸鍖�",
+ adcode: "310118",
+ },
+];
+
+export default shshapes;
diff --git a/bigScreen/src/utils/try.json b/bigScreen/src/utils/try.json
new file mode 100644
index 0000000..e5cea95
--- /dev/null
+++ b/bigScreen/src/utils/try.json
@@ -0,0 +1,39735 @@
+[
+ [
+ {
+ "coord": [
+ 120.14322240845,
+ 30.236064370321
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.14280555506,
+ 30.23633761213
+ ],
+ "elevation": 5
+ },
+ {
+ "coord": [
+ 120.14307598649,
+ 30.236125905084
+ ],
+ "elevation": 30.7
+ },
+ {
+ "coord": [
+ 120.14301682797,
+ 30.236035316745
+ ],
+ "elevation": 15.4
+ },
+ {
+ "coord": [
+ 120.1428734612,
+ 30.236160551632
+ ],
+ "elevation": 1.6
+ },
+ {
+ "coord": [
+ 120.14200215328,
+ 30.23595702204
+ ],
+ "elevation": 8.9
+ },
+ {
+ "coord": [
+ 120.14138577045,
+ 30.236113748704
+ ],
+ "elevation": 18.4
+ },
+ {
+ "coord": [
+ 120.1400398833,
+ 30.235973050702
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.13893453465,
+ 30.23517220446
+ ],
+ "elevation": 12.6
+ },
+ {
+ "coord": [
+ 120.1382899739,
+ 30.234062922977
+ ],
+ "elevation": 17.7
+ },
+ {
+ "coord": [
+ 120.13634057665,
+ 30.233446752432
+ ],
+ "elevation": 24.5
+ },
+ {
+ "coord": [
+ 120.13413680453,
+ 30.232112168844
+ ],
+ "elevation": 37.8
+ },
+ {
+ "coord": [
+ 120.13333353311,
+ 30.232145779364
+ ],
+ "elevation": 48.7
+ },
+ {
+ "coord": [
+ 120.13306479103,
+ 30.231759284837
+ ],
+ "elevation": 63.7
+ },
+ {
+ "coord": [
+ 120.13265960629,
+ 30.231641351722
+ ],
+ "elevation": 32.3
+ },
+ {
+ "coord": [
+ 120.1327455782,
+ 30.231430284343
+ ],
+ "elevation": 81.9
+ },
+ {
+ "coord": [
+ 120.13218153673,
+ 30.230180120187
+ ],
+ "elevation": 114.1
+ },
+ {
+ "coord": [
+ 120.13170681763,
+ 30.229925745619
+ ],
+ "elevation": 125.3
+ },
+ {
+ "coord": [
+ 120.13140700148,
+ 30.229576173509
+ ],
+ "elevation": 128
+ },
+ {
+ "coord": [
+ 120.13119614803,
+ 30.228996846637
+ ],
+ "elevation": 161.2
+ },
+ {
+ "coord": [
+ 120.13066649155,
+ 30.228846445356
+ ],
+ "elevation": 176
+ },
+ {
+ "coord": [
+ 120.13023980134,
+ 30.228226570416
+ ],
+ "elevation": 198.1
+ },
+ {
+ "coord": [
+ 120.12989250643,
+ 30.228177899345
+ ],
+ "elevation": 213.1
+ },
+ {
+ "coord": [
+ 120.1297674531,
+ 30.227895075522
+ ],
+ "elevation": 226.1
+ },
+ {
+ "coord": [
+ 120.12941575407,
+ 30.228596968401
+ ],
+ "elevation": 244.8
+ },
+ {
+ "coord": [
+ 120.12900512996,
+ 30.228293967376
+ ],
+ "elevation": 253.7
+ },
+ {
+ "coord": [
+ 120.12920653848,
+ 30.228281493076
+ ],
+ "elevation": 258.5
+ },
+ {
+ "coord": [
+ 120.12914997592,
+ 30.22811126636
+ ],
+ "elevation": 256.9
+ },
+ {
+ "coord": [
+ 120.12887629039,
+ 30.227990425169
+ ],
+ "elevation": 244.7
+ },
+ {
+ "coord": [
+ 120.12797286481,
+ 30.228127070174
+ ],
+ "elevation": 235.4
+ },
+ {
+ "coord": [
+ 120.12749160626,
+ 30.228348006385
+ ],
+ "elevation": 234.9
+ },
+ {
+ "coord": [
+ 120.12728472245,
+ 30.228132519108
+ ],
+ "elevation": 221.7
+ },
+ {
+ "coord": [
+ 120.12725816563,
+ 30.227718527678
+ ],
+ "elevation": 206.5
+ },
+ {
+ "coord": [
+ 120.12699742758,
+ 30.227225482569
+ ],
+ "elevation": 199.4
+ },
+ {
+ "coord": [
+ 120.12705029341,
+ 30.226639976046
+ ],
+ "elevation": 190.2
+ },
+ {
+ "coord": [
+ 120.12620458002,
+ 30.225849596694
+ ],
+ "elevation": 186.2
+ },
+ {
+ "coord": [
+ 120.12629723613,
+ 30.225609780737
+ ],
+ "elevation": 175.1
+ },
+ {
+ "coord": [
+ 120.12611630111,
+ 30.225592655172
+ ],
+ "elevation": 179.4
+ },
+ {
+ "coord": [
+ 120.12623751461,
+ 30.225514547091
+ ],
+ "elevation": 194.1
+ },
+ {
+ "coord": [
+ 120.12569412003,
+ 30.225289138515
+ ],
+ "elevation": 167.6
+ },
+ {
+ "coord": [
+ 120.1260081246,
+ 30.225109979145
+ ],
+ "elevation": 160.7
+ },
+ {
+ "coord": [
+ 120.12428900347,
+ 30.224907917069
+ ],
+ "elevation": 155.3
+ },
+ {
+ "coord": [
+ 120.1233608862,
+ 30.224531990576
+ ],
+ "elevation": 167.9
+ },
+ {
+ "coord": [
+ 120.12328968155,
+ 30.225342953599
+ ],
+ "elevation": 172.4
+ },
+ {
+ "coord": [
+ 120.12289821299,
+ 30.22630750923
+ ],
+ "elevation": 164
+ },
+ {
+ "coord": [
+ 120.1226090834,
+ 30.226410111043
+ ],
+ "elevation": 164.2
+ },
+ {
+ "coord": [
+ 120.12245512244,
+ 30.226878337044
+ ],
+ "elevation": 156.5
+ },
+ {
+ "coord": [
+ 120.1221672377,
+ 30.227216311881
+ ],
+ "elevation": 143.2
+ },
+ {
+ "coord": [
+ 120.12164622224,
+ 30.227314672485
+ ],
+ "elevation": 140.4
+ },
+ {
+ "coord": [
+ 120.12131843541,
+ 30.2278850071
+ ],
+ "elevation": 121
+ },
+ {
+ "coord": [
+ 120.12014167505,
+ 30.227860326084
+ ],
+ "elevation": 99.6
+ },
+ {
+ "coord": [
+ 120.11982765304,
+ 30.227656247151
+ ],
+ "elevation": 116.7
+ },
+ {
+ "coord": [
+ 120.11973240019,
+ 30.227795357688
+ ],
+ "elevation": 116.3
+ },
+ {
+ "coord": [
+ 120.11925363536,
+ 30.227845331234
+ ],
+ "elevation": 111.4
+ },
+ {
+ "coord": [
+ 120.11885762159,
+ 30.227618695459
+ ],
+ "elevation": 111.6
+ },
+ {
+ "coord": [
+ 120.11832083554,
+ 30.227828718428
+ ],
+ "elevation": 114.5
+ },
+ {
+ "coord": [
+ 120.11764254714,
+ 30.2275760858
+ ],
+ "elevation": 113.4
+ },
+ {
+ "coord": [
+ 120.11660933416,
+ 30.227423442401
+ ],
+ "elevation": 137
+ },
+ {
+ "coord": [
+ 120.11656948113,
+ 30.227779565953
+ ],
+ "elevation": 148.5
+ },
+ {
+ "coord": [
+ 120.11622329162,
+ 30.228135226062
+ ],
+ "elevation": 159.4
+ },
+ {
+ "coord": [
+ 120.11555815443,
+ 30.228552151927
+ ],
+ "elevation": 176.9
+ },
+ {
+ "coord": [
+ 120.11535925104,
+ 30.228933739657
+ ],
+ "elevation": 185.5
+ },
+ {
+ "coord": [
+ 120.11508923593,
+ 30.228929830582
+ ],
+ "elevation": 196.4
+ },
+ {
+ "coord": [
+ 120.1146001061,
+ 30.22934780379
+ ],
+ "elevation": 230.7
+ },
+ {
+ "coord": [
+ 120.11445996865,
+ 30.229331065139
+ ],
+ "elevation": 223.8
+ },
+ {
+ "coord": [
+ 120.11431067403,
+ 30.22978764355
+ ],
+ "elevation": 230.9
+ },
+ {
+ "coord": [
+ 120.11302670426,
+ 30.23089800754
+ ],
+ "elevation": 248.3
+ },
+ {
+ "coord": [
+ 120.11221369625,
+ 30.230690045417
+ ],
+ "elevation": 252.6
+ },
+ {
+ "coord": [
+ 120.11084513509,
+ 30.230688382099
+ ],
+ "elevation": 262.3
+ },
+ {
+ "coord": [
+ 120.11075387695,
+ 30.231230018241
+ ],
+ "elevation": 251.1
+ },
+ {
+ "coord": [
+ 120.11047529772,
+ 30.231392448881
+ ],
+ "elevation": 246.7
+ },
+ {
+ "coord": [
+ 120.11044468237,
+ 30.231294617088
+ ],
+ "elevation": 247.3
+ },
+ {
+ "coord": [
+ 120.11025496346,
+ 30.231342673512
+ ],
+ "elevation": 239.5
+ },
+ {
+ "coord": [
+ 120.11030754358,
+ 30.231163266196
+ ],
+ "elevation": 228.5
+ },
+ {
+ "coord": [
+ 120.1100134074,
+ 30.231086634903
+ ],
+ "elevation": 215.8
+ },
+ {
+ "coord": [
+ 120.10942045927,
+ 30.231514831682
+ ],
+ "elevation": 190.8
+ },
+ {
+ "coord": [
+ 120.10871903343,
+ 30.231333695816
+ ],
+ "elevation": 172.8
+ },
+ {
+ "coord": [
+ 120.10807570214,
+ 30.231423668372
+ ],
+ "elevation": 161.5
+ },
+ {
+ "coord": [
+ 120.10763082528,
+ 30.231618832285
+ ],
+ "elevation": 145.8
+ },
+ {
+ "coord": [
+ 120.1076172214,
+ 30.231857645696
+ ],
+ "elevation": 138.8
+ },
+ {
+ "coord": [
+ 120.10689398326,
+ 30.232254414884
+ ],
+ "elevation": 129.4
+ },
+ {
+ "coord": [
+ 120.10654498471,
+ 30.232314939116
+ ],
+ "elevation": 130
+ },
+ {
+ "coord": [
+ 120.10625143658,
+ 30.23209170759
+ ],
+ "elevation": 114.9
+ },
+ {
+ "coord": [
+ 120.10561817759,
+ 30.232356818249
+ ],
+ "elevation": 113.9
+ },
+ {
+ "coord": [
+ 120.1052679884,
+ 30.232200325878
+ ],
+ "elevation": 111.9
+ },
+ {
+ "coord": [
+ 120.10469210597,
+ 30.232873117082
+ ],
+ "elevation": 104.2
+ },
+ {
+ "coord": [
+ 120.10389149564,
+ 30.23276397585
+ ],
+ "elevation": 115.4
+ },
+ {
+ "coord": [
+ 120.10356823004,
+ 30.233116970493
+ ],
+ "elevation": 104.7
+ },
+ {
+ "coord": [
+ 120.10317755244,
+ 30.232897606201
+ ],
+ "elevation": 108.1
+ },
+ {
+ "coord": [
+ 120.10252540126,
+ 30.232913879755
+ ],
+ "elevation": 122.2
+ },
+ {
+ "coord": [
+ 120.10279292553,
+ 30.233485195807
+ ],
+ "elevation": 115.3
+ },
+ {
+ "coord": [
+ 120.10276069499,
+ 30.233702758115
+ ],
+ "elevation": 123.8
+ },
+ {
+ "coord": [
+ 120.10215452954,
+ 30.233790321439
+ ],
+ "elevation": 128.3
+ },
+ {
+ "coord": [
+ 120.1009310109,
+ 30.234705361223
+ ],
+ "elevation": 145.5
+ },
+ {
+ "coord": [
+ 120.10070707153,
+ 30.235535810923
+ ],
+ "elevation": 141
+ },
+ {
+ "coord": [
+ 120.10094839226,
+ 30.236688233814
+ ],
+ "elevation": 94
+ },
+ {
+ "coord": [
+ 120.10068527845,
+ 30.237148154301
+ ],
+ "elevation": 96.5
+ },
+ {
+ "coord": [
+ 120.0991389033,
+ 30.237324990834
+ ],
+ "elevation": 97.5
+ },
+ {
+ "coord": [
+ 120.09909068745,
+ 30.237447538545
+ ],
+ "elevation": 87
+ },
+ {
+ "coord": [
+ 120.09889701846,
+ 30.237349749781
+ ],
+ "elevation": 96
+ },
+ {
+ "coord": [
+ 120.09909203766,
+ 30.237447835223
+ ],
+ "elevation": 99.5
+ },
+ {
+ "coord": [
+ 120.09885018257,
+ 30.23750460963
+ ],
+ "elevation": 103
+ },
+ {
+ "coord": [
+ 120.0985803733,
+ 30.237399683068
+ ],
+ "elevation": 93.5
+ },
+ {
+ "coord": [
+ 120.09846495357,
+ 30.237544566136
+ ],
+ "elevation": 93.5
+ },
+ {
+ "coord": [
+ 120.09691421859,
+ 30.237265892435
+ ],
+ "elevation": 120.5
+ },
+ {
+ "coord": [
+ 120.09640608591,
+ 30.237517005461
+ ],
+ "elevation": 114
+ },
+ {
+ "coord": [
+ 120.09592462988,
+ 30.237417530439
+ ],
+ "elevation": 114.5
+ },
+ {
+ "coord": [
+ 120.09578540325,
+ 30.237505515712
+ ],
+ "elevation": 115
+ },
+ {
+ "coord": [
+ 120.09585978634,
+ 30.237657781556
+ ],
+ "elevation": 113.5
+ },
+ {
+ "coord": [
+ 120.09513916535,
+ 30.237598831505
+ ],
+ "elevation": 111
+ },
+ {
+ "coord": [
+ 120.09537128694,
+ 30.237827879177
+ ],
+ "elevation": 111
+ },
+ {
+ "coord": [
+ 120.09463588238,
+ 30.237553240794
+ ],
+ "elevation": 115.5
+ },
+ {
+ "coord": [
+ 120.09434036469,
+ 30.237675194088
+ ],
+ "elevation": 121.5
+ },
+ {
+ "coord": [
+ 120.09435981434,
+ 30.237393110666
+ ],
+ "elevation": 136
+ },
+ {
+ "coord": [
+ 120.09416203126,
+ 30.237518267502
+ ],
+ "elevation": 138.5
+ },
+ {
+ "coord": [
+ 120.09442420859,
+ 30.237544095207
+ ],
+ "elevation": 134
+ },
+ {
+ "coord": [
+ 120.09406873401,
+ 30.237645935348
+ ],
+ "elevation": 134.5
+ },
+ {
+ "coord": [
+ 120.09421500188,
+ 30.23757678504
+ ],
+ "elevation": 135
+ },
+ {
+ "coord": [
+ 120.09417631939,
+ 30.237788505192
+ ],
+ "elevation": 135
+ },
+ {
+ "coord": [
+ 120.09401715446,
+ 30.23763248493
+ ],
+ "elevation": 134.5
+ },
+ {
+ "coord": [
+ 120.09346056016,
+ 30.237763679213
+ ],
+ "elevation": 135.5
+ },
+ {
+ "coord": [
+ 120.0931873532,
+ 30.237498100783
+ ],
+ "elevation": 146.5
+ },
+ {
+ "coord": [
+ 120.09307923181,
+ 30.237657251
+ ],
+ "elevation": 156.5
+ },
+ {
+ "coord": [
+ 120.09326434256,
+ 30.237542950418
+ ],
+ "elevation": 172.5
+ },
+ {
+ "coord": [
+ 120.09322848324,
+ 30.2373027005
+ ],
+ "elevation": 180.5
+ },
+ {
+ "coord": [
+ 120.09301091533,
+ 30.237355077676
+ ],
+ "elevation": 185
+ },
+ {
+ "coord": [
+ 120.09300231512,
+ 30.237102585171
+ ],
+ "elevation": 196.5
+ },
+ {
+ "coord": [
+ 120.09273277667,
+ 30.237014001726
+ ],
+ "elevation": 206.5
+ },
+ {
+ "coord": [
+ 120.09235667235,
+ 30.237023849668
+ ],
+ "elevation": 224.5
+ },
+ {
+ "coord": [
+ 120.09247034134,
+ 30.237020799186
+ ],
+ "elevation": 233.5
+ },
+ {
+ "coord": [
+ 120.09235415838,
+ 30.236931281436
+ ],
+ "elevation": 234
+ },
+ {
+ "coord": [
+ 120.09249523307,
+ 30.237077424673
+ ],
+ "elevation": 232
+ },
+ {
+ "coord": [
+ 120.09227857692,
+ 30.236953488801
+ ],
+ "elevation": 231
+ },
+ {
+ "coord": [
+ 120.09236889214,
+ 30.236802403617
+ ],
+ "elevation": 230.5
+ },
+ {
+ "coord": [
+ 120.09228327523,
+ 30.236774501485
+ ],
+ "elevation": 229
+ },
+ {
+ "coord": [
+ 120.0915479786,
+ 30.237013030973
+ ],
+ "elevation": 217.5
+ },
+ {
+ "coord": [
+ 120.09170832511,
+ 30.236965232782
+ ],
+ "elevation": 211.5
+ },
+ {
+ "coord": [
+ 120.09165932082,
+ 30.236819989034
+ ],
+ "elevation": 210.5
+ },
+ {
+ "coord": [
+ 120.09141982762,
+ 30.236834325375
+ ],
+ "elevation": 206.5
+ },
+ {
+ "coord": [
+ 120.09105978327,
+ 30.237018774407
+ ],
+ "elevation": 202
+ },
+ {
+ "coord": [
+ 120.09122130957,
+ 30.236776979775
+ ],
+ "elevation": 200.5
+ },
+ {
+ "coord": [
+ 120.09096738259,
+ 30.23666355983
+ ],
+ "elevation": 198.5
+ },
+ {
+ "coord": [
+ 120.09029968116,
+ 30.236770616438
+ ],
+ "elevation": 195
+ },
+ {
+ "coord": [
+ 120.08983820472,
+ 30.237106950056
+ ],
+ "elevation": 190.5
+ },
+ {
+ "coord": [
+ 120.08945597294,
+ 30.23699652666
+ ],
+ "elevation": 187.5
+ },
+ {
+ "coord": [
+ 120.0876611843,
+ 30.237218331451
+ ],
+ "elevation": 178.5
+ },
+ {
+ "coord": [
+ 120.08669674356,
+ 30.236824529725
+ ],
+ "elevation": 173.5
+ },
+ {
+ "coord": [
+ 120.08610557234,
+ 30.237036276042
+ ],
+ "elevation": 170.5
+ },
+ {
+ "coord": [
+ 120.08564989625,
+ 30.237442457947
+ ],
+ "elevation": 168
+ },
+ {
+ "coord": [
+ 120.08522299762,
+ 30.237438959045
+ ],
+ "elevation": 166.5
+ },
+ {
+ "coord": [
+ 120.08367382005,
+ 30.23833648123
+ ],
+ "elevation": 110.5
+ },
+ {
+ "coord": [
+ 120.0831192649,
+ 30.238661839459
+ ],
+ "elevation": 86
+ },
+ {
+ "coord": [
+ 120.0824703985,
+ 30.239346940464
+ ],
+ "elevation": 61.5
+ },
+ {
+ "coord": [
+ 120.08197389214,
+ 30.240261233378
+ ],
+ "elevation": 81
+ },
+ {
+ "coord": [
+ 120.08096505691,
+ 30.241227033723
+ ],
+ "elevation": 77
+ },
+ {
+ "coord": [
+ 120.08102040217,
+ 30.241688743963
+ ],
+ "elevation": 70
+ },
+ {
+ "coord": [
+ 120.08082296488,
+ 30.241902986785
+ ],
+ "elevation": 71
+ },
+ {
+ "coord": [
+ 120.08094825523,
+ 30.242275513241
+ ],
+ "elevation": 81
+ },
+ {
+ "coord": [
+ 120.08055098063,
+ 30.242746889455
+ ],
+ "elevation": 107.5
+ },
+ {
+ "coord": [
+ 120.08091800677,
+ 30.243117337651
+ ],
+ "elevation": 107
+ },
+ {
+ "coord": [
+ 120.08066541644,
+ 30.243874915017
+ ],
+ "elevation": 107.5
+ },
+ {
+ "coord": [
+ 120.08097997896,
+ 30.243973922986
+ ],
+ "elevation": 64.5
+ },
+ {
+ "coord": [
+ 120.08140628623,
+ 30.244707229452
+ ],
+ "elevation": 59
+ },
+ {
+ "coord": [
+ 120.0814422118,
+ 30.245739043448
+ ],
+ "elevation": 48
+ },
+ {
+ "coord": [
+ 120.08126715383,
+ 30.245873750445
+ ],
+ "elevation": 49.5
+ },
+ {
+ "coord": [
+ 120.08123670606,
+ 30.246507455249
+ ],
+ "elevation": 50
+ },
+ {
+ "coord": [
+ 120.08078182352,
+ 30.247203760082
+ ],
+ "elevation": 47.5
+ },
+ {
+ "coord": [
+ 120.0804165564,
+ 30.247246611479
+ ],
+ "elevation": 53
+ },
+ {
+ "coord": [
+ 120.07996844736,
+ 30.248026574444
+ ],
+ "elevation": 43
+ },
+ {
+ "coord": [
+ 120.07981347111,
+ 30.24801058254
+ ],
+ "elevation": 44.5
+ },
+ {
+ "coord": [
+ 120.07959467322,
+ 30.248271691651
+ ],
+ "elevation": 49
+ },
+ {
+ "coord": [
+ 120.07951968485,
+ 30.248199710779
+ ],
+ "elevation": 49.5
+ },
+ {
+ "coord": [
+ 120.0790985882,
+ 30.248757529539
+ ],
+ "elevation": 49.5
+ },
+ {
+ "coord": [
+ 120.07811028657,
+ 30.249422684983
+ ],
+ "elevation": 48.5
+ },
+ {
+ "coord": [
+ 120.07785098815,
+ 30.249844292932
+ ],
+ "elevation": 46.5
+ },
+ {
+ "coord": [
+ 120.07712986833,
+ 30.250333460636
+ ],
+ "elevation": 45
+ },
+ {
+ "coord": [
+ 120.07691931922,
+ 30.250306700182
+ ],
+ "elevation": 45.5
+ },
+ {
+ "coord": [
+ 120.0766375082,
+ 30.250747346303
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.07647587119,
+ 30.250670392312
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.07617433084,
+ 30.251169573892
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.07582942492,
+ 30.251353436392
+ ],
+ "elevation": 35.5
+ },
+ {
+ "coord": [
+ 120.07586188887,
+ 30.251615828299
+ ],
+ "elevation": 37
+ },
+ {
+ "coord": [
+ 120.07556771854,
+ 30.251948094016
+ ],
+ "elevation": 36.5
+ },
+ {
+ "coord": [
+ 120.07632605996,
+ 30.252467111065
+ ],
+ "elevation": 23
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.13018670197,
+ 30.238217082645
+ ],
+ "elevation": 37.4
+ },
+ {
+ "coord": [
+ 120.12937154076,
+ 30.237475794242
+ ],
+ "elevation": 30.8
+ },
+ {
+ "coord": [
+ 120.128924192,
+ 30.237780348789
+ ],
+ "elevation": 31.9
+ },
+ {
+ "coord": [
+ 120.12681765604,
+ 30.2399027653
+ ],
+ "elevation": 50.4
+ },
+ {
+ "coord": [
+ 120.124782757,
+ 30.239164881773
+ ],
+ "elevation": 50.3
+ },
+ {
+ "coord": [
+ 120.12436698458,
+ 30.238759304693
+ ],
+ "elevation": 44.4
+ },
+ {
+ "coord": [
+ 120.12409583171,
+ 30.238724806931
+ ],
+ "elevation": 44.8
+ },
+ {
+ "coord": [
+ 120.12379043387,
+ 30.238867599525
+ ],
+ "elevation": 44
+ },
+ {
+ "coord": [
+ 120.12335315486,
+ 30.239409040881
+ ],
+ "elevation": 45
+ },
+ {
+ "coord": [
+ 120.12289334773,
+ 30.239576323602
+ ],
+ "elevation": 59.4
+ },
+ {
+ "coord": [
+ 120.12290860002,
+ 30.23993914667
+ ],
+ "elevation": 63.2
+ },
+ {
+ "coord": [
+ 120.12259818816,
+ 30.240126064937
+ ],
+ "elevation": 67.5
+ },
+ {
+ "coord": [
+ 120.12224712934,
+ 30.240850234169
+ ],
+ "elevation": 70.8
+ },
+ {
+ "coord": [
+ 120.12171715852,
+ 30.240338643718
+ ],
+ "elevation": 66.3
+ },
+ {
+ "coord": [
+ 120.12068198465,
+ 30.240347213214
+ ],
+ "elevation": 80
+ },
+ {
+ "coord": [
+ 120.12046052898,
+ 30.240193193984
+ ],
+ "elevation": 91.5
+ },
+ {
+ "coord": [
+ 120.12041207812,
+ 30.239946814617
+ ],
+ "elevation": 105.9
+ },
+ {
+ "coord": [
+ 120.11990382652,
+ 30.239806704015
+ ],
+ "elevation": 138.2
+ },
+ {
+ "coord": [
+ 120.11902091467,
+ 30.240569447434
+ ],
+ "elevation": 172.1
+ },
+ {
+ "coord": [
+ 120.11849705069,
+ 30.240633959695
+ ],
+ "elevation": 141.8
+ },
+ {
+ "coord": [
+ 120.11796277986,
+ 30.240509562779
+ ],
+ "elevation": 156.1
+ },
+ {
+ "coord": [
+ 120.11710420607,
+ 30.240837648177
+ ],
+ "elevation": 142.9
+ },
+ {
+ "coord": [
+ 120.11697683427,
+ 30.241226416221
+ ],
+ "elevation": 169.7
+ },
+ {
+ "coord": [
+ 120.11673813044,
+ 30.240955631389
+ ],
+ "elevation": 172.7
+ },
+ {
+ "coord": [
+ 120.11672058437,
+ 30.240444010687
+ ],
+ "elevation": 194.7
+ },
+ {
+ "coord": [
+ 120.11676411586,
+ 30.241237240608
+ ],
+ "elevation": 165.1
+ },
+ {
+ "coord": [
+ 120.11692711865,
+ 30.241312795314
+ ],
+ "elevation": 172.9
+ },
+ {
+ "coord": [
+ 120.11673635426,
+ 30.241354201422
+ ],
+ "elevation": 171.8
+ },
+ {
+ "coord": [
+ 120.11658045558,
+ 30.241617036852
+ ],
+ "elevation": 169
+ },
+ {
+ "coord": [
+ 120.11657991939,
+ 30.242171363861
+ ],
+ "elevation": 178.5
+ },
+ {
+ "coord": [
+ 120.11618897769,
+ 30.242001057054
+ ],
+ "elevation": 192.2
+ },
+ {
+ "coord": [
+ 120.11584430043,
+ 30.242065511855
+ ],
+ "elevation": 182.7
+ },
+ {
+ "coord": [
+ 120.11458598225,
+ 30.243170765871
+ ],
+ "elevation": 115.5
+ },
+ {
+ "coord": [
+ 120.11371686338,
+ 30.243413792097
+ ],
+ "elevation": 88
+ },
+ {
+ "coord": [
+ 120.11351529201,
+ 30.243877028025
+ ],
+ "elevation": 68
+ },
+ {
+ "coord": [
+ 120.1130652519,
+ 30.243320000824
+ ],
+ "elevation": 67.5
+ },
+ {
+ "coord": [
+ 120.11140448008,
+ 30.242484465583
+ ],
+ "elevation": 60.6
+ },
+ {
+ "coord": [
+ 120.11135706939,
+ 30.242656396185
+ ],
+ "elevation": 55.4
+ },
+ {
+ "coord": [
+ 120.11263983781,
+ 30.243551891713
+ ],
+ "elevation": 52.5
+ },
+ {
+ "coord": [
+ 120.11295976437,
+ 30.244109103119
+ ],
+ "elevation": 79.2
+ },
+ {
+ "coord": [
+ 120.1122553903,
+ 30.245760561279
+ ],
+ "elevation": 51.6
+ },
+ {
+ "coord": [
+ 120.11182005283,
+ 30.245738369889
+ ],
+ "elevation": 42.8
+ },
+ {
+ "coord": [
+ 120.11221032939,
+ 30.245853865175
+ ],
+ "elevation": 57.5
+ },
+ {
+ "coord": [
+ 120.11194906755,
+ 30.247118699308
+ ],
+ "elevation": 53.5
+ },
+ {
+ "coord": [
+ 120.11217509127,
+ 30.247369622311
+ ],
+ "elevation": 57.3
+ },
+ {
+ "coord": [
+ 120.11225937415,
+ 30.247291474057
+ ],
+ "elevation": 64.9
+ },
+ {
+ "coord": [
+ 120.11228505787,
+ 30.24755526687
+ ],
+ "elevation": 54.5
+ },
+ {
+ "coord": [
+ 120.11367153178,
+ 30.249148432492
+ ],
+ "elevation": 55
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.1372665365,
+ 30.256984173695
+ ],
+ "elevation": 39.9
+ },
+ {
+ "coord": [
+ 120.137377432,
+ 30.254764105441
+ ],
+ "elevation": 38.1
+ },
+ {
+ "coord": [
+ 120.13772722386,
+ 30.253044298965
+ ],
+ "elevation": 32.3
+ },
+ {
+ "coord": [
+ 120.13760631282,
+ 30.252602470756
+ ],
+ "elevation": 47.6
+ },
+ {
+ "coord": [
+ 120.13793080155,
+ 30.251760355186
+ ],
+ "elevation": 44
+ },
+ {
+ "coord": [
+ 120.13807997966,
+ 30.250495138246
+ ],
+ "elevation": 44.3
+ },
+ {
+ "coord": [
+ 120.13829602438,
+ 30.250011979686
+ ],
+ "elevation": 42.9
+ },
+ {
+ "coord": [
+ 120.13794597464,
+ 30.250589644263
+ ],
+ "elevation": 30.9
+ },
+ {
+ "coord": [
+ 120.13836609857,
+ 30.249903760293
+ ],
+ "elevation": 22.5
+ },
+ {
+ "coord": [
+ 120.1381514293,
+ 30.250130501689
+ ],
+ "elevation": 37.4
+ },
+ {
+ "coord": [
+ 120.13811044421,
+ 30.249945892403
+ ],
+ "elevation": 48.4
+ },
+ {
+ "coord": [
+ 120.138035843,
+ 30.250148300447
+ ],
+ "elevation": 59.7
+ },
+ {
+ "coord": [
+ 120.13831953184,
+ 30.249852717704
+ ],
+ "elevation": 45
+ },
+ {
+ "coord": [
+ 120.13827879793,
+ 30.249649117327
+ ],
+ "elevation": 45.7
+ },
+ {
+ "coord": [
+ 120.1386698273,
+ 30.248955036022
+ ],
+ "elevation": 46.6
+ },
+ {
+ "coord": [
+ 120.13866969471,
+ 30.248822895353
+ ],
+ "elevation": 48.4
+ },
+ {
+ "coord": [
+ 120.13852634478,
+ 30.248836438617
+ ],
+ "elevation": 55.5
+ },
+ {
+ "coord": [
+ 120.13873210352,
+ 30.248122136335
+ ],
+ "elevation": 60.3
+ },
+ {
+ "coord": [
+ 120.13924252438,
+ 30.247353532458
+ ],
+ "elevation": 50.1
+ },
+ {
+ "coord": [
+ 120.13943939074,
+ 30.246162746569
+ ],
+ "elevation": 59.8
+ },
+ {
+ "coord": [
+ 120.13938128657,
+ 30.246013653904
+ ],
+ "elevation": 51.7
+ },
+ {
+ "coord": [
+ 120.13911521898,
+ 30.24603223312
+ ],
+ "elevation": 51.1
+ },
+ {
+ "coord": [
+ 120.13890785572,
+ 30.245441472488
+ ],
+ "elevation": 55.7
+ },
+ {
+ "coord": [
+ 120.13873559919,
+ 30.245392690493
+ ],
+ "elevation": 50.3
+ },
+ {
+ "coord": [
+ 120.13874709609,
+ 30.245193939827
+ ],
+ "elevation": 50.6
+ },
+ {
+ "coord": [
+ 120.13850366981,
+ 30.245241712516
+ ],
+ "elevation": 54.2
+ },
+ {
+ "coord": [
+ 120.13858050426,
+ 30.245092161642
+ ],
+ "elevation": 51.4
+ },
+ {
+ "coord": [
+ 120.13847467625,
+ 30.245085200295
+ ],
+ "elevation": 52.4
+ },
+ {
+ "coord": [
+ 120.13830066733,
+ 30.245171777284
+ ],
+ "elevation": 57.3
+ },
+ {
+ "coord": [
+ 120.13832958821,
+ 30.244988305791
+ ],
+ "elevation": 61.8
+ },
+ {
+ "coord": [
+ 120.13788366991,
+ 30.245164881345
+ ],
+ "elevation": 64.6
+ },
+ {
+ "coord": [
+ 120.13790113428,
+ 30.244682254158
+ ],
+ "elevation": 55.3
+ },
+ {
+ "coord": [
+ 120.13764741331,
+ 30.244729155671
+ ],
+ "elevation": 56.9
+ },
+ {
+ "coord": [
+ 120.13767140952,
+ 30.244520516512
+ ],
+ "elevation": 53.6
+ },
+ {
+ "coord": [
+ 120.13758256736,
+ 30.244616139314
+ ],
+ "elevation": 53.2
+ },
+ {
+ "coord": [
+ 120.13722385853,
+ 30.24436692175
+ ],
+ "elevation": 59.3
+ },
+ {
+ "coord": [
+ 120.13726891931,
+ 30.244012369034
+ ],
+ "elevation": 60.3
+ },
+ {
+ "coord": [
+ 120.13694822857,
+ 30.244226131566
+ ],
+ "elevation": 65.8
+ },
+ {
+ "coord": [
+ 120.13690925277,
+ 30.24386834773
+ ],
+ "elevation": 62.7
+ },
+ {
+ "coord": [
+ 120.13662203972,
+ 30.244088748253
+ ],
+ "elevation": 71.2
+ },
+ {
+ "coord": [
+ 120.13675060886,
+ 30.24349354887
+ ],
+ "elevation": 75.7
+ },
+ {
+ "coord": [
+ 120.13669613987,
+ 30.243411045871
+ ],
+ "elevation": 74.3
+ },
+ {
+ "coord": [
+ 120.13658447891,
+ 30.243511970151
+ ],
+ "elevation": 74.5
+ },
+ {
+ "coord": [
+ 120.13662370177,
+ 30.243305920316
+ ],
+ "elevation": 75.6
+ },
+ {
+ "coord": [
+ 120.13645705852,
+ 30.243350377138
+ ],
+ "elevation": 78.5
+ },
+ {
+ "coord": [
+ 120.13660853825,
+ 30.242552016706
+ ],
+ "elevation": 82.5
+ },
+ {
+ "coord": [
+ 120.13620045039,
+ 30.243152253216
+ ],
+ "elevation": 78.4
+ },
+ {
+ "coord": [
+ 120.136366642,
+ 30.242663656482
+ ],
+ "elevation": 78.7
+ },
+ {
+ "coord": [
+ 120.13657453645,
+ 30.242540674144
+ ],
+ "elevation": 90.2
+ },
+ {
+ "coord": [
+ 120.13659451585,
+ 30.242670454198
+ ],
+ "elevation": 95.7
+ },
+ {
+ "coord": [
+ 120.13668638964,
+ 30.242632670368
+ ],
+ "elevation": 101.1
+ },
+ {
+ "coord": [
+ 120.13704976873,
+ 30.242151558211
+ ],
+ "elevation": 117.9
+ },
+ {
+ "coord": [
+ 120.13712164945,
+ 30.242237669498
+ ],
+ "elevation": 117.3
+ },
+ {
+ "coord": [
+ 120.13732925245,
+ 30.241784883347
+ ],
+ "elevation": 108.5
+ },
+ {
+ "coord": [
+ 120.13717326851,
+ 30.241909104841
+ ],
+ "elevation": 84.2
+ },
+ {
+ "coord": [
+ 120.13771102937,
+ 30.241148994755
+ ],
+ "elevation": 90.5
+ },
+ {
+ "coord": [
+ 120.13816453618,
+ 30.240953405464
+ ],
+ "elevation": 78.4
+ },
+ {
+ "coord": [
+ 120.13860557941,
+ 30.240485097945
+ ],
+ "elevation": 64.1
+ },
+ {
+ "coord": [
+ 120.13912987756,
+ 30.240259604923
+ ],
+ "elevation": 65.3
+ },
+ {
+ "coord": [
+ 120.13957252856,
+ 30.23967183096
+ ],
+ "elevation": 77.8
+ },
+ {
+ "coord": [
+ 120.13952560576,
+ 30.239827323632
+ ],
+ "elevation": 56.5
+ },
+ {
+ "coord": [
+ 120.14018189958,
+ 30.239233799566
+ ],
+ "elevation": 56.4
+ },
+ {
+ "coord": [
+ 120.13994312517,
+ 30.23967006354
+ ],
+ "elevation": 23.6
+ },
+ {
+ "coord": [
+ 120.13999779908,
+ 30.2393625133
+ ],
+ "elevation": 43
+ },
+ {
+ "coord": [
+ 120.1399468907,
+ 30.239623890414
+ ],
+ "elevation": 20.5
+ },
+ {
+ "coord": [
+ 120.1399512907,
+ 30.239386146668
+ ],
+ "elevation": 22.5
+ },
+ {
+ "coord": [
+ 120.13987961583,
+ 30.239556063735
+ ],
+ "elevation": 32.7
+ },
+ {
+ "coord": [
+ 120.13997116033,
+ 30.23967840314
+ ],
+ "elevation": 32.6
+ },
+ {
+ "coord": [
+ 120.1397689223,
+ 30.239324059193
+ ],
+ "elevation": -13.7
+ },
+ {
+ "coord": [
+ 120.13981697144,
+ 30.239492247556
+ ],
+ "elevation": -0.1
+ },
+ {
+ "coord": [
+ 120.13937600718,
+ 30.239304334882
+ ],
+ "elevation": 5.9
+ },
+ {
+ "coord": [
+ 120.13897143447,
+ 30.239296294258
+ ],
+ "elevation": 1.5
+ },
+ {
+ "coord": [
+ 120.13895933416,
+ 30.239446481577
+ ],
+ "elevation": 30.4
+ },
+ {
+ "coord": [
+ 120.13893473474,
+ 30.239325748306
+ ],
+ "elevation": 11.4
+ },
+ {
+ "coord": [
+ 120.13860205466,
+ 30.239360179363
+ ],
+ "elevation": 4.6
+ },
+ {
+ "coord": [
+ 120.13802871659,
+ 30.239160800002
+ ],
+ "elevation": 4.8
+ },
+ {
+ "coord": [
+ 120.13756796807,
+ 30.238588537679
+ ],
+ "elevation": 3.7
+ },
+ {
+ "coord": [
+ 120.1378058588,
+ 30.237893875918
+ ],
+ "elevation": 5.3
+ },
+ {
+ "coord": [
+ 120.13839079758,
+ 30.238022409501
+ ],
+ "elevation": 8.8
+ },
+ {
+ "coord": [
+ 120.13836300367,
+ 30.238266101833
+ ],
+ "elevation": -2
+ },
+ {
+ "coord": [
+ 120.13848459851,
+ 30.238264485372
+ ],
+ "elevation": -2.1
+ },
+ {
+ "coord": [
+ 120.13834766791,
+ 30.238449149458
+ ],
+ "elevation": -13
+ },
+ {
+ "coord": [
+ 120.13840820609,
+ 30.238021131922
+ ],
+ "elevation": 17.6
+ },
+ {
+ "coord": [
+ 120.13857167074,
+ 30.237992724391
+ ],
+ "elevation": 19.1
+ },
+ {
+ "coord": [
+ 120.13891822199,
+ 30.238250910981
+ ],
+ "elevation": 13.6
+ },
+ {
+ "coord": [
+ 120.13981448906,
+ 30.238001295039
+ ],
+ "elevation": 7.8
+ },
+ {
+ "coord": [
+ 120.14015635229,
+ 30.236903090767
+ ],
+ "elevation": 2.7
+ },
+ {
+ "coord": [
+ 120.13861887198,
+ 30.236020159667
+ ],
+ "elevation": 20.5
+ },
+ {
+ "coord": [
+ 120.13847876175,
+ 30.236005715252
+ ],
+ "elevation": 9.2
+ },
+ {
+ "coord": [
+ 120.13841390859,
+ 30.236191209431
+ ],
+ "elevation": -0.4
+ },
+ {
+ "coord": [
+ 120.13816021726,
+ 30.235683075623
+ ],
+ "elevation": 8.3
+ },
+ {
+ "coord": [
+ 120.13822806814,
+ 30.235504888403
+ ],
+ "elevation": -0.7
+ },
+ {
+ "coord": [
+ 120.13828357292,
+ 30.23583638811
+ ],
+ "elevation": 10.8
+ },
+ {
+ "coord": [
+ 120.13810958458,
+ 30.235953325231
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.13838427056,
+ 30.235893345612
+ ],
+ "elevation": 23.5
+ },
+ {
+ "coord": [
+ 120.1383044575,
+ 30.236079541617
+ ],
+ "elevation": 26.8
+ },
+ {
+ "coord": [
+ 120.13862054705,
+ 30.236380195625
+ ],
+ "elevation": 19.6
+ },
+ {
+ "coord": [
+ 120.13776122507,
+ 30.236037628131
+ ],
+ "elevation": 16.8
+ },
+ {
+ "coord": [
+ 120.13765559694,
+ 30.235926134446
+ ],
+ "elevation": 14.3
+ },
+ {
+ "coord": [
+ 120.1377732778,
+ 30.235822065762
+ ],
+ "elevation": 35
+ },
+ {
+ "coord": [
+ 120.13779012919,
+ 30.236121435505
+ ],
+ "elevation": 15.8
+ },
+ {
+ "coord": [
+ 120.13739388148,
+ 30.236154857706
+ ],
+ "elevation": 8.4
+ },
+ {
+ "coord": [
+ 120.13731970128,
+ 30.235919286618
+ ],
+ "elevation": 21.6
+ },
+ {
+ "coord": [
+ 120.13702125437,
+ 30.235792589976
+ ],
+ "elevation": 30.3
+ },
+ {
+ "coord": [
+ 120.13724180771,
+ 30.235789838468
+ ],
+ "elevation": 44.5
+ },
+ {
+ "coord": [
+ 120.13678086997,
+ 30.235490249464
+ ],
+ "elevation": 28.2
+ },
+ {
+ "coord": [
+ 120.13672859197,
+ 30.235091090924
+ ],
+ "elevation": 34.1
+ },
+ {
+ "coord": [
+ 120.13665249457,
+ 30.235142020567
+ ],
+ "elevation": 28.9
+ },
+ {
+ "coord": [
+ 120.13687760981,
+ 30.235087197338
+ ],
+ "elevation": 45.4
+ },
+ {
+ "coord": [
+ 120.13649502771,
+ 30.234789985072
+ ],
+ "elevation": 33.2
+ },
+ {
+ "coord": [
+ 120.13623915062,
+ 30.234779359752
+ ],
+ "elevation": 36.3
+ },
+ {
+ "coord": [
+ 120.13603950402,
+ 30.235016161163
+ ],
+ "elevation": 42.8
+ },
+ {
+ "coord": [
+ 120.13567699566,
+ 30.234907614112
+ ],
+ "elevation": 47.4
+ },
+ {
+ "coord": [
+ 120.13498082372,
+ 30.234948244383
+ ],
+ "elevation": 67.8
+ },
+ {
+ "coord": [
+ 120.13487111408,
+ 30.235076387543
+ ],
+ "elevation": 69.6
+ },
+ {
+ "coord": [
+ 120.1345255221,
+ 30.234933150367
+ ],
+ "elevation": 83.3
+ },
+ {
+ "coord": [
+ 120.13331112576,
+ 30.235065366616
+ ],
+ "elevation": 80.9
+ },
+ {
+ "coord": [
+ 120.13281883321,
+ 30.235438624183
+ ],
+ "elevation": 118.7
+ },
+ {
+ "coord": [
+ 120.132148201,
+ 30.235585837763
+ ],
+ "elevation": 107.4
+ },
+ {
+ "coord": [
+ 120.13231217246,
+ 30.235458743012
+ ],
+ "elevation": 135.6
+ },
+ {
+ "coord": [
+ 120.13223260773,
+ 30.235495282784
+ ],
+ "elevation": 127
+ },
+ {
+ "coord": [
+ 120.13251959241,
+ 30.23561978718
+ ],
+ "elevation": 136.6
+ },
+ {
+ "coord": [
+ 120.13220861407,
+ 30.235709766874
+ ],
+ "elevation": 107.9
+ },
+ {
+ "coord": [
+ 120.13210606012,
+ 30.235544559023
+ ],
+ "elevation": 82
+ },
+ {
+ "coord": [
+ 120.13251489367,
+ 30.235525935775
+ ],
+ "elevation": 147.5
+ },
+ {
+ "coord": [
+ 120.13246063144,
+ 30.235610367297
+ ],
+ "elevation": 151.3
+ },
+ {
+ "coord": [
+ 120.13225515395,
+ 30.235493798308
+ ],
+ "elevation": 119.6
+ },
+ {
+ "coord": [
+ 120.13230578127,
+ 30.23560936623
+ ],
+ "elevation": 145.6
+ },
+ {
+ "coord": [
+ 120.13226461913,
+ 30.235443548993
+ ],
+ "elevation": 116.2
+ },
+ {
+ "coord": [
+ 120.13241948837,
+ 30.235468704003
+ ],
+ "elevation": 139.7
+ },
+ {
+ "coord": [
+ 120.13198608813,
+ 30.235336566566
+ ],
+ "elevation": 133.4
+ },
+ {
+ "coord": [
+ 120.1314650355,
+ 30.235561754506
+ ],
+ "elevation": 120
+ },
+ {
+ "coord": [
+ 120.1313886357,
+ 30.235785973724
+ ],
+ "elevation": 117.4
+ },
+ {
+ "coord": [
+ 120.13150462118,
+ 30.236422210489
+ ],
+ "elevation": 98
+ },
+ {
+ "coord": [
+ 120.13187118929,
+ 30.236901119783
+ ],
+ "elevation": 75.5
+ },
+ {
+ "coord": [
+ 120.13159488187,
+ 30.237130741512
+ ],
+ "elevation": 62.6
+ },
+ {
+ "coord": [
+ 120.13151995141,
+ 30.237470551897
+ ],
+ "elevation": 46
+ },
+ {
+ "coord": [
+ 120.13130508628,
+ 30.237440126781
+ ],
+ "elevation": 37.3
+ },
+ {
+ "coord": [
+ 120.13124746151,
+ 30.237687854239
+ ],
+ "elevation": 30.2
+ },
+ {
+ "coord": [
+ 120.13038735206,
+ 30.238206822739
+ ],
+ "elevation": 29.7
+ },
+ {
+ "coord": [
+ 120.12938483456,
+ 30.237466801485
+ ],
+ "elevation": 18.3
+ },
+ {
+ "coord": [
+ 120.1282026802,
+ 30.238561688369
+ ],
+ "elevation": 19.3
+ },
+ {
+ "coord": [
+ 120.1278781457,
+ 30.238598027609
+ ],
+ "elevation": 20.4
+ },
+ {
+ "coord": [
+ 120.12799874728,
+ 30.238719130353
+ ],
+ "elevation": 22.8
+ },
+ {
+ "coord": [
+ 120.12682824771,
+ 30.23991442825
+ ],
+ "elevation": 45
+ },
+ {
+ "coord": [
+ 120.12474475418,
+ 30.239121407164
+ ],
+ "elevation": 50.1
+ },
+ {
+ "coord": [
+ 120.1242985569,
+ 30.238648190543
+ ],
+ "elevation": 39.8
+ },
+ {
+ "coord": [
+ 120.12381260386,
+ 30.238803893703
+ ],
+ "elevation": 45.4
+ },
+ {
+ "coord": [
+ 120.1235241997,
+ 30.239123014954
+ ],
+ "elevation": 40.4
+ },
+ {
+ "coord": [
+ 120.12361779355,
+ 30.239200063034
+ ],
+ "elevation": 57.4
+ },
+ {
+ "coord": [
+ 120.1235242191,
+ 30.239143636169
+ ],
+ "elevation": 55.1
+ },
+ {
+ "coord": [
+ 120.12296981731,
+ 30.239616470675
+ ],
+ "elevation": 49.5
+ },
+ {
+ "coord": [
+ 120.12293735217,
+ 30.239962851061
+ ],
+ "elevation": 53.5
+ },
+ {
+ "coord": [
+ 120.12259394362,
+ 30.240221557949
+ ],
+ "elevation": 63.6
+ },
+ {
+ "coord": [
+ 120.12235671227,
+ 30.24067620889
+ ],
+ "elevation": 80.4
+ },
+ {
+ "coord": [
+ 120.12200005359,
+ 30.240630230392
+ ],
+ "elevation": 61.9
+ },
+ {
+ "coord": [
+ 120.12178594388,
+ 30.240299885622
+ ],
+ "elevation": 68.4
+ },
+ {
+ "coord": [
+ 120.12154146311,
+ 30.240212195042
+ ],
+ "elevation": 77.8
+ },
+ {
+ "coord": [
+ 120.12087000764,
+ 30.240372394616
+ ],
+ "elevation": 91.1
+ },
+ {
+ "coord": [
+ 120.12038421627,
+ 30.239985994655
+ ],
+ "elevation": 108.5
+ },
+ {
+ "coord": [
+ 120.11992307929,
+ 30.239831245215
+ ],
+ "elevation": 126.6
+ },
+ {
+ "coord": [
+ 120.11890742473,
+ 30.240533358695
+ ],
+ "elevation": 152.1
+ },
+ {
+ "coord": [
+ 120.11896771245,
+ 30.240435028743
+ ],
+ "elevation": 175.2
+ },
+ {
+ "coord": [
+ 120.11772921595,
+ 30.240567340164
+ ],
+ "elevation": 155.1
+ },
+ {
+ "coord": [
+ 120.11708050956,
+ 30.240962793178
+ ],
+ "elevation": 164.6
+ },
+ {
+ "coord": [
+ 120.11685453056,
+ 30.24125732957
+ ],
+ "elevation": 154.8
+ },
+ {
+ "coord": [
+ 120.11717705528,
+ 30.241710080828
+ ],
+ "elevation": 160.2
+ },
+ {
+ "coord": [
+ 120.11747797211,
+ 30.242730185875
+ ],
+ "elevation": 132.4
+ },
+ {
+ "coord": [
+ 120.11774858544,
+ 30.242922937974
+ ],
+ "elevation": 139.1
+ },
+ {
+ "coord": [
+ 120.11735655896,
+ 30.243124476111
+ ],
+ "elevation": 131.4
+ },
+ {
+ "coord": [
+ 120.11744031006,
+ 30.243506420148
+ ],
+ "elevation": 120.3
+ },
+ {
+ "coord": [
+ 120.1173384116,
+ 30.243653419585
+ ],
+ "elevation": 118.4
+ },
+ {
+ "coord": [
+ 120.11748177096,
+ 30.244092041471
+ ],
+ "elevation": 109.2
+ },
+ {
+ "coord": [
+ 120.11802693714,
+ 30.244605038977
+ ],
+ "elevation": 96.7
+ },
+ {
+ "coord": [
+ 120.11830416014,
+ 30.245141219962
+ ],
+ "elevation": 81.9
+ },
+ {
+ "coord": [
+ 120.11816320427,
+ 30.245502344008
+ ],
+ "elevation": 61.1
+ },
+ {
+ "coord": [
+ 120.11793615934,
+ 30.24558924882
+ ],
+ "elevation": 45.1
+ },
+ {
+ "coord": [
+ 120.11762560036,
+ 30.24632851059
+ ],
+ "elevation": 41.2
+ },
+ {
+ "coord": [
+ 120.11750610586,
+ 30.246743998357
+ ],
+ "elevation": 32.5
+ },
+ {
+ "coord": [
+ 120.11758149361,
+ 30.247146483568
+ ],
+ "elevation": 44
+ },
+ {
+ "coord": [
+ 120.11701080682,
+ 30.247038685307
+ ],
+ "elevation": 43.3
+ },
+ {
+ "coord": [
+ 120.11591855071,
+ 30.246215750348
+ ],
+ "elevation": 59.5
+ },
+ {
+ "coord": [
+ 120.11528898824,
+ 30.246008842318
+ ],
+ "elevation": 52.3
+ },
+ {
+ "coord": [
+ 120.11485238934,
+ 30.246599521791
+ ],
+ "elevation": 45.4
+ },
+ {
+ "coord": [
+ 120.11464470679,
+ 30.246678937349
+ ],
+ "elevation": 45.7
+ },
+ {
+ "coord": [
+ 120.112608899,
+ 30.246653926677
+ ],
+ "elevation": 45.6
+ },
+ {
+ "coord": [
+ 120.11234414601,
+ 30.246893696324
+ ],
+ "elevation": 39.9
+ },
+ {
+ "coord": [
+ 120.1123444072,
+ 30.247151737496
+ ],
+ "elevation": 46.9
+ },
+ {
+ "coord": [
+ 120.11205387348,
+ 30.24728557321
+ ],
+ "elevation": 44.7
+ },
+ {
+ "coord": [
+ 120.11224221946,
+ 30.247440216324
+ ],
+ "elevation": 46.5
+ },
+ {
+ "coord": [
+ 120.11234181168,
+ 30.247793949871
+ ],
+ "elevation": 34.5
+ },
+ {
+ "coord": [
+ 120.11223640912,
+ 30.247844699444
+ ],
+ "elevation": 46.5
+ },
+ {
+ "coord": [
+ 120.11265788504,
+ 30.248032098354
+ ],
+ "elevation": 43.8
+ },
+ {
+ "coord": [
+ 120.11311119242,
+ 30.248644387821
+ ],
+ "elevation": 28.9
+ },
+ {
+ "coord": [
+ 120.11361975855,
+ 30.249034135977
+ ],
+ "elevation": 38.3
+ },
+ {
+ "coord": [
+ 120.1133976795,
+ 30.249270548108
+ ],
+ "elevation": 39.5
+ },
+ {
+ "coord": [
+ 120.10977583573,
+ 30.247304464032
+ ],
+ "elevation": 49.9
+ },
+ {
+ "coord": [
+ 120.10942428977,
+ 30.247644459811
+ ],
+ "elevation": 67.5
+ },
+ {
+ "coord": [
+ 120.10905604615,
+ 30.24775485223
+ ],
+ "elevation": 69
+ },
+ {
+ "coord": [
+ 120.10868770897,
+ 30.248287624418
+ ],
+ "elevation": 65.1
+ },
+ {
+ "coord": [
+ 120.10882631821,
+ 30.248804711305
+ ],
+ "elevation": 73.2
+ },
+ {
+ "coord": [
+ 120.10859490788,
+ 30.24898190826
+ ],
+ "elevation": 99.6
+ },
+ {
+ "coord": [
+ 120.10887383317,
+ 30.249297352731
+ ],
+ "elevation": 92
+ },
+ {
+ "coord": [
+ 120.10880022027,
+ 30.249459040726
+ ],
+ "elevation": 105.7
+ },
+ {
+ "coord": [
+ 120.1085451432,
+ 30.249478771625
+ ],
+ "elevation": 115.5
+ },
+ {
+ "coord": [
+ 120.10853956255,
+ 30.249844169915
+ ],
+ "elevation": 125.6
+ },
+ {
+ "coord": [
+ 120.10720252787,
+ 30.249478921985
+ ],
+ "elevation": 164.8
+ },
+ {
+ "coord": [
+ 120.10649371367,
+ 30.249565927176
+ ],
+ "elevation": 165.6
+ },
+ {
+ "coord": [
+ 120.10611442117,
+ 30.249823409136
+ ],
+ "elevation": 186.4
+ },
+ {
+ "coord": [
+ 120.10620149088,
+ 30.249909505827
+ ],
+ "elevation": 186
+ },
+ {
+ "coord": [
+ 120.10595694901,
+ 30.250110574296
+ ],
+ "elevation": 192.2
+ },
+ {
+ "coord": [
+ 120.10545879888,
+ 30.250065591359
+ ],
+ "elevation": 194.1
+ },
+ {
+ "coord": [
+ 120.10561932269,
+ 30.249868596194
+ ],
+ "elevation": 198.7
+ },
+ {
+ "coord": [
+ 120.10554482988,
+ 30.250473766777
+ ],
+ "elevation": 221.8
+ },
+ {
+ "coord": [
+ 120.10520795068,
+ 30.250423568344
+ ],
+ "elevation": 229.7
+ },
+ {
+ "coord": [
+ 120.10532500055,
+ 30.250517535707
+ ],
+ "elevation": 236.5
+ },
+ {
+ "coord": [
+ 120.10515464218,
+ 30.250598212446
+ ],
+ "elevation": 240.6
+ },
+ {
+ "coord": [
+ 120.10525926863,
+ 30.250969271115
+ ],
+ "elevation": 258.3
+ },
+ {
+ "coord": [
+ 120.10486518864,
+ 30.250968788756
+ ],
+ "elevation": 260.9
+ },
+ {
+ "coord": [
+ 120.10516316448,
+ 30.251300016948
+ ],
+ "elevation": 278.2
+ },
+ {
+ "coord": [
+ 120.10483637094,
+ 30.251328891839
+ ],
+ "elevation": 288.9
+ },
+ {
+ "coord": [
+ 120.10513845586,
+ 30.251444486411
+ ],
+ "elevation": 304.3
+ },
+ {
+ "coord": [
+ 120.10495781067,
+ 30.251498925307
+ ],
+ "elevation": 283.9
+ },
+ {
+ "coord": [
+ 120.10507132305,
+ 30.251293839706
+ ],
+ "elevation": 305.6
+ },
+ {
+ "coord": [
+ 120.10497328614,
+ 30.251580860149
+ ],
+ "elevation": 304.6
+ },
+ {
+ "coord": [
+ 120.1046336095,
+ 30.251686543865
+ ],
+ "elevation": 306.1
+ },
+ {
+ "coord": [
+ 120.10344441042,
+ 30.252742933992
+ ],
+ "elevation": 276.3
+ },
+ {
+ "coord": [
+ 120.10389582386,
+ 30.253170089294
+ ],
+ "elevation": 297
+ },
+ {
+ "coord": [
+ 120.10386937388,
+ 30.253474326021
+ ],
+ "elevation": 282.9
+ },
+ {
+ "coord": [
+ 120.10413458305,
+ 30.254049837723
+ ],
+ "elevation": 266.3
+ },
+ {
+ "coord": [
+ 120.10465352367,
+ 30.254461484816
+ ],
+ "elevation": 268.6
+ },
+ {
+ "coord": [
+ 120.10522615094,
+ 30.254480509756
+ ],
+ "elevation": 251.6
+ },
+ {
+ "coord": [
+ 120.10683335797,
+ 30.254096966182
+ ],
+ "elevation": 240.5
+ },
+ {
+ "coord": [
+ 120.10820661367,
+ 30.254580258614
+ ],
+ "elevation": 233.1
+ },
+ {
+ "coord": [
+ 120.10878910225,
+ 30.255050694839
+ ],
+ "elevation": 232.4
+ },
+ {
+ "coord": [
+ 120.10931649614,
+ 30.255211343388
+ ],
+ "elevation": 229.1
+ },
+ {
+ "coord": [
+ 120.10943145698,
+ 30.255323199101
+ ],
+ "elevation": 232.7
+ },
+ {
+ "coord": [
+ 120.10931259431,
+ 30.255380050066
+ ],
+ "elevation": 240.9
+ },
+ {
+ "coord": [
+ 120.11042533915,
+ 30.255380934988
+ ],
+ "elevation": 228.5
+ },
+ {
+ "coord": [
+ 120.1108698888,
+ 30.255852996331
+ ],
+ "elevation": 229.1
+ },
+ {
+ "coord": [
+ 120.11130666853,
+ 30.256064887958
+ ],
+ "elevation": 224.2
+ },
+ {
+ "coord": [
+ 120.11275143921,
+ 30.256204360937
+ ],
+ "elevation": 195.4
+ },
+ {
+ "coord": [
+ 120.11334236671,
+ 30.256862483805
+ ],
+ "elevation": 181.6
+ },
+ {
+ "coord": [
+ 120.11387595745,
+ 30.257141177596
+ ],
+ "elevation": 180.9
+ },
+ {
+ "coord": [
+ 120.11440051067,
+ 30.258194984165
+ ],
+ "elevation": 170.2
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.16793972175,
+ 30.233632742613
+ ],
+ "elevation": 60.3
+ },
+ {
+ "coord": [
+ 120.16707586384,
+ 30.234015653168
+ ],
+ "elevation": 56.8
+ },
+ {
+ "coord": [
+ 120.166630377,
+ 30.234484364368
+ ],
+ "elevation": 37.2
+ },
+ {
+ "coord": [
+ 120.16595594858,
+ 30.234508717458
+ ],
+ "elevation": 49.5
+ },
+ {
+ "coord": [
+ 120.16585529229,
+ 30.234344604504
+ ],
+ "elevation": 58.5
+ },
+ {
+ "coord": [
+ 120.16600297131,
+ 30.233395225942
+ ],
+ "elevation": 63.8
+ },
+ {
+ "coord": [
+ 120.16586356226,
+ 30.233134891914
+ ],
+ "elevation": 63
+ },
+ {
+ "coord": [
+ 120.1658980693,
+ 30.232679578864
+ ],
+ "elevation": 79.4
+ },
+ {
+ "coord": [
+ 120.16555419957,
+ 30.231862654997
+ ],
+ "elevation": 89.2
+ },
+ {
+ "coord": [
+ 120.16583743146,
+ 30.231023619967
+ ],
+ "elevation": 116.2
+ },
+ {
+ "coord": [
+ 120.16628783296,
+ 30.230815681178
+ ],
+ "elevation": 133.5
+ },
+ {
+ "coord": [
+ 120.16642197855,
+ 30.229833213299
+ ],
+ "elevation": 134.6
+ },
+ {
+ "coord": [
+ 120.16548140261,
+ 30.227758039885
+ ],
+ "elevation": 165.6
+ },
+ {
+ "coord": [
+ 120.16565964605,
+ 30.227436540302
+ ],
+ "elevation": 177
+ },
+ {
+ "coord": [
+ 120.16603182151,
+ 30.227551093757
+ ],
+ "elevation": 166
+ },
+ {
+ "coord": [
+ 120.16785280995,
+ 30.227411680048
+ ],
+ "elevation": 163.7
+ },
+ {
+ "coord": [
+ 120.16888578428,
+ 30.227063243202
+ ],
+ "elevation": 172.3
+ },
+ {
+ "coord": [
+ 120.16792222823,
+ 30.22736420478
+ ],
+ "elevation": 172.4
+ },
+ {
+ "coord": [
+ 120.16661464984,
+ 30.227395854041
+ ],
+ "elevation": 176.7
+ },
+ {
+ "coord": [
+ 120.16595393434,
+ 30.22758521019
+ ],
+ "elevation": 175.7
+ },
+ {
+ "coord": [
+ 120.1656487523,
+ 30.227441334385
+ ],
+ "elevation": 173.8
+ },
+ {
+ "coord": [
+ 120.1654518963,
+ 30.227143476023
+ ],
+ "elevation": 180.8
+ },
+ {
+ "coord": [
+ 120.16481703019,
+ 30.226954261519
+ ],
+ "elevation": 178.6
+ },
+ {
+ "coord": [
+ 120.16401283971,
+ 30.225553784795
+ ],
+ "elevation": 163.3
+ },
+ {
+ "coord": [
+ 120.1633052684,
+ 30.225048787997
+ ],
+ "elevation": 168.3
+ },
+ {
+ "coord": [
+ 120.16324507903,
+ 30.224515115274
+ ],
+ "elevation": 187.4
+ },
+ {
+ "coord": [
+ 120.16309294142,
+ 30.224301576698
+ ],
+ "elevation": 195.6
+ },
+ {
+ "coord": [
+ 120.16194877144,
+ 30.22302467602
+ ],
+ "elevation": 204.5
+ },
+ {
+ "coord": [
+ 120.16213789899,
+ 30.22305274082
+ ],
+ "elevation": 209.3
+ },
+ {
+ "coord": [
+ 120.16163772987,
+ 30.222721293948
+ ],
+ "elevation": 210.3
+ },
+ {
+ "coord": [
+ 120.16154487837,
+ 30.222142140343
+ ],
+ "elevation": 205.1
+ },
+ {
+ "coord": [
+ 120.16112475136,
+ 30.221562710765
+ ],
+ "elevation": 190.4
+ },
+ {
+ "coord": [
+ 120.16099821021,
+ 30.222142326079
+ ],
+ "elevation": 174.1
+ },
+ {
+ "coord": [
+ 120.16039508637,
+ 30.222863085533
+ ],
+ "elevation": 141.4
+ },
+ {
+ "coord": [
+ 120.16032978084,
+ 30.223139379797
+ ],
+ "elevation": 147.8
+ },
+ {
+ "coord": [
+ 120.1605487814,
+ 30.223552605115
+ ],
+ "elevation": 125.9
+ },
+ {
+ "coord": [
+ 120.16041882249,
+ 30.223646691951
+ ],
+ "elevation": 129.9
+ },
+ {
+ "coord": [
+ 120.16014188469,
+ 30.223532151403
+ ],
+ "elevation": 119.4
+ },
+ {
+ "coord": [
+ 120.15999230795,
+ 30.223644787561
+ ],
+ "elevation": 109.7
+ },
+ {
+ "coord": [
+ 120.15983089869,
+ 30.223473599362
+ ],
+ "elevation": 103.3
+ },
+ {
+ "coord": [
+ 120.15934521911,
+ 30.223439739117
+ ],
+ "elevation": 103.1
+ },
+ {
+ "coord": [
+ 120.15916662939,
+ 30.223247726332
+ ],
+ "elevation": 89.4
+ },
+ {
+ "coord": [
+ 120.15915991849,
+ 30.222786108358
+ ],
+ "elevation": 93.6
+ },
+ {
+ "coord": [
+ 120.15749424703,
+ 30.222450727047
+ ],
+ "elevation": 120.7
+ },
+ {
+ "coord": [
+ 120.15679030425,
+ 30.221816370117
+ ],
+ "elevation": 123.8
+ },
+ {
+ "coord": [
+ 120.15632965046,
+ 30.221705384082
+ ],
+ "elevation": 138
+ },
+ {
+ "coord": [
+ 120.1558458934,
+ 30.221805079398
+ ],
+ "elevation": 124.8
+ },
+ {
+ "coord": [
+ 120.15551512812,
+ 30.221267082069
+ ],
+ "elevation": 152.1
+ },
+ {
+ "coord": [
+ 120.1550594039,
+ 30.221214585829
+ ],
+ "elevation": 138.8
+ },
+ {
+ "coord": [
+ 120.15454745598,
+ 30.220846534161
+ ],
+ "elevation": 149.8
+ },
+ {
+ "coord": [
+ 120.15433269581,
+ 30.220879301659
+ ],
+ "elevation": 152.6
+ },
+ {
+ "coord": [
+ 120.15422790899,
+ 30.220345197903
+ ],
+ "elevation": 171.2
+ },
+ {
+ "coord": [
+ 120.15395938754,
+ 30.220054503841
+ ],
+ "elevation": 177.6
+ },
+ {
+ "coord": [
+ 120.15404062211,
+ 30.220130035044
+ ],
+ "elevation": 192.1
+ },
+ {
+ "coord": [
+ 120.153821253,
+ 30.220263792752
+ ],
+ "elevation": 177.1
+ },
+ {
+ "coord": [
+ 120.15402707453,
+ 30.220484855385
+ ],
+ "elevation": 177.3
+ },
+ {
+ "coord": [
+ 120.15396277302,
+ 30.220566082059
+ ],
+ "elevation": 174.9
+ },
+ {
+ "coord": [
+ 120.15282348815,
+ 30.220255422402
+ ],
+ "elevation": 207.9
+ },
+ {
+ "coord": [
+ 120.15267192471,
+ 30.22008947757
+ ],
+ "elevation": 218.1
+ },
+ {
+ "coord": [
+ 120.15258939278,
+ 30.220295273072
+ ],
+ "elevation": 220.9
+ },
+ {
+ "coord": [
+ 120.15216971684,
+ 30.220362388122
+ ],
+ "elevation": 227.7
+ },
+ {
+ "coord": [
+ 120.15212507611,
+ 30.220591898054
+ ],
+ "elevation": 233
+ },
+ {
+ "coord": [
+ 120.1518234379,
+ 30.220766419258
+ ],
+ "elevation": 245.2
+ },
+ {
+ "coord": [
+ 120.15188413904,
+ 30.220470425399
+ ],
+ "elevation": 249.6
+ },
+ {
+ "coord": [
+ 120.15193625309,
+ 30.220734790568
+ ],
+ "elevation": 243.7
+ },
+ {
+ "coord": [
+ 120.15243866893,
+ 30.220224526228
+ ],
+ "elevation": 228.7
+ },
+ {
+ "coord": [
+ 120.15194128743,
+ 30.220105590899
+ ],
+ "elevation": 227.8
+ },
+ {
+ "coord": [
+ 120.15114899848,
+ 30.219640357079
+ ],
+ "elevation": 219.5
+ },
+ {
+ "coord": [
+ 120.15091165111,
+ 30.219660100136
+ ],
+ "elevation": 217
+ },
+ {
+ "coord": [
+ 120.15039508517,
+ 30.220102868479
+ ],
+ "elevation": 196.7
+ },
+ {
+ "coord": [
+ 120.14952735019,
+ 30.219294356321
+ ],
+ "elevation": 159.8
+ },
+ {
+ "coord": [
+ 120.14889927307,
+ 30.218997418035
+ ],
+ "elevation": 140.9
+ },
+ {
+ "coord": [
+ 120.14889870415,
+ 30.218833304672
+ ],
+ "elevation": 136
+ },
+ {
+ "coord": [
+ 120.14847804729,
+ 30.218882070685
+ ],
+ "elevation": 119.4
+ },
+ {
+ "coord": [
+ 120.14802504755,
+ 30.219308122829
+ ],
+ "elevation": 95.8
+ },
+ {
+ "coord": [
+ 120.14802295747,
+ 30.219807314367
+ ],
+ "elevation": 94.4
+ },
+ {
+ "coord": [
+ 120.14851138938,
+ 30.220814650303
+ ],
+ "elevation": 92.3
+ },
+ {
+ "coord": [
+ 120.14868105605,
+ 30.221583267286
+ ],
+ "elevation": 102.3
+ },
+ {
+ "coord": [
+ 120.14807228857,
+ 30.222064657341
+ ],
+ "elevation": 101.1
+ },
+ {
+ "coord": [
+ 120.14798131254,
+ 30.222940033264
+ ],
+ "elevation": 108.3
+ },
+ {
+ "coord": [
+ 120.14699631461,
+ 30.223840150402
+ ],
+ "elevation": 119.8
+ },
+ {
+ "coord": [
+ 120.14647941779,
+ 30.224749888641
+ ],
+ "elevation": 153.7
+ },
+ {
+ "coord": [
+ 120.147638616,
+ 30.226673211462
+ ],
+ "elevation": 198.5
+ },
+ {
+ "coord": [
+ 120.14752162693,
+ 30.226956793362
+ ],
+ "elevation": 206.3
+ },
+ {
+ "coord": [
+ 120.15017430399,
+ 30.227994763939
+ ],
+ "elevation": 148.6
+ },
+ {
+ "coord": [
+ 120.15092506033,
+ 30.228493023433
+ ],
+ "elevation": 141.2
+ },
+ {
+ "coord": [
+ 120.15362968244,
+ 30.231048924533
+ ],
+ "elevation": 120.9
+ },
+ {
+ "coord": [
+ 120.15440764691,
+ 30.231577074422
+ ],
+ "elevation": 120.4
+ },
+ {
+ "coord": [
+ 120.15482099497,
+ 30.232152147419
+ ],
+ "elevation": 117.4
+ },
+ {
+ "coord": [
+ 120.15639326656,
+ 30.23306116397
+ ],
+ "elevation": 95.9
+ },
+ {
+ "coord": [
+ 120.15698680887,
+ 30.233961401536
+ ],
+ "elevation": 76.9
+ },
+ {
+ "coord": [
+ 120.15782437113,
+ 30.234606914726
+ ],
+ "elevation": 57.3
+ },
+ {
+ "coord": [
+ 120.15786318927,
+ 30.235064191563
+ ],
+ "elevation": 41.2
+ },
+ {
+ "coord": [
+ 120.1581277242,
+ 30.235245912869
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.15840379208,
+ 30.235211445543
+ ],
+ "elevation": 31.9
+ },
+ {
+ "coord": [
+ 120.15856647709,
+ 30.235493574487
+ ],
+ "elevation": 21.2
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.17035615094,
+ 30.27418503916
+ ],
+ "elevation": 150
+ },
+ {
+ "coord": [
+ 120.16997336881,
+ 30.27411480765
+ ],
+ "elevation": 141.4
+ },
+ {
+ "coord": [
+ 120.17002299452,
+ 30.275906107142
+ ],
+ "elevation": -2.7
+ },
+ {
+ "coord": [
+ 120.16667047375,
+ 30.276453350563
+ ],
+ "elevation": 17.5
+ },
+ {
+ "coord": [
+ 120.16134966877,
+ 30.276692550124
+ ],
+ "elevation": 32.9
+ },
+ {
+ "coord": [
+ 120.159778004,
+ 30.275349889448
+ ],
+ "elevation": 32.9
+ },
+ {
+ "coord": [
+ 120.15438430109,
+ 30.273483011863
+ ],
+ "elevation": 38.3
+ },
+ {
+ "coord": [
+ 120.15438513058,
+ 30.273571975298
+ ],
+ "elevation": 40.6
+ },
+ {
+ "coord": [
+ 120.15444426234,
+ 30.273484876387
+ ],
+ "elevation": 43.8
+ },
+ {
+ "coord": [
+ 120.1484633305,
+ 30.27232439697
+ ],
+ "elevation": 45.3
+ },
+ {
+ "coord": [
+ 120.14833748377,
+ 30.272438049847
+ ],
+ "elevation": 44.2
+ },
+ {
+ "coord": [
+ 120.14805380216,
+ 30.273658217967
+ ],
+ "elevation": 42.8
+ },
+ {
+ "coord": [
+ 120.14753141612,
+ 30.277299341322
+ ],
+ "elevation": 93.4
+ },
+ {
+ "coord": [
+ 120.1472941219,
+ 30.27760603618
+ ],
+ "elevation": 89.1
+ },
+ {
+ "coord": [
+ 120.14255240045,
+ 30.277420939178
+ ],
+ "elevation": 85.3
+ },
+ {
+ "coord": [
+ 120.13573020884,
+ 30.278098887117
+ ],
+ "elevation": 71
+ },
+ {
+ "coord": [
+ 120.13529932238,
+ 30.278020948462
+ ],
+ "elevation": 69.8
+ },
+ {
+ "coord": [
+ 120.13479316295,
+ 30.278163170975
+ ],
+ "elevation": 136.3
+ },
+ {
+ "coord": [
+ 120.12932066614,
+ 30.27845827325
+ ],
+ "elevation": 120.4
+ },
+ {
+ "coord": [
+ 120.12467457145,
+ 30.278328486725
+ ],
+ "elevation": 84.2
+ },
+ {
+ "coord": [
+ 120.11967529738,
+ 30.277059581844
+ ],
+ "elevation": 64.1
+ },
+ {
+ "coord": [
+ 120.11994557686,
+ 30.277232757886
+ ],
+ "elevation": 53.6
+ },
+ {
+ "coord": [
+ 120.10740324258,
+ 30.271174947127
+ ],
+ "elevation": 75.2
+ },
+ {
+ "coord": [
+ 120.10602369232,
+ 30.270719785861
+ ],
+ "elevation": 66.6
+ },
+ {
+ "coord": [
+ 120.10484619959,
+ 30.270520839538
+ ],
+ "elevation": 57.9
+ },
+ {
+ "coord": [
+ 120.10466922872,
+ 30.270325996743
+ ],
+ "elevation": 52.1
+ },
+ {
+ "coord": [
+ 120.10341812044,
+ 30.269957963848
+ ],
+ "elevation": 46
+ },
+ {
+ "coord": [
+ 120.0994193375,
+ 30.269049246883
+ ],
+ "elevation": 30.7
+ },
+ {
+ "coord": [
+ 120.09662546857,
+ 30.268768078649
+ ],
+ "elevation": 25.2
+ },
+ {
+ "coord": [
+ 120.09573738277,
+ 30.268418918072
+ ],
+ "elevation": 19.8
+ },
+ {
+ "coord": [
+ 120.08689332597,
+ 30.267425884622
+ ],
+ "elevation": 7.8
+ },
+ {
+ "coord": [
+ 120.08262162954,
+ 30.266597786437
+ ],
+ "elevation": 12.5
+ },
+ {
+ "coord": [
+ 120.08158826358,
+ 30.266247446886
+ ],
+ "elevation": 16.8
+ },
+ {
+ "coord": [
+ 120.08056455638,
+ 30.26559982192
+ ],
+ "elevation": 19.3
+ },
+ {
+ "coord": [
+ 120.0774959635,
+ 30.264218467715
+ ],
+ "elevation": 21.1
+ },
+ {
+ "coord": [
+ 120.07700463135,
+ 30.263835892421
+ ],
+ "elevation": 20.7
+ },
+ {
+ "coord": [
+ 120.07094339435,
+ 30.260875006379
+ ],
+ "elevation": -2.8
+ },
+ {
+ "coord": [
+ 120.06777279133,
+ 30.259723908638
+ ],
+ "elevation": -14
+ },
+ {
+ "coord": [
+ 120.06731926737,
+ 30.260357557894
+ ],
+ "elevation": -20
+ },
+ {
+ "coord": [
+ 120.06624490116,
+ 30.260092566501
+ ],
+ "elevation": 6.4
+ },
+ {
+ "coord": [
+ 120.06613470567,
+ 30.26115183196
+ ],
+ "elevation": -4.4
+ },
+ {
+ "coord": [
+ 120.06590150282,
+ 30.261720371659
+ ],
+ "elevation": -3.7
+ },
+ {
+ "coord": [
+ 120.06553329084,
+ 30.262093479854
+ ],
+ "elevation": -4.9
+ },
+ {
+ "coord": [
+ 120.06509513171,
+ 30.262212331494
+ ],
+ "elevation": -2.2
+ },
+ {
+ "coord": [
+ 120.06491058313,
+ 30.262608739165
+ ],
+ "elevation": -3.8
+ },
+ {
+ "coord": [
+ 120.06490503328,
+ 30.262842347363
+ ],
+ "elevation": -4.4
+ },
+ {
+ "coord": [
+ 120.06615168125,
+ 30.263018455551
+ ],
+ "elevation": 8.2
+ },
+ {
+ "coord": [
+ 120.06627005373,
+ 30.263160032758
+ ],
+ "elevation": 4
+ },
+ {
+ "coord": [
+ 120.06691238019,
+ 30.261448585479
+ ],
+ "elevation": -6.1
+ },
+ {
+ "coord": [
+ 120.06700316055,
+ 30.261324083489
+ ],
+ "elevation": -4.4
+ },
+ {
+ "coord": [
+ 120.06713367741,
+ 30.261399568259
+ ],
+ "elevation": -0.5
+ },
+ {
+ "coord": [
+ 120.06729196744,
+ 30.261246912685
+ ],
+ "elevation": -0.1
+ },
+ {
+ "coord": [
+ 120.06781754308,
+ 30.261224070948
+ ],
+ "elevation": 5.6
+ },
+ {
+ "coord": [
+ 120.06793211589,
+ 30.261029138777
+ ],
+ "elevation": 8.1
+ },
+ {
+ "coord": [
+ 120.06773591047,
+ 30.260833011459
+ ],
+ "elevation": -8.9
+ },
+ {
+ "coord": [
+ 120.06787030033,
+ 30.260667667331
+ ],
+ "elevation": -0.1
+ },
+ {
+ "coord": [
+ 120.06771449639,
+ 30.260847096251
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.06864307576,
+ 30.261410157656
+ ],
+ "elevation": 10.8
+ },
+ {
+ "coord": [
+ 120.06816870746,
+ 30.262010004038
+ ],
+ "elevation": 1.2
+ },
+ {
+ "coord": [
+ 120.06808181702,
+ 30.26265858021
+ ],
+ "elevation": -2.9
+ },
+ {
+ "coord": [
+ 120.06865874311,
+ 30.263401886024
+ ],
+ "elevation": 11.6
+ },
+ {
+ "coord": [
+ 120.06889385862,
+ 30.263490292366
+ ],
+ "elevation": 11.1
+ },
+ {
+ "coord": [
+ 120.06991921353,
+ 30.26326928752
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.06980513612,
+ 30.26332426939
+ ],
+ "elevation": 2.9
+ },
+ {
+ "coord": [
+ 120.07079061422,
+ 30.26297324029
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.07100342311,
+ 30.263559347894
+ ],
+ "elevation": 10.7
+ },
+ {
+ "coord": [
+ 120.07164573333,
+ 30.263820055229
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.07199013712,
+ 30.264400775073
+ ],
+ "elevation": 4.9
+ },
+ {
+ "coord": [
+ 120.07227155387,
+ 30.264318457764
+ ],
+ "elevation": 3.5
+ },
+ {
+ "coord": [
+ 120.0721334448,
+ 30.264400723763
+ ],
+ "elevation": 2.5
+ },
+ {
+ "coord": [
+ 120.07218475425,
+ 30.264596069747
+ ],
+ "elevation": 1.6
+ },
+ {
+ "coord": [
+ 120.07249324694,
+ 30.264515044602
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.07195875777,
+ 30.265483383209
+ ],
+ "elevation": 2.4
+ },
+ {
+ "coord": [
+ 120.072012246,
+ 30.265715898064
+ ],
+ "elevation": 3.4
+ },
+ {
+ "coord": [
+ 120.07187318506,
+ 30.265552393036
+ ],
+ "elevation": 6.4
+ },
+ {
+ "coord": [
+ 120.07229126176,
+ 30.265699229322
+ ],
+ "elevation": 10.7
+ },
+ {
+ "coord": [
+ 120.07203132453,
+ 30.265944976763
+ ],
+ "elevation": 7.7
+ },
+ {
+ "coord": [
+ 120.07163006005,
+ 30.265875647604
+ ],
+ "elevation": 2.4
+ },
+ {
+ "coord": [
+ 120.07159336149,
+ 30.265633196197
+ ],
+ "elevation": -0.7
+ },
+ {
+ "coord": [
+ 120.07084026084,
+ 30.265425507883
+ ],
+ "elevation": -3.5
+ },
+ {
+ "coord": [
+ 120.07093280292,
+ 30.265172770663
+ ],
+ "elevation": -7.6
+ },
+ {
+ "coord": [
+ 120.07135018678,
+ 30.264856656195
+ ],
+ "elevation": -9.5
+ },
+ {
+ "coord": [
+ 120.07144670106,
+ 30.264472127545
+ ],
+ "elevation": 1.2
+ },
+ {
+ "coord": [
+ 120.07133246807,
+ 30.264184009251
+ ],
+ "elevation": -0.5
+ },
+ {
+ "coord": [
+ 120.07074241779,
+ 30.263929133471
+ ],
+ "elevation": 0.8
+ },
+ {
+ "coord": [
+ 120.07058821876,
+ 30.263923907421
+ ],
+ "elevation": -0.1
+ },
+ {
+ "coord": [
+ 120.07039035049,
+ 30.264333911087
+ ],
+ "elevation": -0.9
+ },
+ {
+ "coord": [
+ 120.07003883582,
+ 30.264341347404
+ ],
+ "elevation": -1.4
+ },
+ {
+ "coord": [
+ 120.06983716308,
+ 30.265299747534
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.06960624124,
+ 30.26533620887
+ ],
+ "elevation": 3.6
+ },
+ {
+ "coord": [
+ 120.06940611073,
+ 30.265185878975
+ ],
+ "elevation": 2.3
+ },
+ {
+ "coord": [
+ 120.06909552323,
+ 30.265338357133
+ ],
+ "elevation": 1.2
+ },
+ {
+ "coord": [
+ 120.06859989786,
+ 30.265290599724
+ ],
+ "elevation": -2.3
+ },
+ {
+ "coord": [
+ 120.06845549646,
+ 30.265510895635
+ ],
+ "elevation": -5.2
+ },
+ {
+ "coord": [
+ 120.06749402927,
+ 30.265220392159
+ ],
+ "elevation": -3.4
+ },
+ {
+ "coord": [
+ 120.06710863855,
+ 30.265245903037
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.06705201508,
+ 30.264861710461
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.06652782172,
+ 30.264628295225
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.0664609785,
+ 30.264432962849
+ ],
+ "elevation": -1.5
+ },
+ {
+ "coord": [
+ 120.06661086346,
+ 30.264687979018
+ ],
+ "elevation": -1.9
+ },
+ {
+ "coord": [
+ 120.06708105468,
+ 30.264893466164
+ ],
+ "elevation": -2
+ },
+ {
+ "coord": [
+ 120.0670372877,
+ 30.26521602708
+ ],
+ "elevation": -2.7
+ },
+ {
+ "coord": [
+ 120.06851678519,
+ 30.265532170617
+ ],
+ "elevation": 12.9
+ },
+ {
+ "coord": [
+ 120.06869859956,
+ 30.265838285799
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.06868969716,
+ 30.267080275481
+ ],
+ "elevation": -4.1
+ },
+ {
+ "coord": [
+ 120.0686190027,
+ 30.267240198258
+ ],
+ "elevation": -5.5
+ },
+ {
+ "coord": [
+ 120.06834734901,
+ 30.267307792075
+ ],
+ "elevation": -2.1
+ },
+ {
+ "coord": [
+ 120.06789711879,
+ 30.26708791278
+ ],
+ "elevation": -3.7
+ },
+ {
+ "coord": [
+ 120.06818169881,
+ 30.266182718694
+ ],
+ "elevation": 5.3
+ },
+ {
+ "coord": [
+ 120.06805794587,
+ 30.265975532075
+ ],
+ "elevation": 4.9
+ },
+ {
+ "coord": [
+ 120.06783291156,
+ 30.266061780545
+ ],
+ "elevation": 4.3
+ },
+ {
+ "coord": [
+ 120.06791894096,
+ 30.266194553885
+ ],
+ "elevation": -4.3
+ },
+ {
+ "coord": [
+ 120.06781341108,
+ 30.266112490409
+ ],
+ "elevation": -1.6
+ },
+ {
+ "coord": [
+ 120.06806285386,
+ 30.266030070556
+ ],
+ "elevation": 2.2
+ },
+ {
+ "coord": [
+ 120.06796559328,
+ 30.265669105119
+ ],
+ "elevation": 6.8
+ },
+ {
+ "coord": [
+ 120.06816570606,
+ 30.266194631235
+ ],
+ "elevation": 6.6
+ },
+ {
+ "coord": [
+ 120.06809370434,
+ 30.266462024855
+ ],
+ "elevation": 3.5
+ },
+ {
+ "coord": [
+ 120.06734002478,
+ 30.266386323362
+ ],
+ "elevation": 5.1
+ },
+ {
+ "coord": [
+ 120.06726304442,
+ 30.266483938694
+ ],
+ "elevation": 0.3
+ },
+ {
+ "coord": [
+ 120.06730584159,
+ 30.267576211191
+ ],
+ "elevation": -2
+ },
+ {
+ "coord": [
+ 120.06750875097,
+ 30.267676478707
+ ],
+ "elevation": -1.9
+ },
+ {
+ "coord": [
+ 120.0671377267,
+ 30.267684628133
+ ],
+ "elevation": 0.1
+ },
+ {
+ "coord": [
+ 120.06700740234,
+ 30.268030198491
+ ],
+ "elevation": 6.1
+ },
+ {
+ "coord": [
+ 120.06714004931,
+ 30.268062000435
+ ],
+ "elevation": 5.9
+ },
+ {
+ "coord": [
+ 120.06693584277,
+ 30.268153340585
+ ],
+ "elevation": 4.6
+ },
+ {
+ "coord": [
+ 120.0667268945,
+ 30.268647591295
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.06661230695,
+ 30.269088433496
+ ],
+ "elevation": -0.7
+ },
+ {
+ "coord": [
+ 120.06678143013,
+ 30.269468253791
+ ],
+ "elevation": 1.8
+ },
+ {
+ "coord": [
+ 120.06664510079,
+ 30.26983041079
+ ],
+ "elevation": -0.4
+ },
+ {
+ "coord": [
+ 120.06633857317,
+ 30.269874395952
+ ],
+ "elevation": 0.3
+ },
+ {
+ "coord": [
+ 120.0658539699,
+ 30.269687725097
+ ],
+ "elevation": 10.4
+ },
+ {
+ "coord": [
+ 120.06602704237,
+ 30.269608936556
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.06594000359,
+ 30.26977312027
+ ],
+ "elevation": -10.2
+ },
+ {
+ "coord": [
+ 120.06621972389,
+ 30.269794947602
+ ],
+ "elevation": -13.1
+ },
+ {
+ "coord": [
+ 120.06648920375,
+ 30.27010794511
+ ],
+ "elevation": -6.5
+ },
+ {
+ "coord": [
+ 120.06643554492,
+ 30.270295412334
+ ],
+ "elevation": -2.5
+ },
+ {
+ "coord": [
+ 120.06641923886,
+ 30.270193140195
+ ],
+ "elevation": -2.2
+ },
+ {
+ "coord": [
+ 120.06610863676,
+ 30.270283043015
+ ],
+ "elevation": -0.7
+ },
+ {
+ "coord": [
+ 120.06622418319,
+ 30.270191568469
+ ],
+ "elevation": -1.1
+ },
+ {
+ "coord": [
+ 120.06659776908,
+ 30.270304349437
+ ],
+ "elevation": -0.9
+ },
+ {
+ "coord": [
+ 120.06649611594,
+ 30.270571030261
+ ],
+ "elevation": -1.3
+ },
+ {
+ "coord": [
+ 120.06665726498,
+ 30.270626638083
+ ],
+ "elevation": -1.5
+ },
+ {
+ "coord": [
+ 120.06667781445,
+ 30.271461651226
+ ],
+ "elevation": -0.1
+ },
+ {
+ "coord": [
+ 120.06651418233,
+ 30.271212344924
+ ],
+ "elevation": 0.9
+ },
+ {
+ "coord": [
+ 120.06672879292,
+ 30.271379185863
+ ],
+ "elevation": -0.9
+ },
+ {
+ "coord": [
+ 120.06697026129,
+ 30.273182708741
+ ],
+ "elevation": -5.4
+ },
+ {
+ "coord": [
+ 120.06720921287,
+ 30.273135076565
+ ],
+ "elevation": -3.9
+ },
+ {
+ "coord": [
+ 120.06698383687,
+ 30.273285527273
+ ],
+ "elevation": 2.6
+ },
+ {
+ "coord": [
+ 120.06719199769,
+ 30.274614593949
+ ],
+ "elevation": 2.4
+ },
+ {
+ "coord": [
+ 120.06683179312,
+ 30.274658126787
+ ],
+ "elevation": 5.9
+ },
+ {
+ "coord": [
+ 120.0666204936,
+ 30.274895464969
+ ],
+ "elevation": 4.8
+ },
+ {
+ "coord": [
+ 120.0665003139,
+ 30.274750341583
+ ],
+ "elevation": 3.8
+ },
+ {
+ "coord": [
+ 120.0665708394,
+ 30.274650237235
+ ],
+ "elevation": 3.3
+ },
+ {
+ "coord": [
+ 120.06598620739,
+ 30.274605128151
+ ],
+ "elevation": 7.5
+ },
+ {
+ "coord": [
+ 120.06605811555,
+ 30.274830783485
+ ],
+ "elevation": 5.8
+ },
+ {
+ "coord": [
+ 120.06617693391,
+ 30.274613166187
+ ],
+ "elevation": 9.1
+ },
+ {
+ "coord": [
+ 120.06607574079,
+ 30.274644682275
+ ],
+ "elevation": 10.4
+ },
+ {
+ "coord": [
+ 120.06717247238,
+ 30.274670736082
+ ],
+ "elevation": 8.9
+ },
+ {
+ "coord": [
+ 120.06683941542,
+ 30.275451863147
+ ],
+ "elevation": 6.8
+ },
+ {
+ "coord": [
+ 120.06698534759,
+ 30.275588625249
+ ],
+ "elevation": 15.6
+ },
+ {
+ "coord": [
+ 120.06700975811,
+ 30.275461409897
+ ],
+ "elevation": 2.1
+ },
+ {
+ "coord": [
+ 120.06698480505,
+ 30.275580215754
+ ],
+ "elevation": 0.6
+ },
+ {
+ "coord": [
+ 120.0673694077,
+ 30.275848170572
+ ],
+ "elevation": 7.4
+ },
+ {
+ "coord": [
+ 120.06762705531,
+ 30.275715474928
+ ],
+ "elevation": 5.4
+ },
+ {
+ "coord": [
+ 120.06823259628,
+ 30.275785434984
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.06854360237,
+ 30.275613453673
+ ],
+ "elevation": 4.1
+ },
+ {
+ "coord": [
+ 120.0694417788,
+ 30.275533637438
+ ],
+ "elevation": 8.6
+ },
+ {
+ "coord": [
+ 120.07066686207,
+ 30.275660124062
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.07082268077,
+ 30.275871258977
+ ],
+ "elevation": 1.5
+ },
+ {
+ "coord": [
+ 120.07146838784,
+ 30.275825298485
+ ],
+ "elevation": 2
+ },
+ {
+ "coord": [
+ 120.0717883555,
+ 30.275345638994
+ ],
+ "elevation": 8.4
+ },
+ {
+ "coord": [
+ 120.0727481244,
+ 30.275671841019
+ ],
+ "elevation": 0.7
+ },
+ {
+ "coord": [
+ 120.0731086223,
+ 30.27590951317
+ ],
+ "elevation": 3.6
+ },
+ {
+ "coord": [
+ 120.07301274086,
+ 30.276159020165
+ ],
+ "elevation": 3.4
+ },
+ {
+ "coord": [
+ 120.07319257155,
+ 30.276339188311
+ ],
+ "elevation": 2.5
+ },
+ {
+ "coord": [
+ 120.07287234361,
+ 30.277691605973
+ ],
+ "elevation": 9.2
+ },
+ {
+ "coord": [
+ 120.07306462262,
+ 30.277886472843
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.07385294966,
+ 30.278005630178
+ ],
+ "elevation": 5.9
+ },
+ {
+ "coord": [
+ 120.0742888603,
+ 30.278306067378
+ ],
+ "elevation": 3.2
+ },
+ {
+ "coord": [
+ 120.07510948205,
+ 30.278172474748
+ ],
+ "elevation": -2
+ },
+ {
+ "coord": [
+ 120.07516739111,
+ 30.27834329793
+ ],
+ "elevation": 4.7
+ },
+ {
+ "coord": [
+ 120.07548302758,
+ 30.278330466666
+ ],
+ "elevation": 6.3
+ },
+ {
+ "coord": [
+ 120.07599293242,
+ 30.278636812503
+ ],
+ "elevation": 6.9
+ },
+ {
+ "coord": [
+ 120.07628691036,
+ 30.278273818431
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.07650529119,
+ 30.278427748614
+ ],
+ "elevation": -4.1
+ },
+ {
+ "coord": [
+ 120.07712667025,
+ 30.277979921118
+ ],
+ "elevation": 2.8
+ },
+ {
+ "coord": [
+ 120.07727087981,
+ 30.278093116698
+ ],
+ "elevation": -0.5
+ },
+ {
+ "coord": [
+ 120.0771945626,
+ 30.278187566025
+ ],
+ "elevation": -3.1
+ },
+ {
+ "coord": [
+ 120.07880962948,
+ 30.278692456704
+ ],
+ "elevation": 1.2
+ },
+ {
+ "coord": [
+ 120.07925216064,
+ 30.278585229684
+ ],
+ "elevation": -1.2
+ },
+ {
+ "coord": [
+ 120.07954596242,
+ 30.278023380502
+ ],
+ "elevation": -2
+ },
+ {
+ "coord": [
+ 120.07972037898,
+ 30.278231890578
+ ],
+ "elevation": -0.7
+ },
+ {
+ "coord": [
+ 120.07963977859,
+ 30.278276768291
+ ],
+ "elevation": -0.9
+ },
+ {
+ "coord": [
+ 120.07954325865,
+ 30.278016566928
+ ],
+ "elevation": 0.9
+ },
+ {
+ "coord": [
+ 120.08102388367,
+ 30.274303164592
+ ],
+ "elevation": -4.7
+ },
+ {
+ "coord": [
+ 120.08136272871,
+ 30.271299950516
+ ],
+ "elevation": 0.4
+ },
+ {
+ "coord": [
+ 120.08261222138,
+ 30.268645655908
+ ],
+ "elevation": -4.6
+ },
+ {
+ "coord": [
+ 120.08322461746,
+ 30.268416483406
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.08321075722,
+ 30.268220680924
+ ],
+ "elevation": 0.5
+ },
+ {
+ "coord": [
+ 120.08343719966,
+ 30.268100537786
+ ],
+ "elevation": 1.5
+ },
+ {
+ "coord": [
+ 120.08435507036,
+ 30.268357571766
+ ],
+ "elevation": 0.1
+ },
+ {
+ "coord": [
+ 120.08451893403,
+ 30.268635158387
+ ],
+ "elevation": 8.9
+ },
+ {
+ "coord": [
+ 120.08444424588,
+ 30.269089515188
+ ],
+ "elevation": 2.6
+ },
+ {
+ "coord": [
+ 120.08475046415,
+ 30.269254270832
+ ],
+ "elevation": 1.3
+ },
+ {
+ "coord": [
+ 120.08408406344,
+ 30.269207229748
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.08420218073,
+ 30.269272490417
+ ],
+ "elevation": 12.1
+ },
+ {
+ "coord": [
+ 120.08400954288,
+ 30.269403881522
+ ],
+ "elevation": 13.5
+ },
+ {
+ "coord": [
+ 120.08407526115,
+ 30.269551634396
+ ],
+ "elevation": 13.3
+ },
+ {
+ "coord": [
+ 120.08435766236,
+ 30.269562139732
+ ],
+ "elevation": 8.8
+ },
+ {
+ "coord": [
+ 120.0844845134,
+ 30.269919729557
+ ],
+ "elevation": 6.8
+ },
+ {
+ "coord": [
+ 120.08437052823,
+ 30.270088090266
+ ],
+ "elevation": 2.5
+ },
+ {
+ "coord": [
+ 120.0841718743,
+ 30.269984978229
+ ],
+ "elevation": -1.2
+ },
+ {
+ "coord": [
+ 120.08444319666,
+ 30.270011065642
+ ],
+ "elevation": -2.1
+ },
+ {
+ "coord": [
+ 120.08429617234,
+ 30.269949962056
+ ],
+ "elevation": 4.8
+ },
+ {
+ "coord": [
+ 120.08408657232,
+ 30.270301370603
+ ],
+ "elevation": 9.5
+ },
+ {
+ "coord": [
+ 120.08460814655,
+ 30.270393930886
+ ],
+ "elevation": 16.6
+ },
+ {
+ "coord": [
+ 120.0841391946,
+ 30.270048509487
+ ],
+ "elevation": 5.2
+ },
+ {
+ "coord": [
+ 120.08376333873,
+ 30.270248256604
+ ],
+ "elevation": -0.2
+ },
+ {
+ "coord": [
+ 120.08386461771,
+ 30.270025678957
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.0837197515,
+ 30.269993958032
+ ],
+ "elevation": 6.3
+ },
+ {
+ "coord": [
+ 120.08367252508,
+ 30.270224395846
+ ],
+ "elevation": 39.9
+ },
+ {
+ "coord": [
+ 120.08375216498,
+ 30.269937196554
+ ],
+ "elevation": 8.8
+ },
+ {
+ "coord": [
+ 120.08346114588,
+ 30.270114671985
+ ],
+ "elevation": 36.5
+ },
+ {
+ "coord": [
+ 120.08389115394,
+ 30.270198341245
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.08444017384,
+ 30.269847976029
+ ],
+ "elevation": 8.2
+ },
+ {
+ "coord": [
+ 120.08416224619,
+ 30.269452837739
+ ],
+ "elevation": 6.2
+ },
+ {
+ "coord": [
+ 120.08447124042,
+ 30.269009625018
+ ],
+ "elevation": 11.7
+ },
+ {
+ "coord": [
+ 120.08449298608,
+ 30.268618213184
+ ],
+ "elevation": 11.8
+ },
+ {
+ "coord": [
+ 120.08431099061,
+ 30.268275515154
+ ],
+ "elevation": 9.3
+ },
+ {
+ "coord": [
+ 120.08325611071,
+ 30.268086234441
+ ],
+ "elevation": 16.3
+ },
+ {
+ "coord": [
+ 120.08320524329,
+ 30.267949579367
+ ],
+ "elevation": 16.4
+ },
+ {
+ "coord": [
+ 120.08362450537,
+ 30.268129874672
+ ],
+ "elevation": 82.7
+ },
+ {
+ "coord": [
+ 120.08332872723,
+ 30.26786971239
+ ],
+ "elevation": 24.9
+ },
+ {
+ "coord": [
+ 120.0830330799,
+ 30.267967172498
+ ],
+ "elevation": 19.6
+ },
+ {
+ "coord": [
+ 120.08296194114,
+ 30.267837830424
+ ],
+ "elevation": 18.5
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.13067527905,
+ 30.268272732612
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.12738580055,
+ 30.269315855124
+ ],
+ "elevation": 27.1
+ },
+ {
+ "coord": [
+ 120.127464142,
+ 30.269880064673
+ ],
+ "elevation": 29.9
+ },
+ {
+ "coord": [
+ 120.12479943633,
+ 30.270844252271
+ ],
+ "elevation": 56.9
+ },
+ {
+ "coord": [
+ 120.12473443064,
+ 30.271099968756
+ ],
+ "elevation": 60.7
+ },
+ {
+ "coord": [
+ 120.12439438102,
+ 30.270962342675
+ ],
+ "elevation": 70.3
+ },
+ {
+ "coord": [
+ 120.12369605367,
+ 30.271119673514
+ ],
+ "elevation": 97.7
+ },
+ {
+ "coord": [
+ 120.12340225282,
+ 30.27127916923
+ ],
+ "elevation": 108.8
+ },
+ {
+ "coord": [
+ 120.12350670491,
+ 30.271637300147
+ ],
+ "elevation": 127.5
+ },
+ {
+ "coord": [
+ 120.12308388736,
+ 30.271763498169
+ ],
+ "elevation": 146.7
+ },
+ {
+ "coord": [
+ 120.12274728816,
+ 30.271854570665
+ ],
+ "elevation": 155.4
+ },
+ {
+ "coord": [
+ 120.12177213223,
+ 30.271283865337
+ ],
+ "elevation": 163.6
+ },
+ {
+ "coord": [
+ 120.12057943954,
+ 30.270854805636
+ ],
+ "elevation": 176.1
+ },
+ {
+ "coord": [
+ 120.12025263628,
+ 30.270392516824
+ ],
+ "elevation": 167.9
+ },
+ {
+ "coord": [
+ 120.11993843053,
+ 30.269502922088
+ ],
+ "elevation": 163.6
+ },
+ {
+ "coord": [
+ 120.11909215271,
+ 30.268780227288
+ ],
+ "elevation": 166.9
+ },
+ {
+ "coord": [
+ 120.11777212899,
+ 30.267148537432
+ ],
+ "elevation": 165
+ },
+ {
+ "coord": [
+ 120.1177629199,
+ 30.266573849101
+ ],
+ "elevation": 159.7
+ },
+ {
+ "coord": [
+ 120.11754715286,
+ 30.265992810605
+ ],
+ "elevation": 165
+ },
+ {
+ "coord": [
+ 120.11683516808,
+ 30.265739929962
+ ],
+ "elevation": 164
+ },
+ {
+ "coord": [
+ 120.11613457709,
+ 30.26439118901
+ ],
+ "elevation": 147.2
+ },
+ {
+ "coord": [
+ 120.11609558227,
+ 30.263894588746
+ ],
+ "elevation": 154
+ },
+ {
+ "coord": [
+ 120.11593768089,
+ 30.263661883964
+ ],
+ "elevation": 150.6
+ },
+ {
+ "coord": [
+ 120.11591936999,
+ 30.262951957523
+ ],
+ "elevation": 129.4
+ },
+ {
+ "coord": [
+ 120.11526424753,
+ 30.2620426379
+ ],
+ "elevation": 120.8
+ },
+ {
+ "coord": [
+ 120.11556438364,
+ 30.261011759281
+ ],
+ "elevation": 129.4
+ },
+ {
+ "coord": [
+ 120.1160873882,
+ 30.260230974704
+ ],
+ "elevation": 130.4
+ },
+ {
+ "coord": [
+ 120.11612678451,
+ 30.259730505846
+ ],
+ "elevation": 131.8
+ },
+ {
+ "coord": [
+ 120.11594737982,
+ 30.259384715934
+ ],
+ "elevation": 133.8
+ },
+ {
+ "coord": [
+ 120.11467570489,
+ 30.258628337711
+ ],
+ "elevation": 153.5
+ },
+ {
+ "coord": [
+ 120.11389463352,
+ 30.257156587642
+ ],
+ "elevation": 174.6
+ },
+ {
+ "coord": [
+ 120.113419195,
+ 30.256886193579
+ ],
+ "elevation": 178
+ },
+ {
+ "coord": [
+ 120.11285369943,
+ 30.256251482533
+ ],
+ "elevation": 191
+ },
+ {
+ "coord": [
+ 120.11234566101,
+ 30.256321891977
+ ],
+ "elevation": 201.5
+ },
+ {
+ "coord": [
+ 120.11193339058,
+ 30.256093006894
+ ],
+ "elevation": 210.2
+ },
+ {
+ "coord": [
+ 120.11092157128,
+ 30.256215926251
+ ],
+ "elevation": 233.3
+ },
+ {
+ "coord": [
+ 120.11010327715,
+ 30.255832189915
+ ],
+ "elevation": 246.2
+ },
+ {
+ "coord": [
+ 120.10951792642,
+ 30.255306834325
+ ],
+ "elevation": 231.8
+ },
+ {
+ "coord": [
+ 120.10690363589,
+ 30.254135819117
+ ],
+ "elevation": 247.2
+ },
+ {
+ "coord": [
+ 120.10567042906,
+ 30.254415569461
+ ],
+ "elevation": 255.9
+ },
+ {
+ "coord": [
+ 120.10448326892,
+ 30.254353812569
+ ],
+ "elevation": 271.7
+ },
+ {
+ "coord": [
+ 120.10395628121,
+ 30.253703221571
+ ],
+ "elevation": 278
+ },
+ {
+ "coord": [
+ 120.10381882899,
+ 30.253143504528
+ ],
+ "elevation": 290.5
+ },
+ {
+ "coord": [
+ 120.10342986349,
+ 30.252780933697
+ ],
+ "elevation": 281.3
+ },
+ {
+ "coord": [
+ 120.1046062347,
+ 30.251866234298
+ ],
+ "elevation": 307.3
+ },
+ {
+ "coord": [
+ 120.10466754122,
+ 30.251584023539
+ ],
+ "elevation": 314
+ },
+ {
+ "coord": [
+ 120.1042544527,
+ 30.252008827733
+ ],
+ "elevation": 314.5
+ },
+ {
+ "coord": [
+ 120.10331321577,
+ 30.252234852544
+ ],
+ "elevation": 314.5
+ },
+ {
+ "coord": [
+ 120.10299625045,
+ 30.251754384214
+ ],
+ "elevation": 313.5
+ },
+ {
+ "coord": [
+ 120.10211846336,
+ 30.251035572204
+ ],
+ "elevation": 308.7
+ },
+ {
+ "coord": [
+ 120.10103404605,
+ 30.251016292578
+ ],
+ "elevation": 311.6
+ },
+ {
+ "coord": [
+ 120.10048051314,
+ 30.249090471932
+ ],
+ "elevation": 308.2
+ },
+ {
+ "coord": [
+ 120.09993006741,
+ 30.248632540825
+ ],
+ "elevation": 337.1
+ },
+ {
+ "coord": [
+ 120.09893923275,
+ 30.248389323949
+ ],
+ "elevation": 360.2
+ },
+ {
+ "coord": [
+ 120.09907197236,
+ 30.248297123516
+ ],
+ "elevation": 362.1
+ },
+ {
+ "coord": [
+ 120.09858639892,
+ 30.247620243048
+ ],
+ "elevation": 344.8
+ },
+ {
+ "coord": [
+ 120.09842067077,
+ 30.246860104648
+ ],
+ "elevation": 334.2
+ },
+ {
+ "coord": [
+ 120.0974211656,
+ 30.246013654076
+ ],
+ "elevation": 323.1
+ },
+ {
+ "coord": [
+ 120.09713773028,
+ 30.245253170898
+ ],
+ "elevation": 315.9
+ },
+ {
+ "coord": [
+ 120.09598603348,
+ 30.24419865828
+ ],
+ "elevation": 305.4
+ },
+ {
+ "coord": [
+ 120.09539900487,
+ 30.244096646581
+ ],
+ "elevation": 311.1
+ },
+ {
+ "coord": [
+ 120.09474903482,
+ 30.243696087984
+ ],
+ "elevation": 328.4
+ },
+ {
+ "coord": [
+ 120.09421564563,
+ 30.24298383155
+ ],
+ "elevation": 319.3
+ },
+ {
+ "coord": [
+ 120.09309097608,
+ 30.242276563087
+ ],
+ "elevation": 335.2
+ },
+ {
+ "coord": [
+ 120.09313449936,
+ 30.241241979467
+ ],
+ "elevation": 357.8
+ },
+ {
+ "coord": [
+ 120.0927039943,
+ 30.240834839413
+ ],
+ "elevation": 359.2
+ },
+ {
+ "coord": [
+ 120.09265629226,
+ 30.239251836821
+ ],
+ "elevation": 270.3
+ },
+ {
+ "coord": [
+ 120.09239642286,
+ 30.23883405865
+ ],
+ "elevation": 265.5
+ },
+ {
+ "coord": [
+ 120.0921765973,
+ 30.238790923405
+ ],
+ "elevation": 266.4
+ },
+ {
+ "coord": [
+ 120.0922767795,
+ 30.238801185393
+ ],
+ "elevation": 265
+ },
+ {
+ "coord": [
+ 120.09193248057,
+ 30.238186519385
+ ],
+ "elevation": 255.9
+ },
+ {
+ "coord": [
+ 120.09200122571,
+ 30.237487493058
+ ],
+ "elevation": 246.2
+ },
+ {
+ "coord": [
+ 120.09262504565,
+ 30.237013086374
+ ],
+ "elevation": 241.9
+ },
+ {
+ "coord": [
+ 120.09287350525,
+ 30.2364802105
+ ],
+ "elevation": 262.1
+ },
+ {
+ "coord": [
+ 120.09305432474,
+ 30.236392413599
+ ],
+ "elevation": 264
+ },
+ {
+ "coord": [
+ 120.09301962571,
+ 30.235621751968
+ ],
+ "elevation": 272.7
+ },
+ {
+ "coord": [
+ 120.0927881333,
+ 30.235189296633
+ ],
+ "elevation": 285.7
+ },
+ {
+ "coord": [
+ 120.09268492242,
+ 30.234470005935
+ ],
+ "elevation": 284.2
+ },
+ {
+ "coord": [
+ 120.09197974282,
+ 30.233911066052
+ ],
+ "elevation": 259.2
+ },
+ {
+ "coord": [
+ 120.09166848431,
+ 30.233329877509
+ ],
+ "elevation": 250.6
+ },
+ {
+ "coord": [
+ 120.09100975103,
+ 30.232803704056
+ ],
+ "elevation": 262.6
+ },
+ {
+ "coord": [
+ 120.0901515044,
+ 30.231660090853
+ ],
+ "elevation": 283.3
+ },
+ {
+ "coord": [
+ 120.08969826376,
+ 30.231894565996
+ ],
+ "elevation": 284.7
+ },
+ {
+ "coord": [
+ 120.08932045442,
+ 30.231903621425
+ ],
+ "elevation": 292.9
+ },
+ {
+ "coord": [
+ 120.08875092868,
+ 30.23233426771
+ ],
+ "elevation": 303.9
+ },
+ {
+ "coord": [
+ 120.08713490162,
+ 30.232341705245
+ ],
+ "elevation": 312.6
+ },
+ {
+ "coord": [
+ 120.08566942663,
+ 30.231413748128
+ ],
+ "elevation": 283.3
+ },
+ {
+ "coord": [
+ 120.08540943947,
+ 30.23057370132
+ ],
+ "elevation": 269.3
+ },
+ {
+ "coord": [
+ 120.08471354356,
+ 30.230009085695
+ ],
+ "elevation": 286.1
+ },
+ {
+ "coord": [
+ 120.084380753,
+ 30.229393809184
+ ],
+ "elevation": 294.3
+ },
+ {
+ "coord": [
+ 120.08442789152,
+ 30.228747726625
+ ],
+ "elevation": 307.8
+ },
+ {
+ "coord": [
+ 120.08379421878,
+ 30.227492071574
+ ],
+ "elevation": 341.4
+ },
+ {
+ "coord": [
+ 120.08406785552,
+ 30.226801353901
+ ],
+ "elevation": 361.6
+ },
+ {
+ "coord": [
+ 120.08322668801,
+ 30.226081911776
+ ],
+ "elevation": 351.5
+ },
+ {
+ "coord": [
+ 120.08294531719,
+ 30.225544478099
+ ],
+ "elevation": 363.5
+ },
+ {
+ "coord": [
+ 120.08293758365,
+ 30.225208228008
+ ],
+ "elevation": 365.4
+ },
+ {
+ "coord": [
+ 120.08342618951,
+ 30.224499350877
+ ],
+ "elevation": 377.9
+ },
+ {
+ "coord": [
+ 120.08330866337,
+ 30.223978646783
+ ],
+ "elevation": 373.1
+ },
+ {
+ "coord": [
+ 120.0829432931,
+ 30.223450313887
+ ],
+ "elevation": 357.3
+ },
+ {
+ "coord": [
+ 120.08343026264,
+ 30.221723010371
+ ],
+ "elevation": 339.5
+ },
+ {
+ "coord": [
+ 120.08367073229,
+ 30.221507892313
+ ],
+ "elevation": 333.7
+ },
+ {
+ "coord": [
+ 120.08423336915,
+ 30.221441438022
+ ],
+ "elevation": 312.6
+ },
+ {
+ "coord": [
+ 120.08473131909,
+ 30.221174508049
+ ],
+ "elevation": 292.4
+ },
+ {
+ "coord": [
+ 120.08510529205,
+ 30.22118493093
+ ],
+ "elevation": 291.9
+ },
+ {
+ "coord": [
+ 120.08530537943,
+ 30.220708441268
+ ],
+ "elevation": 268.8
+ },
+ {
+ "coord": [
+ 120.08552986443,
+ 30.220538370852
+ ],
+ "elevation": 262.6
+ },
+ {
+ "coord": [
+ 120.08570693715,
+ 30.219817139481
+ ],
+ "elevation": 274.1
+ },
+ {
+ "coord": [
+ 120.08633335188,
+ 30.219277637497
+ ],
+ "elevation": 286.1
+ },
+ {
+ "coord": [
+ 120.08656422664,
+ 30.21863957149
+ ],
+ "elevation": 305.4
+ },
+ {
+ "coord": [
+ 120.08602888113,
+ 30.217257933154
+ ],
+ "elevation": 284.7
+ },
+ {
+ "coord": [
+ 120.08668563519,
+ 30.21431970211
+ ],
+ "elevation": 328
+ },
+ {
+ "coord": [
+ 120.08634826618,
+ 30.213754015952
+ ],
+ "elevation": 326
+ },
+ {
+ "coord": [
+ 120.08614303539,
+ 30.213021534633
+ ],
+ "elevation": 306.8
+ },
+ {
+ "coord": [
+ 120.08626638591,
+ 30.212107504877
+ ],
+ "elevation": 312.6
+ },
+ {
+ "coord": [
+ 120.08541608967,
+ 30.211094021577
+ ],
+ "elevation": 304.4
+ },
+ {
+ "coord": [
+ 120.08514712919,
+ 30.209590593875
+ ],
+ "elevation": 296.7
+ },
+ {
+ "coord": [
+ 120.08470060255,
+ 30.209186278888
+ ],
+ "elevation": 289
+ },
+ {
+ "coord": [
+ 120.08429919814,
+ 30.208036034324
+ ],
+ "elevation": 278.4
+ },
+ {
+ "coord": [
+ 120.08311895683,
+ 30.207401477313
+ ],
+ "elevation": 255.4
+ },
+ {
+ "coord": [
+ 120.08286209144,
+ 30.206984149457
+ ],
+ "elevation": 249.6
+ },
+ {
+ "coord": [
+ 120.08360598149,
+ 30.205703048396
+ ],
+ "elevation": 200.6
+ },
+ {
+ "coord": [
+ 120.08429516888,
+ 30.205102000943
+ ],
+ "elevation": 196.7
+ },
+ {
+ "coord": [
+ 120.08495588126,
+ 30.204114565452
+ ],
+ "elevation": 212.6
+ },
+ {
+ "coord": [
+ 120.08523213583,
+ 30.203938788629
+ ],
+ "elevation": 219.3
+ },
+ {
+ "coord": [
+ 120.08549545736,
+ 30.203243989659
+ ],
+ "elevation": 223.6
+ },
+ {
+ "coord": [
+ 120.08527286808,
+ 30.202314777384
+ ],
+ "elevation": 196.7
+ },
+ {
+ "coord": [
+ 120.08552226291,
+ 30.201903202952
+ ],
+ "elevation": 191.4
+ },
+ {
+ "coord": [
+ 120.08497341092,
+ 30.201611416379
+ ],
+ "elevation": 180.9
+ },
+ {
+ "coord": [
+ 120.08487280514,
+ 30.20134459692
+ ],
+ "elevation": 168.4
+ },
+ {
+ "coord": [
+ 120.08506245647,
+ 30.200265375248
+ ],
+ "elevation": 151.1
+ },
+ {
+ "coord": [
+ 120.08486893362,
+ 30.199610080939
+ ],
+ "elevation": 147.7
+ },
+ {
+ "coord": [
+ 120.08496538682,
+ 30.199274726263
+ ],
+ "elevation": 148.7
+ },
+ {
+ "coord": [
+ 120.08488592552,
+ 30.198607382169
+ ],
+ "elevation": 162.1
+ },
+ {
+ "coord": [
+ 120.08429641884,
+ 30.197775739432
+ ],
+ "elevation": 170.8
+ },
+ {
+ "coord": [
+ 120.08423018326,
+ 30.197480197087
+ ],
+ "elevation": 173.2
+ },
+ {
+ "coord": [
+ 120.08449663714,
+ 30.196836049843
+ ],
+ "elevation": 162.1
+ },
+ {
+ "coord": [
+ 120.08451246342,
+ 30.195721339922
+ ],
+ "elevation": 162.6
+ },
+ {
+ "coord": [
+ 120.08468836999,
+ 30.195428962847
+ ],
+ "elevation": 165
+ },
+ {
+ "coord": [
+ 120.08487981645,
+ 30.194384239166
+ ],
+ "elevation": 174.1
+ },
+ {
+ "coord": [
+ 120.08447145408,
+ 30.193271967238
+ ],
+ "elevation": 219.3
+ },
+ {
+ "coord": [
+ 120.08498000188,
+ 30.192712444685
+ ],
+ "elevation": 224.6
+ },
+ {
+ "coord": [
+ 120.08570575162,
+ 30.192720635274
+ ],
+ "elevation": 227
+ },
+ {
+ "coord": [
+ 120.08620285325,
+ 30.19218080192
+ ],
+ "elevation": 202.5
+ },
+ {
+ "coord": [
+ 120.08702096279,
+ 30.191817543245
+ ],
+ "elevation": 194.3
+ },
+ {
+ "coord": [
+ 120.08704664573,
+ 30.190687587083
+ ],
+ "elevation": 175.6
+ },
+ {
+ "coord": [
+ 120.08769649971,
+ 30.189676335161
+ ],
+ "elevation": 209.7
+ },
+ {
+ "coord": [
+ 120.08765668939,
+ 30.189507785526
+ ],
+ "elevation": 216.4
+ },
+ {
+ "coord": [
+ 120.08832635591,
+ 30.189179131689
+ ],
+ "elevation": 231.8
+ },
+ {
+ "coord": [
+ 120.08881405534,
+ 30.188196329373
+ ],
+ "elevation": 228.9
+ },
+ {
+ "coord": [
+ 120.09088776204,
+ 30.186711771457
+ ],
+ "elevation": 162.1
+ },
+ {
+ "coord": [
+ 120.09108956526,
+ 30.186363413967
+ ],
+ "elevation": 165.5
+ },
+ {
+ "coord": [
+ 120.09110031618,
+ 30.185881139125
+ ],
+ "elevation": 175.1
+ },
+ {
+ "coord": [
+ 120.09246842822,
+ 30.185191373036
+ ],
+ "elevation": 189
+ },
+ {
+ "coord": [
+ 120.09235499744,
+ 30.184682394068
+ ],
+ "elevation": 182.8
+ },
+ {
+ "coord": [
+ 120.09263282436,
+ 30.184167102955
+ ],
+ "elevation": 173.7
+ },
+ {
+ "coord": [
+ 120.09347432223,
+ 30.183747505367
+ ],
+ "elevation": 153.5
+ },
+ {
+ "coord": [
+ 120.09467957479,
+ 30.18376256416
+ ],
+ "elevation": 147.7
+ },
+ {
+ "coord": [
+ 120.09585595108,
+ 30.183194669704
+ ],
+ "elevation": 145.8
+ },
+ {
+ "coord": [
+ 120.09692212348,
+ 30.183200229354
+ ],
+ "elevation": 154
+ },
+ {
+ "coord": [
+ 120.0977393088,
+ 30.182999281294
+ ],
+ "elevation": 148.7
+ },
+ {
+ "coord": [
+ 120.09877516017,
+ 30.182027033979
+ ],
+ "elevation": 124.2
+ },
+ {
+ "coord": [
+ 120.09902534184,
+ 30.181588589357
+ ],
+ "elevation": 107.8
+ },
+ {
+ "coord": [
+ 120.09996472865,
+ 30.180991621053
+ ],
+ "elevation": 94.4
+ },
+ {
+ "coord": [
+ 120.10035077987,
+ 30.180503852617
+ ],
+ "elevation": 106.4
+ },
+ {
+ "coord": [
+ 120.10107699497,
+ 30.18008443457
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.1009972441,
+ 30.179621372168
+ ],
+ "elevation": 119.8
+ },
+ {
+ "coord": [
+ 120.09970638623,
+ 30.179261655767
+ ],
+ "elevation": 89.1
+ },
+ {
+ "coord": [
+ 120.09902737061,
+ 30.178652275239
+ ],
+ "elevation": 83.3
+ },
+ {
+ "coord": [
+ 120.09903477231,
+ 30.177954323523
+ ],
+ "elevation": 74.6
+ },
+ {
+ "coord": [
+ 120.09880798784,
+ 30.177647932702
+ ],
+ "elevation": 70.8
+ },
+ {
+ "coord": [
+ 120.09879725286,
+ 30.177282140037
+ ],
+ "elevation": 58.8
+ },
+ {
+ "coord": [
+ 120.09831712615,
+ 30.177367202774
+ ],
+ "elevation": 51.1
+ },
+ {
+ "coord": [
+ 120.09810245287,
+ 30.177694297164
+ ],
+ "elevation": 50.1
+ },
+ {
+ "coord": [
+ 120.09785700399,
+ 30.177724373762
+ ],
+ "elevation": 38.1
+ },
+ {
+ "coord": [
+ 120.09795809442,
+ 30.177893078269
+ ],
+ "elevation": 42.4
+ },
+ {
+ "coord": [
+ 120.09784164208,
+ 30.177694521503
+ ],
+ "elevation": 39.6
+ },
+ {
+ "coord": [
+ 120.09800294733,
+ 30.177267431825
+ ],
+ "elevation": 38.1
+ },
+ {
+ "coord": [
+ 120.09882846666,
+ 30.17650109845
+ ],
+ "elevation": 35.7
+ },
+ {
+ "coord": [
+ 120.09906727929,
+ 30.175423993806
+ ],
+ "elevation": 35.2
+ },
+ {
+ "coord": [
+ 120.09905054465,
+ 30.17478551391
+ ],
+ "elevation": 35.2
+ },
+ {
+ "coord": [
+ 120.09922667137,
+ 30.174358673951
+ ],
+ "elevation": 34.7
+ },
+ {
+ "coord": [
+ 120.09917508003,
+ 30.174058284227
+ ],
+ "elevation": 33.8
+ },
+ {
+ "coord": [
+ 120.09895677408,
+ 30.173909354706
+ ],
+ "elevation": 34.7
+ },
+ {
+ "coord": [
+ 120.09874646014,
+ 30.173893736417
+ ],
+ "elevation": 34.3
+ },
+ {
+ "coord": [
+ 120.09860671005,
+ 30.174092346866
+ ],
+ "elevation": 34.3
+ },
+ {
+ "coord": [
+ 120.09818831302,
+ 30.173981393956
+ ],
+ "elevation": 33.8
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.1400887153,
+ 30.259694750571
+ ],
+ "elevation": -16
+ },
+ {
+ "coord": [
+ 120.14001472906,
+ 30.25938146793
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.14024520606,
+ 30.259029155195
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.14045802699,
+ 30.259050367911
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.14117230082,
+ 30.259587635152
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.14178078016,
+ 30.260502028358
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.14183740055,
+ 30.260875683916
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.14218363126,
+ 30.261227461788
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.14308055609,
+ 30.261097887397
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.14424043681,
+ 30.261430801694
+ ],
+ "elevation": 87
+ },
+ {
+ "coord": [
+ 120.14467017629,
+ 30.261862175728
+ ],
+ "elevation": 93
+ },
+ {
+ "coord": [
+ 120.14498104394,
+ 30.26247218799
+ ],
+ "elevation": 96
+ },
+ {
+ "coord": [
+ 120.14499142536,
+ 30.262935976083
+ ],
+ "elevation": 97
+ },
+ {
+ "coord": [
+ 120.14553344418,
+ 30.263448685694
+ ],
+ "elevation": 104
+ },
+ {
+ "coord": [
+ 120.14565414145,
+ 30.263961454392
+ ],
+ "elevation": 103
+ },
+ {
+ "coord": [
+ 120.1460475901,
+ 30.264217260023
+ ],
+ "elevation": 113
+ },
+ {
+ "coord": [
+ 120.14580920885,
+ 30.264117705557
+ ],
+ "elevation": 116
+ },
+ {
+ "coord": [
+ 120.14633577751,
+ 30.264705579734
+ ],
+ "elevation": 117
+ },
+ {
+ "coord": [
+ 120.14753930908,
+ 30.265301868256
+ ],
+ "elevation": 116
+ },
+ {
+ "coord": [
+ 120.14816923695,
+ 30.265430398854
+ ],
+ "elevation": 121
+ },
+ {
+ "coord": [
+ 120.14807828583,
+ 30.26603044757
+ ],
+ "elevation": 124
+ },
+ {
+ "coord": [
+ 120.14884395131,
+ 30.266761226378
+ ],
+ "elevation": 120
+ },
+ {
+ "coord": [
+ 120.14932272988,
+ 30.266888277769
+ ],
+ "elevation": 120
+ },
+ {
+ "coord": [
+ 120.14942592416,
+ 30.266736441674
+ ],
+ "elevation": 120
+ },
+ {
+ "coord": [
+ 120.14977495647,
+ 30.266716198085
+ ],
+ "elevation": 120
+ },
+ {
+ "coord": [
+ 120.14986561308,
+ 30.266551273312
+ ],
+ "elevation": 121
+ },
+ {
+ "coord": [
+ 120.15024845006,
+ 30.266537159741
+ ],
+ "elevation": 119
+ },
+ {
+ "coord": [
+ 120.15042332991,
+ 30.265874502755
+ ],
+ "elevation": 101
+ },
+ {
+ "coord": [
+ 120.15057996127,
+ 30.265770506679
+ ],
+ "elevation": 98
+ },
+ {
+ "coord": [
+ 120.15149717065,
+ 30.266206783231
+ ],
+ "elevation": 78
+ },
+ {
+ "coord": [
+ 120.15238518772,
+ 30.265942060282
+ ],
+ "elevation": 89
+ },
+ {
+ "coord": [
+ 120.15275577367,
+ 30.26636879017
+ ],
+ "elevation": 92
+ },
+ {
+ "coord": [
+ 120.15304902181,
+ 30.266366634841
+ ],
+ "elevation": 89
+ },
+ {
+ "coord": [
+ 120.15303335248,
+ 30.266649893533
+ ],
+ "elevation": 88
+ },
+ {
+ "coord": [
+ 120.15431345178,
+ 30.267138876536
+ ],
+ "elevation": 76
+ },
+ {
+ "coord": [
+ 120.15510755639,
+ 30.266887995293
+ ],
+ "elevation": 76
+ },
+ {
+ "coord": [
+ 120.15458681073,
+ 30.266537178675
+ ],
+ "elevation": 69
+ },
+ {
+ "coord": [
+ 120.15462226837,
+ 30.266039487363
+ ],
+ "elevation": 63
+ },
+ {
+ "coord": [
+ 120.15478848013,
+ 30.265949290357
+ ],
+ "elevation": 61
+ },
+ {
+ "coord": [
+ 120.15485157085,
+ 30.265675176664
+ ],
+ "elevation": 60
+ },
+ {
+ "coord": [
+ 120.15484362149,
+ 30.26508360517
+ ],
+ "elevation": 35
+ },
+ {
+ "coord": [
+ 120.15329721141,
+ 30.264184531455
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.15084879674,
+ 30.261965421588
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.14874682815,
+ 30.261118270781
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.1487159563,
+ 30.261001050862
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.14840815115,
+ 30.261090182429
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.14819500834,
+ 30.260962778333
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.14616389766,
+ 30.259133600465
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.14494958878,
+ 30.258269904141
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.14362577003,
+ 30.257775193283
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.14221360826,
+ 30.257444249554
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.14186856376,
+ 30.257909963092
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.14010640635,
+ 30.258330583965
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.14022856034,
+ 30.258971027359
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.13996047057,
+ 30.259591051532
+ ],
+ "elevation": 20
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.1545085354,
+ 30.227019270792
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.15524806301,
+ 30.227181779429
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.15633197285,
+ 30.228036952337
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.15879155382,
+ 30.228106704804
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.15894121612,
+ 30.227231924073
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.1592190179,
+ 30.227367562527
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.15966312929,
+ 30.227132775659
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.1600813446,
+ 30.226395224653
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.16013850914,
+ 30.226775627078
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.15981461782,
+ 30.227055360819
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.15972958614,
+ 30.226558814407
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16008665744,
+ 30.226131960124
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.15980701003,
+ 30.224970253134
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.1598988232,
+ 30.224901000861
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.15896025671,
+ 30.223799314886
+ ],
+ "elevation": 51
+ },
+ {
+ "coord": [
+ 120.15919548693,
+ 30.223162545559
+ ],
+ "elevation": 86
+ },
+ {
+ "coord": [
+ 120.15898030865,
+ 30.222778600031
+ ],
+ "elevation": 92
+ },
+ {
+ "coord": [
+ 120.15744979924,
+ 30.222387264663
+ ],
+ "elevation": 101
+ },
+ {
+ "coord": [
+ 120.15645721989,
+ 30.221748835756
+ ],
+ "elevation": 102
+ },
+ {
+ "coord": [
+ 120.15590913316,
+ 30.221827494303
+ ],
+ "elevation": 102
+ },
+ {
+ "coord": [
+ 120.15582786937,
+ 30.221687406896
+ ],
+ "elevation": 103
+ },
+ {
+ "coord": [
+ 120.15558039294,
+ 30.221700190262
+ ],
+ "elevation": 120
+ },
+ {
+ "coord": [
+ 120.15455700413,
+ 30.22088162289
+ ],
+ "elevation": 139
+ },
+ {
+ "coord": [
+ 120.15391649516,
+ 30.220790754017
+ ],
+ "elevation": 149
+ },
+ {
+ "coord": [
+ 120.15356508544,
+ 30.220362960631
+ ],
+ "elevation": 158
+ },
+ {
+ "coord": [
+ 120.15319771395,
+ 30.220412634317
+ ],
+ "elevation": 163
+ },
+ {
+ "coord": [
+ 120.15262288441,
+ 30.220160371456
+ ],
+ "elevation": 183
+ },
+ {
+ "coord": [
+ 120.15215664368,
+ 30.220397623134
+ ],
+ "elevation": 200
+ },
+ {
+ "coord": [
+ 120.15219100566,
+ 30.220501980828
+ ],
+ "elevation": 205
+ },
+ {
+ "coord": [
+ 120.15182508513,
+ 30.220815491889
+ ],
+ "elevation": 208
+ },
+ {
+ "coord": [
+ 120.15179181327,
+ 30.22071518031
+ ],
+ "elevation": 229
+ },
+ {
+ "coord": [
+ 120.15132938067,
+ 30.220810936841
+ ],
+ "elevation": 239
+ },
+ {
+ "coord": [
+ 120.15136178056,
+ 30.220693154629
+ ],
+ "elevation": 241
+ },
+ {
+ "coord": [
+ 120.15164057408,
+ 30.220745876581
+ ],
+ "elevation": 246
+ },
+ {
+ "coord": [
+ 120.15215441056,
+ 30.221276358255
+ ],
+ "elevation": 240
+ },
+ {
+ "coord": [
+ 120.15271915511,
+ 30.220462165065
+ ],
+ "elevation": 231
+ },
+ {
+ "coord": [
+ 120.15257899408,
+ 30.22009932659
+ ],
+ "elevation": 229
+ },
+ {
+ "coord": [
+ 120.15310068353,
+ 30.220380247755
+ ],
+ "elevation": 228
+ },
+ {
+ "coord": [
+ 120.15339991146,
+ 30.220298204494
+ ],
+ "elevation": 227
+ },
+ {
+ "coord": [
+ 120.15396684427,
+ 30.220494387096
+ ],
+ "elevation": 218
+ },
+ {
+ "coord": [
+ 120.15406194423,
+ 30.220415299447
+ ],
+ "elevation": 214
+ },
+ {
+ "coord": [
+ 120.15431278167,
+ 30.220807511321
+ ],
+ "elevation": 194
+ },
+ {
+ "coord": [
+ 120.15464720104,
+ 30.220814014298
+ ],
+ "elevation": 179
+ },
+ {
+ "coord": [
+ 120.15471212853,
+ 30.221048819096
+ ],
+ "elevation": 172
+ },
+ {
+ "coord": [
+ 120.15522764887,
+ 30.22149926966
+ ],
+ "elevation": 159
+ },
+ {
+ "coord": [
+ 120.15520642813,
+ 30.221631513678
+ ],
+ "elevation": 155
+ },
+ {
+ "coord": [
+ 120.15498563522,
+ 30.221545853599
+ ],
+ "elevation": 151
+ },
+ {
+ "coord": [
+ 120.15486548534,
+ 30.221701381235
+ ],
+ "elevation": 144
+ },
+ {
+ "coord": [
+ 120.15522814837,
+ 30.222240695245
+ ],
+ "elevation": 138
+ },
+ {
+ "coord": [
+ 120.15528721,
+ 30.22280116292
+ ],
+ "elevation": 131
+ },
+ {
+ "coord": [
+ 120.15532778712,
+ 30.222705720887
+ ],
+ "elevation": 124
+ },
+ {
+ "coord": [
+ 120.15556929973,
+ 30.222788547339
+ ],
+ "elevation": 120
+ },
+ {
+ "coord": [
+ 120.15596951568,
+ 30.223077287845
+ ],
+ "elevation": 110
+ },
+ {
+ "coord": [
+ 120.15613327857,
+ 30.222957827387
+ ],
+ "elevation": 110
+ },
+ {
+ "coord": [
+ 120.15655811546,
+ 30.223473989213
+ ],
+ "elevation": 102
+ },
+ {
+ "coord": [
+ 120.15697562064,
+ 30.223339452799
+ ],
+ "elevation": 94
+ },
+ {
+ "coord": [
+ 120.15718703762,
+ 30.223108952244
+ ],
+ "elevation": 92
+ },
+ {
+ "coord": [
+ 120.15762737829,
+ 30.223538561087
+ ],
+ "elevation": 95
+ },
+ {
+ "coord": [
+ 120.158787524,
+ 30.223950934187
+ ],
+ "elevation": 84
+ },
+ {
+ "coord": [
+ 120.15868263107,
+ 30.224042690616
+ ],
+ "elevation": 78
+ },
+ {
+ "coord": [
+ 120.15884028131,
+ 30.224930697486
+ ],
+ "elevation": 76
+ },
+ {
+ "coord": [
+ 120.15871467118,
+ 30.225576568962
+ ],
+ "elevation": 68
+ },
+ {
+ "coord": [
+ 120.15887671948,
+ 30.225887174113
+ ],
+ "elevation": 65
+ },
+ {
+ "coord": [
+ 120.15878450931,
+ 30.226244845426
+ ],
+ "elevation": 62
+ },
+ {
+ "coord": [
+ 120.15894238915,
+ 30.226892224315
+ ],
+ "elevation": 58
+ },
+ {
+ "coord": [
+ 120.1588685477,
+ 30.227877367832
+ ],
+ "elevation": 49
+ },
+ {
+ "coord": [
+ 120.15665952392,
+ 30.227929872006
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.15558896596,
+ 30.227547621922
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.15487866568,
+ 30.227026999323
+ ],
+ "elevation": 24
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.16595187304,
+ 30.253893433394
+ ],
+ "elevation": 22.3
+ },
+ {
+ "coord": [
+ 120.16566594516,
+ 30.254599587781
+ ],
+ "elevation": 11.2
+ },
+ {
+ "coord": [
+ 120.16602056474,
+ 30.254834096955
+ ],
+ "elevation": 7.8
+ },
+ {
+ "coord": [
+ 120.16620727896,
+ 30.255268406374
+ ],
+ "elevation": 7.8
+ },
+ {
+ "coord": [
+ 120.16662528553,
+ 30.255444179709
+ ],
+ "elevation": 8.3
+ },
+ {
+ "coord": [
+ 120.16719524201,
+ 30.255303947912
+ ],
+ "elevation": 7.8
+ },
+ {
+ "coord": [
+ 120.16744025991,
+ 30.255797132977
+ ],
+ "elevation": 7.4
+ },
+ {
+ "coord": [
+ 120.16781131387,
+ 30.255926418125
+ ],
+ "elevation": 6.9
+ },
+ {
+ "coord": [
+ 120.16795577311,
+ 30.255752141534
+ ],
+ "elevation": 6.4
+ },
+ {
+ "coord": [
+ 120.16821931663,
+ 30.256289908846
+ ],
+ "elevation": 5.9
+ },
+ {
+ "coord": [
+ 120.16901394499,
+ 30.256632472819
+ ],
+ "elevation": 5.9
+ },
+ {
+ "coord": [
+ 120.16918204478,
+ 30.25738860246
+ ],
+ "elevation": 6.4
+ },
+ {
+ "coord": [
+ 120.1678156924,
+ 30.259591434675
+ ],
+ "elevation": 6.4
+ },
+ {
+ "coord": [
+ 120.16681080129,
+ 30.260855487578
+ ],
+ "elevation": 6.9
+ },
+ {
+ "coord": [
+ 120.16639251068,
+ 30.261766321212
+ ],
+ "elevation": 6.9
+ },
+ {
+ "coord": [
+ 120.16574346338,
+ 30.262303664644
+ ],
+ "elevation": 6.4
+ },
+ {
+ "coord": [
+ 120.16499680069,
+ 30.262384329837
+ ],
+ "elevation": 6.4
+ },
+ {
+ "coord": [
+ 120.16424859065,
+ 30.263116679816
+ ],
+ "elevation": 6.9
+ },
+ {
+ "coord": [
+ 120.16354862433,
+ 30.264471319471
+ ],
+ "elevation": 7.4
+ },
+ {
+ "coord": [
+ 120.16299068707,
+ 30.266195274272
+ ],
+ "elevation": 7.4
+ },
+ {
+ "coord": [
+ 120.16121831605,
+ 30.265654981511
+ ],
+ "elevation": 6.9
+ },
+ {
+ "coord": [
+ 120.16038406355,
+ 30.265565811995
+ ],
+ "elevation": 6.4
+ },
+ {
+ "coord": [
+ 120.15869916129,
+ 30.26498363704
+ ],
+ "elevation": 5.9
+ },
+ {
+ "coord": [
+ 120.15661224719,
+ 30.262803151035
+ ],
+ "elevation": 5.9
+ },
+ {
+ "coord": [
+ 120.15380029556,
+ 30.259381821264
+ ],
+ "elevation": 6.9
+ },
+ {
+ "coord": [
+ 120.15306339001,
+ 30.258757327584
+ ],
+ "elevation": 6.9
+ },
+ {
+ "coord": [
+ 120.15279352337,
+ 30.258689864598
+ ],
+ "elevation": 6.9
+ },
+ {
+ "coord": [
+ 120.15276147487,
+ 30.25815349952
+ ],
+ "elevation": 7.4
+ },
+ {
+ "coord": [
+ 120.15182660792,
+ 30.257712906403
+ ],
+ "elevation": 6.9
+ },
+ {
+ "coord": [
+ 120.15104768222,
+ 30.256659347594
+ ],
+ "elevation": 6.9
+ },
+ {
+ "coord": [
+ 120.14989584103,
+ 30.256663912178
+ ],
+ "elevation": 7.4
+ },
+ {
+ "coord": [
+ 120.14940646158,
+ 30.256341772501
+ ],
+ "elevation": 6.9
+ },
+ {
+ "coord": [
+ 120.14830718644,
+ 30.256141837863
+ ],
+ "elevation": 7.4
+ },
+ {
+ "coord": [
+ 120.14612389077,
+ 30.256234832563
+ ],
+ "elevation": 7.8
+ },
+ {
+ "coord": [
+ 120.14537051174,
+ 30.256518965374
+ ],
+ "elevation": 7.8
+ },
+ {
+ "coord": [
+ 120.14528078265,
+ 30.257647204273
+ ],
+ "elevation": 9.8
+ },
+ {
+ "coord": [
+ 120.14548918465,
+ 30.257712845231
+ ],
+ "elevation": 9.3
+ },
+ {
+ "coord": [
+ 120.14468900079,
+ 30.258306208092
+ ],
+ "elevation": 10.2
+ },
+ {
+ "coord": [
+ 120.14199481188,
+ 30.257843938007
+ ],
+ "elevation": 9.8
+ },
+ {
+ "coord": [
+ 120.14205400929,
+ 30.257998326782
+ ],
+ "elevation": 10.2
+ },
+ {
+ "coord": [
+ 120.14127322727,
+ 30.25783544627
+ ],
+ "elevation": 10.7
+ },
+ {
+ "coord": [
+ 120.14069464798,
+ 30.258203002482
+ ],
+ "elevation": 11.7
+ },
+ {
+ "coord": [
+ 120.14021585972,
+ 30.258074453695
+ ],
+ "elevation": 11.7
+ },
+ {
+ "coord": [
+ 120.13976856043,
+ 30.25813419948
+ ],
+ "elevation": 11.2
+ },
+ {
+ "coord": [
+ 120.13996066266,
+ 30.258463424588
+ ],
+ "elevation": 13.1
+ },
+ {
+ "coord": [
+ 120.13827685693,
+ 30.258460957604
+ ],
+ "elevation": 12.6
+ },
+ {
+ "coord": [
+ 120.13795081162,
+ 30.258577078778
+ ],
+ "elevation": 12.6
+ },
+ {
+ "coord": [
+ 120.13784110935,
+ 30.258806157236
+ ],
+ "elevation": 15.5
+ },
+ {
+ "coord": [
+ 120.13805284414,
+ 30.258954212889
+ ],
+ "elevation": 19.8
+ },
+ {
+ "coord": [
+ 120.13824151319,
+ 30.25882057792
+ ],
+ "elevation": 21.3
+ },
+ {
+ "coord": [
+ 120.13842490791,
+ 30.258885582406
+ ],
+ "elevation": 26.1
+ },
+ {
+ "coord": [
+ 120.13852924013,
+ 30.259412422009
+ ],
+ "elevation": 38.6
+ },
+ {
+ "coord": [
+ 120.1395336693,
+ 30.260830443999
+ ],
+ "elevation": 63.1
+ },
+ {
+ "coord": [
+ 120.13961531126,
+ 30.261227223684
+ ],
+ "elevation": 68.9
+ },
+ {
+ "coord": [
+ 120.13950502375,
+ 30.261479508718
+ ],
+ "elevation": 71.3
+ },
+ {
+ "coord": [
+ 120.13990524756,
+ 30.261828490114
+ ],
+ "elevation": 85.7
+ },
+ {
+ "coord": [
+ 120.14006027819,
+ 30.261725933221
+ ],
+ "elevation": 92.4
+ },
+ {
+ "coord": [
+ 120.14056755479,
+ 30.262574516859
+ ],
+ "elevation": 92.9
+ },
+ {
+ "coord": [
+ 120.14084934321,
+ 30.262752969844
+ ],
+ "elevation": 91.5
+ },
+ {
+ "coord": [
+ 120.14106859693,
+ 30.26343492606
+ ],
+ "elevation": 110.7
+ },
+ {
+ "coord": [
+ 120.1415997695,
+ 30.264134402331
+ ],
+ "elevation": 121.3
+ },
+ {
+ "coord": [
+ 120.1415184671,
+ 30.264270602065
+ ],
+ "elevation": 121.3
+ },
+ {
+ "coord": [
+ 120.14170771311,
+ 30.264867658352
+ ],
+ "elevation": 121.3
+ },
+ {
+ "coord": [
+ 120.14165630358,
+ 30.264456231585
+ ],
+ "elevation": 122.2
+ },
+ {
+ "coord": [
+ 120.141826488,
+ 30.264103130617
+ ],
+ "elevation": 118.9
+ },
+ {
+ "coord": [
+ 120.14215360599,
+ 30.263980097938
+ ],
+ "elevation": 126.1
+ },
+ {
+ "coord": [
+ 120.14249557022,
+ 30.264068680184
+ ],
+ "elevation": 126.6
+ },
+ {
+ "coord": [
+ 120.14231842703,
+ 30.263746118627
+ ],
+ "elevation": 121.7
+ },
+ {
+ "coord": [
+ 120.14263540005,
+ 30.263907185319
+ ],
+ "elevation": 117.9
+ },
+ {
+ "coord": [
+ 120.14270123972,
+ 30.264290703773
+ ],
+ "elevation": 116.9
+ },
+ {
+ "coord": [
+ 120.14353042018,
+ 30.265037890504
+ ],
+ "elevation": 92.9
+ },
+ {
+ "coord": [
+ 120.14361941672,
+ 30.264970384789
+ ],
+ "elevation": 92.4
+ },
+ {
+ "coord": [
+ 120.1436674223,
+ 30.265121339182
+ ],
+ "elevation": 89.5
+ },
+ {
+ "coord": [
+ 120.14413746643,
+ 30.265250542161
+ ],
+ "elevation": 83.8
+ },
+ {
+ "coord": [
+ 120.14449023738,
+ 30.265000759751
+ ],
+ "elevation": 87.1
+ },
+ {
+ "coord": [
+ 120.14412461078,
+ 30.264664437999
+ ],
+ "elevation": 96.3
+ },
+ {
+ "coord": [
+ 120.14393576867,
+ 30.26489380494
+ ],
+ "elevation": 98.2
+ },
+ {
+ "coord": [
+ 120.14404653337,
+ 30.264790139011
+ ],
+ "elevation": 97.7
+ },
+ {
+ "coord": [
+ 120.14377719279,
+ 30.2647111274
+ ],
+ "elevation": 95.3
+ },
+ {
+ "coord": [
+ 120.14291668,
+ 30.264926306315
+ ],
+ "elevation": 103.5
+ },
+ {
+ "coord": [
+ 120.14340080867,
+ 30.264543018261
+ ],
+ "elevation": 106.8
+ },
+ {
+ "coord": [
+ 120.14367186711,
+ 30.264794618536
+ ],
+ "elevation": 108.3
+ },
+ {
+ "coord": [
+ 120.14406148009,
+ 30.264738366588
+ ],
+ "elevation": 101.6
+ },
+ {
+ "coord": [
+ 120.14401481309,
+ 30.264096060054
+ ],
+ "elevation": 88.6
+ },
+ {
+ "coord": [
+ 120.14365949918,
+ 30.263684326872
+ ],
+ "elevation": 96.3
+ },
+ {
+ "coord": [
+ 120.14294295383,
+ 30.263339034314
+ ],
+ "elevation": 90
+ },
+ {
+ "coord": [
+ 120.1428779947,
+ 30.26308194185
+ ],
+ "elevation": 81.4
+ },
+ {
+ "coord": [
+ 120.14266455221,
+ 30.263074658099
+ ],
+ "elevation": 84.3
+ },
+ {
+ "coord": [
+ 120.14304105542,
+ 30.262638181438
+ ],
+ "elevation": 60.7
+ },
+ {
+ "coord": [
+ 120.14310483566,
+ 30.262338817596
+ ],
+ "elevation": 49.2
+ },
+ {
+ "coord": [
+ 120.14245054735,
+ 30.261421818995
+ ],
+ "elevation": 38.1
+ },
+ {
+ "coord": [
+ 120.14243841904,
+ 30.261594546917
+ ],
+ "elevation": 39.1
+ },
+ {
+ "coord": [
+ 120.14245456612,
+ 30.261330871046
+ ],
+ "elevation": 39.1
+ },
+ {
+ "coord": [
+ 120.14200591126,
+ 30.260898350321
+ ],
+ "elevation": 37.6
+ },
+ {
+ "coord": [
+ 120.14139901789,
+ 30.259936280647
+ ],
+ "elevation": 31.9
+ },
+ {
+ "coord": [
+ 120.13970894924,
+ 30.258107514603
+ ],
+ "elevation": 27.5
+ },
+ {
+ "coord": [
+ 120.14068319907,
+ 30.258180085838
+ ],
+ "elevation": 26.6
+ },
+ {
+ "coord": [
+ 120.14125184768,
+ 30.257982515831
+ ],
+ "elevation": 25.6
+ },
+ {
+ "coord": [
+ 120.14115140408,
+ 30.257967011974
+ ],
+ "elevation": 25.6
+ },
+ {
+ "coord": [
+ 120.1412458837,
+ 30.257684134202
+ ],
+ "elevation": 25.1
+ },
+ {
+ "coord": [
+ 120.14114204765,
+ 30.2571965632
+ ],
+ "elevation": 23.7
+ },
+ {
+ "coord": [
+ 120.14119956451,
+ 30.257301627609
+ ],
+ "elevation": 23.2
+ },
+ {
+ "coord": [
+ 120.14205069212,
+ 30.257288035863
+ ],
+ "elevation": 22.7
+ },
+ {
+ "coord": [
+ 120.14307688497,
+ 30.257783991311
+ ],
+ "elevation": 21.8
+ },
+ {
+ "coord": [
+ 120.14494641762,
+ 30.258056147529
+ ],
+ "elevation": 23.2
+ },
+ {
+ "coord": [
+ 120.14527819436,
+ 30.257809227659
+ ],
+ "elevation": 24.2
+ },
+ {
+ "coord": [
+ 120.14534693586,
+ 30.256655543581
+ ],
+ "elevation": 21.3
+ },
+ {
+ "coord": [
+ 120.14553060282,
+ 30.25645946337
+ ],
+ "elevation": 20.8
+ },
+ {
+ "coord": [
+ 120.1460849709,
+ 30.256268832756
+ ],
+ "elevation": 20.8
+ },
+ {
+ "coord": [
+ 120.14643479271,
+ 30.256366280623
+ ],
+ "elevation": 20.8
+ },
+ {
+ "coord": [
+ 120.14815654239,
+ 30.256160688879
+ ],
+ "elevation": 20.3
+ },
+ {
+ "coord": [
+ 120.15042490158,
+ 30.256529700335
+ ],
+ "elevation": 20.3
+ },
+ {
+ "coord": [
+ 120.15099557212,
+ 30.256905298084
+ ],
+ "elevation": 20.8
+ },
+ {
+ "coord": [
+ 120.15111592839,
+ 30.256797309053
+ ],
+ "elevation": 20.8
+ },
+ {
+ "coord": [
+ 120.15115506503,
+ 30.256993045534
+ ],
+ "elevation": 19.8
+ },
+ {
+ "coord": [
+ 120.15110204412,
+ 30.256813296772
+ ],
+ "elevation": 19.8
+ },
+ {
+ "coord": [
+ 120.15105473615,
+ 30.256940047321
+ ],
+ "elevation": 20.3
+ },
+ {
+ "coord": [
+ 120.15186020771,
+ 30.257808615361
+ ],
+ "elevation": 19.8
+ },
+ {
+ "coord": [
+ 120.15269496787,
+ 30.25814332886
+ ],
+ "elevation": 19.8
+ },
+ {
+ "coord": [
+ 120.15279766381,
+ 30.258416562505
+ ],
+ "elevation": 19.8
+ },
+ {
+ "coord": [
+ 120.15382611726,
+ 30.259291532589
+ ],
+ "elevation": 19.8
+ },
+ {
+ "coord": [
+ 120.15496025478,
+ 30.260800622357
+ ],
+ "elevation": 23.2
+ },
+ {
+ "coord": [
+ 120.15877251976,
+ 30.26506040484
+ ],
+ "elevation": 22.7
+ },
+ {
+ "coord": [
+ 120.16040339995,
+ 30.265540224666
+ ],
+ "elevation": 23.2
+ },
+ {
+ "coord": [
+ 120.16115125054,
+ 30.265606555513
+ ],
+ "elevation": 23.7
+ },
+ {
+ "coord": [
+ 120.16292422832,
+ 30.266252341896
+ ],
+ "elevation": 24.2
+ },
+ {
+ "coord": [
+ 120.16312278762,
+ 30.266085227206
+ ],
+ "elevation": 24.7
+ },
+ {
+ "coord": [
+ 120.16325233965,
+ 30.265270650638
+ ],
+ "elevation": 24.2
+ },
+ {
+ "coord": [
+ 120.16368473955,
+ 30.264261654326
+ ],
+ "elevation": 24.2
+ },
+ {
+ "coord": [
+ 120.1639562247,
+ 30.263981266571
+ ],
+ "elevation": 24.2
+ },
+ {
+ "coord": [
+ 120.16406410325,
+ 30.263502155204
+ ],
+ "elevation": 23.7
+ },
+ {
+ "coord": [
+ 120.1648016691,
+ 30.263568138251
+ ],
+ "elevation": 23.7
+ },
+ {
+ "coord": [
+ 120.16556276172,
+ 30.26344240293
+ ],
+ "elevation": 23.2
+ },
+ {
+ "coord": [
+ 120.16571848073,
+ 30.263275656819
+ ],
+ "elevation": 23.2
+ },
+ {
+ "coord": [
+ 120.16889336234,
+ 30.258662721553
+ ],
+ "elevation": 21.8
+ },
+ {
+ "coord": [
+ 120.1689179421,
+ 30.2584130047
+ ],
+ "elevation": 21.3
+ },
+ {
+ "coord": [
+ 120.16944296852,
+ 30.257480255263
+ ],
+ "elevation": 22.3
+ },
+ {
+ "coord": [
+ 120.16945675388,
+ 30.256398808308
+ ],
+ "elevation": 22.3
+ },
+ {
+ "coord": [
+ 120.16859026507,
+ 30.255723120118
+ ],
+ "elevation": 21.8
+ },
+ {
+ "coord": [
+ 120.16862795188,
+ 30.255537228443
+ ],
+ "elevation": 21.3
+ },
+ {
+ "coord": [
+ 120.16769602834,
+ 30.254915341997
+ ],
+ "elevation": 21.8
+ },
+ {
+ "coord": [
+ 120.16748900957,
+ 30.254579978833
+ ],
+ "elevation": 22.3
+ },
+ {
+ "coord": [
+ 120.16734985633,
+ 30.253424942008
+ ],
+ "elevation": 21.8
+ },
+ {
+ "coord": [
+ 120.16757469193,
+ 30.252140678581
+ ],
+ "elevation": 23.2
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.15805924729,
+ 30.215193751646
+ ],
+ "elevation": 4
+ },
+ {
+ "coord": [
+ 120.15812110064,
+ 30.216018598569
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.15863158389,
+ 30.216064937331
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.15921647593,
+ 30.21662533149
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.1592124339,
+ 30.217422131124
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.15967331717,
+ 30.217639818282
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.15878989671,
+ 30.218930156336
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.15890390518,
+ 30.219422845321
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.15739772411,
+ 30.219033795731
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.1569890657,
+ 30.218343468749
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.15728557217,
+ 30.218064727539
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.15688185661,
+ 30.217393036737
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.15678920933,
+ 30.217654927824
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.15582771424,
+ 30.218391865104
+ ],
+ "elevation": 48
+ },
+ {
+ "coord": [
+ 120.15532242216,
+ 30.218567095734
+ ],
+ "elevation": 64
+ },
+ {
+ "coord": [
+ 120.15533176152,
+ 30.219057391565
+ ],
+ "elevation": 77
+ },
+ {
+ "coord": [
+ 120.15503989912,
+ 30.219305656528
+ ],
+ "elevation": 90
+ },
+ {
+ "coord": [
+ 120.1548136727,
+ 30.219254822123
+ ],
+ "elevation": 103
+ },
+ {
+ "coord": [
+ 120.15572229749,
+ 30.220290635329
+ ],
+ "elevation": 108
+ },
+ {
+ "coord": [
+ 120.15556642565,
+ 30.220419436222
+ ],
+ "elevation": 90
+ },
+ {
+ "coord": [
+ 120.15572040877,
+ 30.220374768827
+ ],
+ "elevation": 92
+ },
+ {
+ "coord": [
+ 120.15646789148,
+ 30.220926090466
+ ],
+ "elevation": 77
+ },
+ {
+ "coord": [
+ 120.1565382726,
+ 30.221158346343
+ ],
+ "elevation": 56
+ },
+ {
+ "coord": [
+ 120.15657910835,
+ 30.220979615102
+ ],
+ "elevation": 88
+ },
+ {
+ "coord": [
+ 120.15716876012,
+ 30.22139446292
+ ],
+ "elevation": 122
+ },
+ {
+ "coord": [
+ 120.15700582534,
+ 30.221579827837
+ ],
+ "elevation": 59
+ },
+ {
+ "coord": [
+ 120.15700468588,
+ 30.221409480053
+ ],
+ "elevation": 103
+ },
+ {
+ "coord": [
+ 120.15733997982,
+ 30.221584678008
+ ],
+ "elevation": 112
+ },
+ {
+ "coord": [
+ 120.15726396313,
+ 30.221673188396
+ ],
+ "elevation": 108
+ },
+ {
+ "coord": [
+ 120.15806121963,
+ 30.222628649634
+ ],
+ "elevation": 86
+ },
+ {
+ "coord": [
+ 120.15907140086,
+ 30.222950803091
+ ],
+ "elevation": 88
+ },
+ {
+ "coord": [
+ 120.15925685139,
+ 30.223273991972
+ ],
+ "elevation": 101
+ },
+ {
+ "coord": [
+ 120.15985657753,
+ 30.223626406694
+ ],
+ "elevation": 109
+ },
+ {
+ "coord": [
+ 120.16032314795,
+ 30.223605859045
+ ],
+ "elevation": 119
+ },
+ {
+ "coord": [
+ 120.16055220077,
+ 30.223234312478
+ ],
+ "elevation": 123
+ },
+ {
+ "coord": [
+ 120.1604637482,
+ 30.222819772263
+ ],
+ "elevation": 151
+ },
+ {
+ "coord": [
+ 120.1610235655,
+ 30.222175503027
+ ],
+ "elevation": 172
+ },
+ {
+ "coord": [
+ 120.16120188458,
+ 30.221598199822
+ ],
+ "elevation": 172
+ },
+ {
+ "coord": [
+ 120.16161798683,
+ 30.222368971188
+ ],
+ "elevation": 197
+ },
+ {
+ "coord": [
+ 120.16174244838,
+ 30.222928565869
+ ],
+ "elevation": 197
+ },
+ {
+ "coord": [
+ 120.16191825944,
+ 30.223047743772
+ ],
+ "elevation": 199
+ },
+ {
+ "coord": [
+ 120.16245635458,
+ 30.222794726399
+ ],
+ "elevation": 195
+ },
+ {
+ "coord": [
+ 120.16350178766,
+ 30.223294371938
+ ],
+ "elevation": 176
+ },
+ {
+ "coord": [
+ 120.16399275793,
+ 30.223261653882
+ ],
+ "elevation": 160
+ },
+ {
+ "coord": [
+ 120.16434937713,
+ 30.223199053474
+ ],
+ "elevation": 157
+ },
+ {
+ "coord": [
+ 120.16464349184,
+ 30.222859766332
+ ],
+ "elevation": 198
+ },
+ {
+ "coord": [
+ 120.16461138686,
+ 30.222976972627
+ ],
+ "elevation": 167
+ },
+ {
+ "coord": [
+ 120.16616070659,
+ 30.222403197516
+ ],
+ "elevation": 156
+ },
+ {
+ "coord": [
+ 120.16379288719,
+ 30.218587336803
+ ],
+ "elevation": 86
+ },
+ {
+ "coord": [
+ 120.16371393074,
+ 30.218961452047
+ ],
+ "elevation": 61
+ },
+ {
+ "coord": [
+ 120.16379017435,
+ 30.218667139865
+ ],
+ "elevation": 68
+ },
+ {
+ "coord": [
+ 120.16286995684,
+ 30.218131291732
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.16208705608,
+ 30.217875912111
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16076719114,
+ 30.21668566968
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.1606058444,
+ 30.216277655104
+ ],
+ "elevation": 20
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.14489410006,
+ 30.27079383873
+ ],
+ "elevation": 11.1
+ },
+ {
+ "coord": [
+ 120.14502584699,
+ 30.27058073613
+ ],
+ "elevation": 11.1
+ },
+ {
+ "coord": [
+ 120.14498521422,
+ 30.270395533341
+ ],
+ "elevation": 11.3
+ },
+ {
+ "coord": [
+ 120.14497726012,
+ 30.270211722124
+ ],
+ "elevation": 11.5
+ },
+ {
+ "coord": [
+ 120.145008246,
+ 30.270022152239
+ ],
+ "elevation": 11.8
+ },
+ {
+ "coord": [
+ 120.14499293322,
+ 30.269831672015
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.14500158285,
+ 30.269638106773
+ ],
+ "elevation": 12.8
+ },
+ {
+ "coord": [
+ 120.14500669278,
+ 30.269451649517
+ ],
+ "elevation": 13.9
+ },
+ {
+ "coord": [
+ 120.14499519129,
+ 30.269272503063
+ ],
+ "elevation": 14.9
+ },
+ {
+ "coord": [
+ 120.1450207259,
+ 30.269094409459
+ ],
+ "elevation": 16.1
+ },
+ {
+ "coord": [
+ 120.14502147093,
+ 30.268901236179
+ ],
+ "elevation": 17.2
+ },
+ {
+ "coord": [
+ 120.14505870327,
+ 30.268698542976
+ ],
+ "elevation": 18.9
+ },
+ {
+ "coord": [
+ 120.14502703315,
+ 30.268496376788
+ ],
+ "elevation": 20.4
+ },
+ {
+ "coord": [
+ 120.14513072987,
+ 30.268338497251
+ ],
+ "elevation": 21.8
+ },
+ {
+ "coord": [
+ 120.14529735214,
+ 30.268214623848
+ ],
+ "elevation": 22.9
+ },
+ {
+ "coord": [
+ 120.14525478704,
+ 30.268023211644
+ ],
+ "elevation": 24.6
+ },
+ {
+ "coord": [
+ 120.14530318545,
+ 30.267837699514
+ ],
+ "elevation": 27.2
+ },
+ {
+ "coord": [
+ 120.14533442509,
+ 30.267652997593
+ ],
+ "elevation": 29.8
+ },
+ {
+ "coord": [
+ 120.14535613105,
+ 30.267468173138
+ ],
+ "elevation": 32.6
+ },
+ {
+ "coord": [
+ 120.14536584904,
+ 30.267276482524
+ ],
+ "elevation": 35.3
+ },
+ {
+ "coord": [
+ 120.14549078253,
+ 30.267113634479
+ ],
+ "elevation": 40.7
+ },
+ {
+ "coord": [
+ 120.14561381041,
+ 30.266950807995
+ ],
+ "elevation": 46.1
+ },
+ {
+ "coord": [
+ 120.14571040461,
+ 30.266755565856
+ ],
+ "elevation": 51.4
+ },
+ {
+ "coord": [
+ 120.14582798892,
+ 30.266598508688
+ ],
+ "elevation": 55.7
+ },
+ {
+ "coord": [
+ 120.14599434512,
+ 30.266476203278
+ ],
+ "elevation": 59.2
+ },
+ {
+ "coord": [
+ 120.14621656794,
+ 30.266407242917
+ ],
+ "elevation": 61.8
+ },
+ {
+ "coord": [
+ 120.14639410619,
+ 30.266299102188
+ ],
+ "elevation": 67.1
+ },
+ {
+ "coord": [
+ 120.14646810771,
+ 30.266126435018
+ ],
+ "elevation": 73.6
+ },
+ {
+ "coord": [
+ 120.14668164026,
+ 30.266085237763
+ ],
+ "elevation": 77.8
+ },
+ {
+ "coord": [
+ 120.14687719099,
+ 30.26602668006
+ ],
+ "elevation": 82.5
+ },
+ {
+ "coord": [
+ 120.14706374531,
+ 30.26594600628
+ ],
+ "elevation": 87.8
+ },
+ {
+ "coord": [
+ 120.14712222141,
+ 30.265770587963
+ ],
+ "elevation": 94.8
+ },
+ {
+ "coord": [
+ 120.14733058853,
+ 30.265718830232
+ ],
+ "elevation": 100.3
+ },
+ {
+ "coord": [
+ 120.14754252856,
+ 30.265717455928
+ ],
+ "elevation": 104.3
+ },
+ {
+ "coord": [
+ 120.14770427644,
+ 30.265582611249
+ ],
+ "elevation": 110.2
+ },
+ {
+ "coord": [
+ 120.14762491213,
+ 30.265417093044
+ ],
+ "elevation": 108.3
+ },
+ {
+ "coord": [
+ 120.14747065286,
+ 30.265289995895
+ ],
+ "elevation": 105.5
+ },
+ {
+ "coord": [
+ 120.14725542676,
+ 30.265256962071
+ ],
+ "elevation": 103.9
+ },
+ {
+ "coord": [
+ 120.14707559009,
+ 30.265172044282
+ ],
+ "elevation": 103.3
+ },
+ {
+ "coord": [
+ 120.14688104028,
+ 30.265074602411
+ ],
+ "elevation": 103.4
+ },
+ {
+ "coord": [
+ 120.14668433392,
+ 30.265010277567
+ ],
+ "elevation": 104
+ },
+ {
+ "coord": [
+ 120.14648872539,
+ 30.264952698983
+ ],
+ "elevation": 105.2
+ },
+ {
+ "coord": [
+ 120.14632222661,
+ 30.264825175272
+ ],
+ "elevation": 108.6
+ },
+ {
+ "coord": [
+ 120.14619765838,
+ 30.264666032091
+ ],
+ "elevation": 111.1
+ },
+ {
+ "coord": [
+ 120.14614988385,
+ 30.264478242442
+ ],
+ "elevation": 109.5
+ },
+ {
+ "coord": [
+ 120.14601388537,
+ 30.264334464698
+ ],
+ "elevation": 107.9
+ },
+ {
+ "coord": [
+ 120.14585391442,
+ 30.264181021697
+ ],
+ "elevation": 107.6
+ },
+ {
+ "coord": [
+ 120.14574161148,
+ 30.264031962479
+ ],
+ "elevation": 109
+ },
+ {
+ "coord": [
+ 120.14555661991,
+ 30.26393179793
+ ],
+ "elevation": 111.4
+ },
+ {
+ "coord": [
+ 120.14540375499,
+ 30.263807777323
+ ],
+ "elevation": 111.6
+ },
+ {
+ "coord": [
+ 120.14524298966,
+ 30.263675728285
+ ],
+ "elevation": 107.5
+ },
+ {
+ "coord": [
+ 120.14514647595,
+ 30.263506851196
+ ],
+ "elevation": 104.2
+ },
+ {
+ "coord": [
+ 120.14503363246,
+ 30.263354229849
+ ],
+ "elevation": 101.1
+ },
+ {
+ "coord": [
+ 120.14501146213,
+ 30.263179034116
+ ],
+ "elevation": 99.2
+ },
+ {
+ "coord": [
+ 120.14501922812,
+ 30.262974071433
+ ],
+ "elevation": 97.5
+ },
+ {
+ "coord": [
+ 120.14496192588,
+ 30.26280158982
+ ],
+ "elevation": 95.4
+ },
+ {
+ "coord": [
+ 120.14487521084,
+ 30.262628475215
+ ],
+ "elevation": 93.9
+ },
+ {
+ "coord": [
+ 120.14483397211,
+ 30.26245221368
+ ],
+ "elevation": 92.9
+ },
+ {
+ "coord": [
+ 120.14475324139,
+ 30.262270318134
+ ],
+ "elevation": 92.4
+ },
+ {
+ "coord": [
+ 120.14468804134,
+ 30.262101203681
+ ],
+ "elevation": 90.2
+ },
+ {
+ "coord": [
+ 120.14459016133,
+ 30.261930415672
+ ],
+ "elevation": 88.6
+ },
+ {
+ "coord": [
+ 120.14442912364,
+ 30.261786628864
+ ],
+ "elevation": 84.8
+ },
+ {
+ "coord": [
+ 120.1443007653,
+ 30.261642333301
+ ],
+ "elevation": 81.2
+ },
+ {
+ "coord": [
+ 120.14423583417,
+ 30.26146831308
+ ],
+ "elevation": 79.1
+ },
+ {
+ "coord": [
+ 120.14407318602,
+ 30.261349206708
+ ],
+ "elevation": 77
+ },
+ {
+ "coord": [
+ 120.14389177319,
+ 30.261258038357
+ ],
+ "elevation": 75.9
+ },
+ {
+ "coord": [
+ 120.14367778743,
+ 30.261301362597
+ ],
+ "elevation": 74.3
+ },
+ {
+ "coord": [
+ 120.14345692404,
+ 30.261235689257
+ ],
+ "elevation": 68.3
+ },
+ {
+ "coord": [
+ 120.14322607297,
+ 30.261279743384
+ ],
+ "elevation": 61.3
+ },
+ {
+ "coord": [
+ 120.14300530115,
+ 30.261320363999
+ ],
+ "elevation": 54.5
+ },
+ {
+ "coord": [
+ 120.14279350595,
+ 30.261339663484
+ ],
+ "elevation": 50.5
+ },
+ {
+ "coord": [
+ 120.1425686347,
+ 30.261336327155
+ ],
+ "elevation": 49.8
+ },
+ {
+ "coord": [
+ 120.14237937344,
+ 30.261249438913
+ ],
+ "elevation": 48.7
+ },
+ {
+ "coord": [
+ 120.1421990921,
+ 30.261150193751
+ ],
+ "elevation": 46.4
+ },
+ {
+ "coord": [
+ 120.14207267762,
+ 30.261001622558
+ ],
+ "elevation": 43.1
+ },
+ {
+ "coord": [
+ 120.14194028111,
+ 30.260859362397
+ ],
+ "elevation": 41.7
+ },
+ {
+ "coord": [
+ 120.1418334585,
+ 30.26069666596
+ ],
+ "elevation": 39.3
+ },
+ {
+ "coord": [
+ 120.14177697649,
+ 30.260511576032
+ ],
+ "elevation": 38
+ },
+ {
+ "coord": [
+ 120.14171968087,
+ 30.260331378372
+ ],
+ "elevation": 37.3
+ },
+ {
+ "coord": [
+ 120.14161585527,
+ 30.260171338154
+ ],
+ "elevation": 35.9
+ },
+ {
+ "coord": [
+ 120.14143776234,
+ 30.260060845864
+ ],
+ "elevation": 33.2
+ },
+ {
+ "coord": [
+ 120.14131843616,
+ 30.259913742054
+ ],
+ "elevation": 29.5
+ },
+ {
+ "coord": [
+ 120.14118768676,
+ 30.259774646366
+ ],
+ "elevation": 26.1
+ },
+ {
+ "coord": [
+ 120.14107298478,
+ 30.259619321378
+ ],
+ "elevation": 26.6
+ },
+ {
+ "coord": [
+ 120.1410899925,
+ 30.259441111413
+ ],
+ "elevation": 25.9
+ },
+ {
+ "coord": [
+ 120.14089452162,
+ 30.259364150305
+ ],
+ "elevation": 26.1
+ },
+ {
+ "coord": [
+ 120.1409907216,
+ 30.259528683976
+ ],
+ "elevation": 26.6
+ },
+ {
+ "coord": [
+ 120.1408039426,
+ 30.259425279146
+ ],
+ "elevation": 26.7
+ },
+ {
+ "coord": [
+ 120.14065497965,
+ 30.259299390918
+ ],
+ "elevation": 25.9
+ },
+ {
+ "coord": [
+ 120.14050302587,
+ 30.259172439056
+ ],
+ "elevation": 24.6
+ },
+ {
+ "coord": [
+ 120.14038398792,
+ 30.259026065215
+ ],
+ "elevation": 22.5
+ },
+ {
+ "coord": [
+ 120.14027364325,
+ 30.258858951883
+ ],
+ "elevation": 22.2
+ },
+ {
+ "coord": [
+ 120.14015324714,
+ 30.258711217883
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.14009296574,
+ 30.258533430159
+ ],
+ "elevation": 21.1
+ },
+ {
+ "coord": [
+ 120.1400501072,
+ 30.258365464447
+ ],
+ "elevation": 20.1
+ },
+ {
+ "coord": [
+ 120.14025004171,
+ 30.258277252335
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.1404655814,
+ 30.258294360208
+ ],
+ "elevation": 20.2
+ },
+ {
+ "coord": [
+ 120.14067837798,
+ 30.258274568934
+ ],
+ "elevation": 19.9
+ },
+ {
+ "coord": [
+ 120.14087399696,
+ 30.25820585659
+ ],
+ "elevation": 19.2
+ },
+ {
+ "coord": [
+ 120.14106498522,
+ 30.258124153594
+ ],
+ "elevation": 18.3
+ },
+ {
+ "coord": [
+ 120.14127155348,
+ 30.258114935201
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.14138791003,
+ 30.258282162643
+ ],
+ "elevation": 19.6
+ },
+ {
+ "coord": [
+ 120.14146779806,
+ 30.258452579627
+ ],
+ "elevation": 21.5
+ },
+ {
+ "coord": [
+ 120.1415479624,
+ 30.258627872136
+ ],
+ "elevation": 23.5
+ },
+ {
+ "coord": [
+ 120.14171590284,
+ 30.258965859619
+ ],
+ "elevation": 28.1
+ },
+ {
+ "coord": [
+ 120.1415019664,
+ 30.258971441284
+ ],
+ "elevation": 26.8
+ },
+ {
+ "coord": [
+ 120.14129076871,
+ 30.258988350897
+ ],
+ "elevation": 25.5
+ },
+ {
+ "coord": [
+ 120.14111203875,
+ 30.25909624204
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.14108508448,
+ 30.25942950852
+ ],
+ "elevation": 25.9
+ },
+ {
+ "coord": [
+ 120.14118483032,
+ 30.259251843467
+ ],
+ "elevation": 25.3
+ },
+ {
+ "coord": [
+ 120.14101327933,
+ 30.259141483194
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.14081454692,
+ 30.259067537759
+ ],
+ "elevation": 24.2
+ },
+ {
+ "coord": [
+ 120.14062153097,
+ 30.258986708289
+ ],
+ "elevation": 22.9
+ },
+ {
+ "coord": [
+ 120.14056804415,
+ 30.258802343653
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.14076365639,
+ 30.258728763391
+ ],
+ "elevation": 22.1
+ },
+ {
+ "coord": [
+ 120.14072105833,
+ 30.258551590441
+ ],
+ "elevation": 21.2
+ },
+ {
+ "coord": [
+ 120.14080828748,
+ 30.25839093288
+ ],
+ "elevation": 20.3
+ },
+ {
+ "coord": [
+ 120.14099653729,
+ 30.258290824304
+ ],
+ "elevation": 19.5
+ },
+ {
+ "coord": [
+ 120.14120585026,
+ 30.258312782381
+ ],
+ "elevation": 19.4
+ },
+ {
+ "coord": [
+ 120.14143911531,
+ 30.25832543784
+ ],
+ "elevation": 20.2
+ },
+ {
+ "coord": [
+ 120.14150458808,
+ 30.258508253923
+ ],
+ "elevation": 22.1
+ },
+ {
+ "coord": [
+ 120.14160786786,
+ 30.25865772999
+ ],
+ "elevation": 24.1
+ },
+ {
+ "coord": [
+ 120.14141128771,
+ 30.258580039911
+ ],
+ "elevation": 22.5
+ },
+ {
+ "coord": [
+ 120.14118592597,
+ 30.25857867198
+ ],
+ "elevation": 21.7
+ },
+ {
+ "coord": [
+ 120.14098811035,
+ 30.258637959544
+ ],
+ "elevation": 21.9
+ },
+ {
+ "coord": [
+ 120.14077611827,
+ 30.258658059033
+ ],
+ "elevation": 21.7
+ },
+ {
+ "coord": [
+ 120.14072479413,
+ 30.258460105877
+ ],
+ "elevation": 20.7
+ },
+ {
+ "coord": [
+ 120.14057174347,
+ 30.258329647478
+ ],
+ "elevation": 20.2
+ },
+ {
+ "coord": [
+ 120.14037124206,
+ 30.258404890105
+ ],
+ "elevation": 20.6
+ },
+ {
+ "coord": [
+ 120.14019035615,
+ 30.258499395709
+ ],
+ "elevation": 20.9
+ },
+ {
+ "coord": [
+ 120.13999518396,
+ 30.258418504545
+ ],
+ "elevation": 20.4
+ },
+ {
+ "coord": [
+ 120.13979268869,
+ 30.258358023155
+ ],
+ "elevation": 19.7
+ },
+ {
+ "coord": [
+ 120.13988233356,
+ 30.258176503178
+ ],
+ "elevation": 18.4
+ },
+ {
+ "coord": [
+ 120.14004033745,
+ 30.258066040222
+ ],
+ "elevation": 18.6
+ },
+ {
+ "coord": [
+ 120.14024715455,
+ 30.258075421351
+ ],
+ "elevation": 19.3
+ },
+ {
+ "coord": [
+ 120.14044192334,
+ 30.257985074462
+ ],
+ "elevation": 19.2
+ },
+ {
+ "coord": [
+ 120.1402869643,
+ 30.257843212265
+ ],
+ "elevation": 18.6
+ },
+ {
+ "coord": [
+ 120.14023128193,
+ 30.257640681256
+ ],
+ "elevation": 17.9
+ },
+ {
+ "coord": [
+ 120.14036286631,
+ 30.257492793673
+ ],
+ "elevation": 17.6
+ },
+ {
+ "coord": [
+ 120.14046749934,
+ 30.257330038784
+ ],
+ "elevation": 16.8
+ },
+ {
+ "coord": [
+ 120.14060071726,
+ 30.257177766163
+ ],
+ "elevation": 16.1
+ },
+ {
+ "coord": [
+ 120.14074292689,
+ 30.257035133297
+ ],
+ "elevation": 16.1
+ },
+ {
+ "coord": [
+ 120.14071936597,
+ 30.25685310151
+ ],
+ "elevation": 15.9
+ },
+ {
+ "coord": [
+ 120.14074505963,
+ 30.256667454716
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.14059880436,
+ 30.256536367937
+ ],
+ "elevation": 14.6
+ },
+ {
+ "coord": [
+ 120.14043351906,
+ 30.256423412896
+ ],
+ "elevation": 12.8
+ },
+ {
+ "coord": [
+ 120.1403000579,
+ 30.256288605982
+ ],
+ "elevation": 12.8
+ },
+ {
+ "coord": [
+ 120.14031567264,
+ 30.25609685162
+ ],
+ "elevation": 13.1
+ },
+ {
+ "coord": [
+ 120.14033537676,
+ 30.255914542273
+ ],
+ "elevation": 13.5
+ },
+ {
+ "coord": [
+ 120.14046342071,
+ 30.255768586626
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.14054490639,
+ 30.255594719266
+ ],
+ "elevation": 14.4
+ },
+ {
+ "coord": [
+ 120.14059944329,
+ 30.255412778079
+ ],
+ "elevation": 14.4
+ },
+ {
+ "coord": [
+ 120.14067003451,
+ 30.255228730591
+ ],
+ "elevation": 14.4
+ },
+ {
+ "coord": [
+ 120.14084029124,
+ 30.25510906242
+ ],
+ "elevation": 14.4
+ },
+ {
+ "coord": [
+ 120.14094981731,
+ 30.254941049988
+ ],
+ "elevation": 14.2
+ },
+ {
+ "coord": [
+ 120.14103457465,
+ 30.254769281318
+ ],
+ "elevation": 13.9
+ },
+ {
+ "coord": [
+ 120.14103549027,
+ 30.254580421391
+ ],
+ "elevation": 13.6
+ },
+ {
+ "coord": [
+ 120.14097490972,
+ 30.254405655456
+ ],
+ "elevation": 13.3
+ },
+ {
+ "coord": [
+ 120.14097828326,
+ 30.254227616654
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.14101050201,
+ 30.25404621847
+ ],
+ "elevation": 12.6
+ },
+ {
+ "coord": [
+ 120.14115542783,
+ 30.253898078633
+ ],
+ "elevation": 12.1
+ },
+ {
+ "coord": [
+ 120.14135896477,
+ 30.253846015687
+ ],
+ "elevation": 12.6
+ },
+ {
+ "coord": [
+ 120.14152431031,
+ 30.253986539318
+ ],
+ "elevation": 13.6
+ },
+ {
+ "coord": [
+ 120.14168582205,
+ 30.25409752021
+ ],
+ "elevation": 14.7
+ },
+ {
+ "coord": [
+ 120.14189601736,
+ 30.254160066815
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.14210456599,
+ 30.254200085474
+ ],
+ "elevation": 16.7
+ },
+ {
+ "coord": [
+ 120.14231665449,
+ 30.254233242597
+ ],
+ "elevation": 16.4
+ },
+ {
+ "coord": [
+ 120.14252930243,
+ 30.254274502241
+ ],
+ "elevation": 15.9
+ },
+ {
+ "coord": [
+ 120.14272482157,
+ 30.254331983663
+ ],
+ "elevation": 15.4
+ },
+ {
+ "coord": [
+ 120.14293095069,
+ 30.25437436557
+ ],
+ "elevation": 14.7
+ },
+ {
+ "coord": [
+ 120.14311943872,
+ 30.254469884793
+ ],
+ "elevation": 13.5
+ },
+ {
+ "coord": [
+ 120.14312370043,
+ 30.254663555757
+ ],
+ "elevation": 13.5
+ },
+ {
+ "coord": [
+ 120.14305497603,
+ 30.254834941777
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.14298462537,
+ 30.25501421657
+ ],
+ "elevation": 14.9
+ },
+ {
+ "coord": [
+ 120.14295593882,
+ 30.255204288747
+ ],
+ "elevation": 15.4
+ },
+ {
+ "coord": [
+ 120.14289212549,
+ 30.255387806797
+ ],
+ "elevation": 16.4
+ },
+ {
+ "coord": [
+ 120.14282067757,
+ 30.255558406613
+ ],
+ "elevation": 16.8
+ },
+ {
+ "coord": [
+ 120.14274487298,
+ 30.255727979348
+ ],
+ "elevation": 16.5
+ },
+ {
+ "coord": [
+ 120.14270256492,
+ 30.255909827569
+ ],
+ "elevation": 16.3
+ },
+ {
+ "coord": [
+ 120.14263820413,
+ 30.256090628753
+ ],
+ "elevation": 16.3
+ },
+ {
+ "coord": [
+ 120.1425978069,
+ 30.256279501303
+ ],
+ "elevation": 16.3
+ },
+ {
+ "coord": [
+ 120.14253779522,
+ 30.256453453357
+ ],
+ "elevation": 16.6
+ },
+ {
+ "coord": [
+ 120.14246362732,
+ 30.256627329504
+ ],
+ "elevation": 16.3
+ },
+ {
+ "coord": [
+ 120.14242349819,
+ 30.25681320834
+ ],
+ "elevation": 15.7
+ },
+ {
+ "coord": [
+ 120.1423814628,
+ 30.256999112408
+ ],
+ "elevation": 15.2
+ },
+ {
+ "coord": [
+ 120.14230185006,
+ 30.257173327109
+ ],
+ "elevation": 14.9
+ },
+ {
+ "coord": [
+ 120.1422649986,
+ 30.257374349889
+ ],
+ "elevation": 15.2
+ },
+ {
+ "coord": [
+ 120.1421788515,
+ 30.257547562771
+ ],
+ "elevation": 16.5
+ },
+ {
+ "coord": [
+ 120.14214117019,
+ 30.257734484327
+ ],
+ "elevation": 17.5
+ },
+ {
+ "coord": [
+ 120.14188292446,
+ 30.257830540335
+ ],
+ "elevation": 17.7
+ },
+ {
+ "coord": [
+ 120.14201698585,
+ 30.25799476401
+ ],
+ "elevation": 18.5
+ },
+ {
+ "coord": [
+ 120.14220406551,
+ 30.258078745409
+ ],
+ "elevation": 19.2
+ },
+ {
+ "coord": [
+ 120.14198520266,
+ 30.258073612141
+ ],
+ "elevation": 18.7
+ },
+ {
+ "coord": [
+ 120.14177286693,
+ 30.258051807507
+ ],
+ "elevation": 18.4
+ },
+ {
+ "coord": [
+ 120.14156165947,
+ 30.258068485552
+ ],
+ "elevation": 18.2
+ },
+ {
+ "coord": [
+ 120.14175702631,
+ 30.257987445759
+ ],
+ "elevation": 18.1
+ },
+ {
+ "coord": [
+ 120.14196446791,
+ 30.258016645317
+ ],
+ "elevation": 18.5
+ },
+ {
+ "coord": [
+ 120.1421613267,
+ 30.258077707065
+ ],
+ "elevation": 19.1
+ },
+ {
+ "coord": [
+ 120.14238268156,
+ 30.258125920989
+ ],
+ "elevation": 19.9
+ },
+ {
+ "coord": [
+ 120.14260020155,
+ 30.258135628263
+ ],
+ "elevation": 20.6
+ },
+ {
+ "coord": [
+ 120.14282671929,
+ 30.258152502786
+ ],
+ "elevation": 21.4
+ },
+ {
+ "coord": [
+ 120.14302033632,
+ 30.258210515602
+ ],
+ "elevation": 22.2
+ },
+ {
+ "coord": [
+ 120.14323626184,
+ 30.258240506621
+ ],
+ "elevation": 22.4
+ },
+ {
+ "coord": [
+ 120.14345218179,
+ 30.258254731684
+ ],
+ "elevation": 22.5
+ },
+ {
+ "coord": [
+ 120.14364718772,
+ 30.258323230207
+ ],
+ "elevation": 22.9
+ },
+ {
+ "coord": [
+ 120.14385581361,
+ 30.258391503352
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.144063592,
+ 30.258414180261
+ ],
+ "elevation": 22.5
+ },
+ {
+ "coord": [
+ 120.14426676927,
+ 30.258463491117
+ ],
+ "elevation": 22.2
+ },
+ {
+ "coord": [
+ 120.14447539961,
+ 30.258513780258
+ ],
+ "elevation": 21.8
+ },
+ {
+ "coord": [
+ 120.14469107959,
+ 30.258518353495
+ ],
+ "elevation": 20.8
+ },
+ {
+ "coord": [
+ 120.14487960673,
+ 30.258613942974
+ ],
+ "elevation": 20.3
+ },
+ {
+ "coord": [
+ 120.14507004163,
+ 30.258705413044
+ ],
+ "elevation": 19.8
+ },
+ {
+ "coord": [
+ 120.14525341865,
+ 30.258819764972
+ ],
+ "elevation": 19.4
+ },
+ {
+ "coord": [
+ 120.14540602806,
+ 30.25893892411
+ ],
+ "elevation": 19.2
+ },
+ {
+ "coord": [
+ 120.1455787811,
+ 30.259041201215
+ ],
+ "elevation": 19.3
+ },
+ {
+ "coord": [
+ 120.1457197086,
+ 30.259190636586
+ ],
+ "elevation": 19.6
+ },
+ {
+ "coord": [
+ 120.14587015048,
+ 30.259314133631
+ ],
+ "elevation": 19.5
+ },
+ {
+ "coord": [
+ 120.14602468833,
+ 30.259447863467
+ ],
+ "elevation": 19.2
+ },
+ {
+ "coord": [
+ 120.14613429648,
+ 30.259594514911
+ ],
+ "elevation": 19.1
+ },
+ {
+ "coord": [
+ 120.14627142233,
+ 30.259749668793
+ ],
+ "elevation": 19.1
+ },
+ {
+ "coord": [
+ 120.14638077485,
+ 30.259915845728
+ ],
+ "elevation": 20.5
+ },
+ {
+ "coord": [
+ 120.14650591902,
+ 30.260072263
+ ],
+ "elevation": 21.5
+ },
+ {
+ "coord": [
+ 120.14665501839,
+ 30.260206846074
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.14679921305,
+ 30.26033661513
+ ],
+ "elevation": 22.3
+ },
+ {
+ "coord": [
+ 120.14693525027,
+ 30.260483602042
+ ],
+ "elevation": 22.4
+ },
+ {
+ "coord": [
+ 120.14700592985,
+ 30.260655537775
+ ],
+ "elevation": 22.2
+ },
+ {
+ "coord": [
+ 120.14716919618,
+ 30.260784151974
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.14736021529,
+ 30.260863181742
+ ],
+ "elevation": 19.8
+ },
+ {
+ "coord": [
+ 120.14754933273,
+ 30.260944126242
+ ],
+ "elevation": 18.8
+ },
+ {
+ "coord": [
+ 120.14771832173,
+ 30.261063107696
+ ],
+ "elevation": 18.1
+ },
+ {
+ "coord": [
+ 120.14787315886,
+ 30.261198866619
+ ],
+ "elevation": 17.7
+ },
+ {
+ "coord": [
+ 120.14801628133,
+ 30.261332100887
+ ],
+ "elevation": 17.4
+ },
+ {
+ "coord": [
+ 120.14807960967,
+ 30.26150629703
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.14819251484,
+ 30.261671235565
+ ],
+ "elevation": 20.5
+ },
+ {
+ "coord": [
+ 120.14839689792,
+ 30.261743982818
+ ],
+ "elevation": 20.6
+ },
+ {
+ "coord": [
+ 120.14858685481,
+ 30.261830798776
+ ],
+ "elevation": 20.8
+ },
+ {
+ "coord": [
+ 120.14879993429,
+ 30.261860224102
+ ],
+ "elevation": 20.4
+ },
+ {
+ "coord": [
+ 120.14900022671,
+ 30.261910474314
+ ],
+ "elevation": 20.6
+ },
+ {
+ "coord": [
+ 120.14921631643,
+ 30.261946868137
+ ],
+ "elevation": 20.5
+ },
+ {
+ "coord": [
+ 120.14942288264,
+ 30.261996163808
+ ],
+ "elevation": 20.6
+ },
+ {
+ "coord": [
+ 120.14959108409,
+ 30.262120188617
+ ],
+ "elevation": 21.4
+ },
+ {
+ "coord": [
+ 120.14974294695,
+ 30.262256700852
+ ],
+ "elevation": 21.7
+ },
+ {
+ "coord": [
+ 120.14992584065,
+ 30.262343005433
+ ],
+ "elevation": 21.5
+ },
+ {
+ "coord": [
+ 120.15010138674,
+ 30.262440010684
+ ],
+ "elevation": 21.6
+ },
+ {
+ "coord": [
+ 120.15032402507,
+ 30.262459927471
+ ],
+ "elevation": 20.7
+ },
+ {
+ "coord": [
+ 120.15051699288,
+ 30.262521870784
+ ],
+ "elevation": 20.1
+ },
+ {
+ "coord": [
+ 120.15070154074,
+ 30.262621666744
+ ],
+ "elevation": 19.6
+ },
+ {
+ "coord": [
+ 120.15084550681,
+ 30.262750941666
+ ],
+ "elevation": 19.2
+ },
+ {
+ "coord": [
+ 120.15094644308,
+ 30.262919512023
+ ],
+ "elevation": 19.1
+ },
+ {
+ "coord": [
+ 120.15108006525,
+ 30.263065242036
+ ],
+ "elevation": 18.4
+ },
+ {
+ "coord": [
+ 120.15120006375,
+ 30.263213383652
+ ],
+ "elevation": 17.8
+ },
+ {
+ "coord": [
+ 120.15132142636,
+ 30.263363938306
+ ],
+ "elevation": 18.3
+ },
+ {
+ "coord": [
+ 120.15123923087,
+ 30.263529298412
+ ],
+ "elevation": 19.4
+ },
+ {
+ "coord": [
+ 120.15105646107,
+ 30.263665541593
+ ],
+ "elevation": 22.9
+ },
+ {
+ "coord": [
+ 120.15090775885,
+ 30.263806588969
+ ],
+ "elevation": 26.4
+ },
+ {
+ "coord": [
+ 120.15108031603,
+ 30.263906307841
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.1513005054,
+ 30.263908027292
+ ],
+ "elevation": 22.5
+ },
+ {
+ "coord": [
+ 120.15148384706,
+ 30.263808660802
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.15129847484,
+ 30.263705936583
+ ],
+ "elevation": 20.4
+ },
+ {
+ "coord": [
+ 120.15109568312,
+ 30.263634447186
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.15117160783,
+ 30.263464320052
+ ],
+ "elevation": 19.8
+ },
+ {
+ "coord": [
+ 120.15138337207,
+ 30.263500372278
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.15155839922,
+ 30.263617117563
+ ],
+ "elevation": 19.6
+ },
+ {
+ "coord": [
+ 120.15174975962,
+ 30.263702356764
+ ],
+ "elevation": 19.9
+ },
+ {
+ "coord": [
+ 120.15161632842,
+ 30.263871641142
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.15148207489,
+ 30.264033067697
+ ],
+ "elevation": 24.6
+ },
+ {
+ "coord": [
+ 120.15130990973,
+ 30.264139828295
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.15109519567,
+ 30.264180606442
+ ],
+ "elevation": 28.5
+ },
+ {
+ "coord": [
+ 120.15091077543,
+ 30.264293809726
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.15077079304,
+ 30.26443822051
+ ],
+ "elevation": 36.9
+ },
+ {
+ "coord": [
+ 120.15064389635,
+ 30.264591615554
+ ],
+ "elevation": 40.7
+ },
+ {
+ "coord": [
+ 120.15051999806,
+ 30.264746308533
+ ],
+ "elevation": 46.1
+ },
+ {
+ "coord": [
+ 120.15037347884,
+ 30.264893803439
+ ],
+ "elevation": 52.6
+ },
+ {
+ "coord": [
+ 120.15028119374,
+ 30.26505497704
+ ],
+ "elevation": 59.6
+ },
+ {
+ "coord": [
+ 120.15009731837,
+ 30.265155102245
+ ],
+ "elevation": 66.8
+ },
+ {
+ "coord": [
+ 120.15004073781,
+ 30.265332184298
+ ],
+ "elevation": 73.1
+ },
+ {
+ "coord": [
+ 120.15011957542,
+ 30.265496825554
+ ],
+ "elevation": 75.9
+ },
+ {
+ "coord": [
+ 120.14992042211,
+ 30.265560584638
+ ],
+ "elevation": 82
+ },
+ {
+ "coord": [
+ 120.14982541243,
+ 30.265724776028
+ ],
+ "elevation": 87.9
+ },
+ {
+ "coord": [
+ 120.14977673177,
+ 30.26590415421
+ ],
+ "elevation": 92.9
+ },
+ {
+ "coord": [
+ 120.14950503143,
+ 30.265826186295
+ ],
+ "elevation": 96
+ },
+ {
+ "coord": [
+ 120.14933042771,
+ 30.26592420158
+ ],
+ "elevation": 100.8
+ },
+ {
+ "coord": [
+ 120.1492085403,
+ 30.26574347025
+ ],
+ "elevation": 101
+ },
+ {
+ "coord": [
+ 120.14932153624,
+ 30.265594991858
+ ],
+ "elevation": 96.4
+ },
+ {
+ "coord": [
+ 120.14921518633,
+ 30.265431894671
+ ],
+ "elevation": 96.6
+ },
+ {
+ "coord": [
+ 120.14910012766,
+ 30.265287664832
+ ],
+ "elevation": 96.1
+ },
+ {
+ "coord": [
+ 120.14896245253,
+ 30.265138938844
+ ],
+ "elevation": 96.4
+ },
+ {
+ "coord": [
+ 120.14878828872,
+ 30.265025563908
+ ],
+ "elevation": 99
+ },
+ {
+ "coord": [
+ 120.14860607252,
+ 30.265125292767
+ ],
+ "elevation": 103.4
+ },
+ {
+ "coord": [
+ 120.14848492283,
+ 30.265289888647
+ ],
+ "elevation": 107.1
+ },
+ {
+ "coord": [
+ 120.1482882633,
+ 30.265374377763
+ ],
+ "elevation": 109.4
+ },
+ {
+ "coord": [
+ 120.14823278027,
+ 30.265551131982
+ ],
+ "elevation": 112.6
+ },
+ {
+ "coord": [
+ 120.14809745334,
+ 30.265692888991
+ ],
+ "elevation": 111.4
+ },
+ {
+ "coord": [
+ 120.14804142586,
+ 30.265873174385
+ ],
+ "elevation": 109.2
+ },
+ {
+ "coord": [
+ 120.14807993418,
+ 30.26605727872
+ ],
+ "elevation": 107.1
+ },
+ {
+ "coord": [
+ 120.1481987978,
+ 30.266216138432
+ ],
+ "elevation": 106.4
+ },
+ {
+ "coord": [
+ 120.14830131781,
+ 30.266380426222
+ ],
+ "elevation": 105.9
+ },
+ {
+ "coord": [
+ 120.14844850648,
+ 30.266519526371
+ ],
+ "elevation": 104.9
+ },
+ {
+ "coord": [
+ 120.14848020258,
+ 30.266709708442
+ ],
+ "elevation": 101.5
+ },
+ {
+ "coord": [
+ 120.14847048035,
+ 30.266890019993
+ ],
+ "elevation": 97.5
+ },
+ {
+ "coord": [
+ 120.14838147221,
+ 30.267064636298
+ ],
+ "elevation": 92.2
+ },
+ {
+ "coord": [
+ 120.14827120758,
+ 30.267227403664
+ ],
+ "elevation": 86.2
+ },
+ {
+ "coord": [
+ 120.14816013114,
+ 30.267402388087
+ ],
+ "elevation": 80.6
+ },
+ {
+ "coord": [
+ 120.14815993851,
+ 30.267582263174
+ ],
+ "elevation": 76.9
+ },
+ {
+ "coord": [
+ 120.1481128862,
+ 30.267764834728
+ ],
+ "elevation": 72.6
+ },
+ {
+ "coord": [
+ 120.14808190716,
+ 30.267949573387
+ ],
+ "elevation": 68.9
+ },
+ {
+ "coord": [
+ 120.14794139354,
+ 30.268098730567
+ ],
+ "elevation": 66.5
+ },
+ {
+ "coord": [
+ 120.14810680491,
+ 30.268204712465
+ ],
+ "elevation": 65.6
+ },
+ {
+ "coord": [
+ 120.14820549645,
+ 30.268374762466
+ ],
+ "elevation": 63.6
+ },
+ {
+ "coord": [
+ 120.14826550588,
+ 30.268557677334
+ ],
+ "elevation": 61.2
+ },
+ {
+ "coord": [
+ 120.14833831377,
+ 30.268727349197
+ ],
+ "elevation": 58.6
+ },
+ {
+ "coord": [
+ 120.14841084669,
+ 30.268892682531
+ ],
+ "elevation": 55.9
+ },
+ {
+ "coord": [
+ 120.14846948805,
+ 30.269069103583
+ ],
+ "elevation": 53.8
+ },
+ {
+ "coord": [
+ 120.14846356261,
+ 30.269258025817
+ ],
+ "elevation": 52
+ },
+ {
+ "coord": [
+ 120.14854508291,
+ 30.26942347117
+ ],
+ "elevation": 50.6
+ },
+ {
+ "coord": [
+ 120.14858955617,
+ 30.269609355621
+ ],
+ "elevation": 49.4
+ },
+ {
+ "coord": [
+ 120.14868361194,
+ 30.269788687187
+ ],
+ "elevation": 46.5
+ },
+ {
+ "coord": [
+ 120.14883704417,
+ 30.269911916094
+ ],
+ "elevation": 43.9
+ },
+ {
+ "coord": [
+ 120.14901145213,
+ 30.270018765449
+ ],
+ "elevation": 42.7
+ },
+ {
+ "coord": [
+ 120.14916925012,
+ 30.270151665409
+ ],
+ "elevation": 41.9
+ },
+ {
+ "coord": [
+ 120.14931642325,
+ 30.270284741781
+ ],
+ "elevation": 42.2
+ },
+ {
+ "coord": [
+ 120.14943608574,
+ 30.270444607391
+ ],
+ "elevation": 42.6
+ },
+ {
+ "coord": [
+ 120.14957018564,
+ 30.270591734714
+ ],
+ "elevation": 42.5
+ },
+ {
+ "coord": [
+ 120.14972281569,
+ 30.270743140951
+ ],
+ "elevation": 38.7
+ },
+ {
+ "coord": [
+ 120.14987707628,
+ 30.270875791327
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.15005286135,
+ 30.270997471821
+ ],
+ "elevation": 34.2
+ },
+ {
+ "coord": [
+ 120.15016925179,
+ 30.271142986053
+ ],
+ "elevation": 32.1
+ },
+ {
+ "coord": [
+ 120.15028346605,
+ 30.271303455163
+ ],
+ "elevation": 30.1
+ },
+ {
+ "coord": [
+ 120.15040694167,
+ 30.271451275497
+ ],
+ "elevation": 28.7
+ },
+ {
+ "coord": [
+ 120.15054322663,
+ 30.271607542936
+ ],
+ "elevation": 25.3
+ },
+ {
+ "coord": [
+ 120.15060376031,
+ 30.271777369097
+ ],
+ "elevation": 22.4
+ },
+ {
+ "coord": [
+ 120.1506956294,
+ 30.271943919308
+ ],
+ "elevation": 19.7
+ },
+ {
+ "coord": [
+ 120.15075779839,
+ 30.272126191615
+ ],
+ "elevation": 17.3
+ },
+ {
+ "coord": [
+ 120.15090824572,
+ 30.272253975418
+ ],
+ "elevation": 16.4
+ },
+ {
+ "coord": [
+ 120.15093662843,
+ 30.272468862565
+ ],
+ "elevation": 15.3
+ },
+ {
+ "coord": [
+ 120.15098216843,
+ 30.272638949847
+ ],
+ "elevation": 14.4
+ },
+ {
+ "coord": [
+ 120.15077616563,
+ 30.272689585372
+ ],
+ "elevation": 14
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.1659636738,
+ 30.25140969426
+ ],
+ "elevation": -6.3
+ },
+ {
+ "coord": [
+ 120.16612016821,
+ 30.251547661615
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16580277026,
+ 30.252065746063
+ ],
+ "elevation": 3.1
+ },
+ {
+ "coord": [
+ 120.1660030095,
+ 30.251521919889
+ ],
+ "elevation": 7.4
+ },
+ {
+ "coord": [
+ 120.16578640172,
+ 30.251198822401
+ ],
+ "elevation": 8.3
+ },
+ {
+ "coord": [
+ 120.1633609616,
+ 30.249160046657
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16312720722,
+ 30.248652151131
+ ],
+ "elevation": 23.4
+ },
+ {
+ "coord": [
+ 120.16227891562,
+ 30.248093921144
+ ],
+ "elevation": 21.6
+ },
+ {
+ "coord": [
+ 120.16135626186,
+ 30.247086823194
+ ],
+ "elevation": 18.9
+ },
+ {
+ "coord": [
+ 120.16097357965,
+ 30.246222523474
+ ],
+ "elevation": 16.2
+ },
+ {
+ "coord": [
+ 120.16079216736,
+ 30.245507330328
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.16097982255,
+ 30.245392917711
+ ],
+ "elevation": 17.5
+ },
+ {
+ "coord": [
+ 120.16077047511,
+ 30.245347364811
+ ],
+ "elevation": 10.6
+ },
+ {
+ "coord": [
+ 120.16082461461,
+ 30.244986574012
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16113366158,
+ 30.244720437387
+ ],
+ "elevation": 11.3
+ },
+ {
+ "coord": [
+ 120.16221254445,
+ 30.244719895572
+ ],
+ "elevation": 15.5
+ },
+ {
+ "coord": [
+ 120.16257153261,
+ 30.244554731212
+ ],
+ "elevation": 16.1
+ },
+ {
+ "coord": [
+ 120.16271391224,
+ 30.244421133946
+ ],
+ "elevation": 16.5
+ },
+ {
+ "coord": [
+ 120.16299744417,
+ 30.242941628651
+ ],
+ "elevation": 21.6
+ },
+ {
+ "coord": [
+ 120.16291572692,
+ 30.242154019999
+ ],
+ "elevation": 20.7
+ },
+ {
+ "coord": [
+ 120.162739873,
+ 30.242056478937
+ ],
+ "elevation": 20.5
+ },
+ {
+ "coord": [
+ 120.16231578461,
+ 30.241973700736
+ ],
+ "elevation": 22.3
+ },
+ {
+ "coord": [
+ 120.16129497085,
+ 30.24226158989
+ ],
+ "elevation": 15.8
+ },
+ {
+ "coord": [
+ 120.16076624726,
+ 30.241962461869
+ ],
+ "elevation": 11.8
+ },
+ {
+ "coord": [
+ 120.16074127269,
+ 30.241235728835
+ ],
+ "elevation": 9.7
+ },
+ {
+ "coord": [
+ 120.16109370509,
+ 30.240178386884
+ ],
+ "elevation": 10.7
+ },
+ {
+ "coord": [
+ 120.16161476332,
+ 30.239615651521
+ ],
+ "elevation": 9.9
+ },
+ {
+ "coord": [
+ 120.16142178902,
+ 30.239297347363
+ ],
+ "elevation": 12.5
+ },
+ {
+ "coord": [
+ 120.16175773162,
+ 30.239510226136
+ ],
+ "elevation": 10.2
+ },
+ {
+ "coord": [
+ 120.16279892637,
+ 30.23947309604
+ ],
+ "elevation": 8.6
+ },
+ {
+ "coord": [
+ 120.16307217563,
+ 30.239979719764
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.16325183077,
+ 30.240908593525
+ ],
+ "elevation": 4.5
+ },
+ {
+ "coord": [
+ 120.16392443261,
+ 30.24132498161
+ ],
+ "elevation": 11.7
+ },
+ {
+ "coord": [
+ 120.16411051449,
+ 30.241590104646
+ ],
+ "elevation": 11.3
+ },
+ {
+ "coord": [
+ 120.16374507218,
+ 30.241522659077
+ ],
+ "elevation": 33.7
+ },
+ {
+ "coord": [
+ 120.16449225082,
+ 30.242164725953
+ ],
+ "elevation": 30.8
+ },
+ {
+ "coord": [
+ 120.16502260031,
+ 30.243155557355
+ ],
+ "elevation": 13.9
+ },
+ {
+ "coord": [
+ 120.16483752598,
+ 30.243877487074
+ ],
+ "elevation": 19.1
+ },
+ {
+ "coord": [
+ 120.16479640802,
+ 30.24497305001
+ ],
+ "elevation": 18.9
+ },
+ {
+ "coord": [
+ 120.16613866623,
+ 30.245543412141
+ ],
+ "elevation": 12.5
+ },
+ {
+ "coord": [
+ 120.16678971711,
+ 30.245580543668
+ ],
+ "elevation": 10.7
+ },
+ {
+ "coord": [
+ 120.16703006989,
+ 30.245428521863
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.16783359577,
+ 30.245501274904
+ ],
+ "elevation": 20.7
+ },
+ {
+ "coord": [
+ 120.16972188801,
+ 30.245898809332
+ ],
+ "elevation": 20.4
+ },
+ {
+ "coord": [
+ 120.17518886929,
+ 30.245678351022
+ ],
+ "elevation": 9.4
+ },
+ {
+ "coord": [
+ 120.1762122111,
+ 30.245884761351
+ ],
+ "elevation": 7.1
+ },
+ {
+ "coord": [
+ 120.17834283874,
+ 30.245847531598
+ ],
+ "elevation": 2.9
+ },
+ {
+ "coord": [
+ 120.17820708327,
+ 30.24599567534
+ ],
+ "elevation": 5.7
+ },
+ {
+ "coord": [
+ 120.17861318374,
+ 30.246020175944
+ ],
+ "elevation": 6.3
+ },
+ {
+ "coord": [
+ 120.17800936564,
+ 30.24589498001
+ ],
+ "elevation": 8.5
+ },
+ {
+ "coord": [
+ 120.17762837589,
+ 30.246290244285
+ ],
+ "elevation": 16.1
+ },
+ {
+ "coord": [
+ 120.17727447616,
+ 30.247693420598
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.17735209989,
+ 30.248640795083
+ ],
+ "elevation": 16.3
+ },
+ {
+ "coord": [
+ 120.17704906388,
+ 30.251215495234
+ ],
+ "elevation": 27.8
+ },
+ {
+ "coord": [
+ 120.17695324339,
+ 30.251376180524
+ ],
+ "elevation": 24.2
+ },
+ {
+ "coord": [
+ 120.17609571605,
+ 30.251480081553
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.17331502168,
+ 30.251373523196
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.17299778645,
+ 30.250302342322
+ ],
+ "elevation": 26.1
+ },
+ {
+ "coord": [
+ 120.17130409881,
+ 30.250501902912
+ ],
+ "elevation": 18.4
+ },
+ {
+ "coord": [
+ 120.17099563845,
+ 30.250999387641
+ ],
+ "elevation": 30.1
+ },
+ {
+ "coord": [
+ 120.17112017123,
+ 30.251136883566
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.17125527706,
+ 30.250401895664
+ ],
+ "elevation": 26.4
+ },
+ {
+ "coord": [
+ 120.17108857059,
+ 30.250280971252
+ ],
+ "elevation": 24.3
+ },
+ {
+ "coord": [
+ 120.17101514717,
+ 30.249531722336
+ ],
+ "elevation": 22.9
+ },
+ {
+ "coord": [
+ 120.17101975172,
+ 30.24788354274
+ ],
+ "elevation": 11.6
+ },
+ {
+ "coord": [
+ 120.1711884177,
+ 30.246978496811
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.17107969697,
+ 30.246600370194
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16899934115,
+ 30.246519973523
+ ],
+ "elevation": 15.9
+ },
+ {
+ "coord": [
+ 120.1691388905,
+ 30.251279360541
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.16885352163,
+ 30.251556866246
+ ],
+ "elevation": -5
+ },
+ {
+ "coord": [
+ 120.16800796468,
+ 30.251550254783
+ ],
+ "elevation": 8.3
+ },
+ {
+ "coord": [
+ 120.16796108895,
+ 30.251796272206
+ ],
+ "elevation": 6.3
+ },
+ {
+ "coord": [
+ 120.16764781147,
+ 30.251992463029
+ ],
+ "elevation": 3.5
+ },
+ {
+ "coord": [
+ 120.16729577212,
+ 30.252682341243
+ ],
+ "elevation": 10.6
+ },
+ {
+ "coord": [
+ 120.16737037444,
+ 30.253522297023
+ ],
+ "elevation": 19.2
+ },
+ {
+ "coord": [
+ 120.16610799833,
+ 30.253640681839
+ ],
+ "elevation": 12.9
+ },
+ {
+ "coord": [
+ 120.1657124153,
+ 30.254475898192
+ ],
+ "elevation": 6.8
+ },
+ {
+ "coord": [
+ 120.16619364704,
+ 30.255255064003
+ ],
+ "elevation": 8.9
+ },
+ {
+ "coord": [
+ 120.1665512045,
+ 30.2554532532
+ ],
+ "elevation": 9.3
+ },
+ {
+ "coord": [
+ 120.16694086167,
+ 30.255318606088
+ ],
+ "elevation": 11.1
+ },
+ {
+ "coord": [
+ 120.16694402413,
+ 30.25550523166
+ ],
+ "elevation": 11.7
+ },
+ {
+ "coord": [
+ 120.16727570851,
+ 30.255744664908
+ ],
+ "elevation": 8.9
+ },
+ {
+ "coord": [
+ 120.16811094818,
+ 30.255998816364
+ ],
+ "elevation": 10.1
+ },
+ {
+ "coord": [
+ 120.16845829061,
+ 30.256459893835
+ ],
+ "elevation": 6.1
+ },
+ {
+ "coord": [
+ 120.16903060035,
+ 30.256685404424
+ ],
+ "elevation": 7.1
+ },
+ {
+ "coord": [
+ 120.16924353217,
+ 30.257005931814
+ ],
+ "elevation": 5.9
+ },
+ {
+ "coord": [
+ 120.16921565115,
+ 30.257200887466
+ ],
+ "elevation": 3.4
+ },
+ {
+ "coord": [
+ 120.16766554181,
+ 30.260197479264
+ ],
+ "elevation": 8.2
+ },
+ {
+ "coord": [
+ 120.16686551576,
+ 30.260809022658
+ ],
+ "elevation": 5.9
+ },
+ {
+ "coord": [
+ 120.1660473491,
+ 30.262120095972
+ ],
+ "elevation": 8.4
+ },
+ {
+ "coord": [
+ 120.16547572874,
+ 30.262381939998
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.1650534649,
+ 30.262380926045
+ ],
+ "elevation": 11.3
+ },
+ {
+ "coord": [
+ 120.16459138945,
+ 30.262774347383
+ ],
+ "elevation": 14.3
+ },
+ {
+ "coord": [
+ 120.16350728184,
+ 30.264600645501
+ ],
+ "elevation": 10.8
+ },
+ {
+ "coord": [
+ 120.16298278315,
+ 30.266191616182
+ ],
+ "elevation": 10.8
+ },
+ {
+ "coord": [
+ 120.16137940368,
+ 30.265710107842
+ ],
+ "elevation": 8.6
+ },
+ {
+ "coord": [
+ 120.16051819458,
+ 30.265652061835
+ ],
+ "elevation": 10.1
+ },
+ {
+ "coord": [
+ 120.15858165021,
+ 30.264909050805
+ ],
+ "elevation": 7.9
+ },
+ {
+ "coord": [
+ 120.15706860067,
+ 30.263371665273
+ ],
+ "elevation": 7.1
+ },
+ {
+ "coord": [
+ 120.15524696094,
+ 30.261146611257
+ ],
+ "elevation": 7.1
+ },
+ {
+ "coord": [
+ 120.15385239103,
+ 30.259785938937
+ ],
+ "elevation": -7.8
+ },
+ {
+ "coord": [
+ 120.15341950122,
+ 30.258973222467
+ ],
+ "elevation": -3.8
+ },
+ {
+ "coord": [
+ 120.15254212248,
+ 30.258199863911
+ ],
+ "elevation": -4.7
+ },
+ {
+ "coord": [
+ 120.15199764574,
+ 30.257912467472
+ ],
+ "elevation": -7.7
+ },
+ {
+ "coord": [
+ 120.15077736901,
+ 30.2566742503
+ ],
+ "elevation": 2.3
+ },
+ {
+ "coord": [
+ 120.15017470967,
+ 30.256480432976
+ ],
+ "elevation": -1.6
+ },
+ {
+ "coord": [
+ 120.14910643723,
+ 30.256301156273
+ ],
+ "elevation": 3.2
+ },
+ {
+ "coord": [
+ 120.14890815523,
+ 30.256382743809
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.14872868753,
+ 30.256477286945
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.14868750195,
+ 30.257058101885
+ ],
+ "elevation": 7.2
+ },
+ {
+ "coord": [
+ 120.1487859365,
+ 30.256515369584
+ ],
+ "elevation": 5.1
+ },
+ {
+ "coord": [
+ 120.1485554838,
+ 30.256252895934
+ ],
+ "elevation": 1.2
+ },
+ {
+ "coord": [
+ 120.14814207994,
+ 30.25613434474
+ ],
+ "elevation": 2.5
+ },
+ {
+ "coord": [
+ 120.14624809506,
+ 30.256234727582
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.14542412333,
+ 30.256471453265
+ ],
+ "elevation": 14.2
+ },
+ {
+ "coord": [
+ 120.14525229533,
+ 30.256813042007
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.14517561641,
+ 30.257924246594
+ ],
+ "elevation": 18.1
+ },
+ {
+ "coord": [
+ 120.14482883581,
+ 30.258135021075
+ ],
+ "elevation": 17.7
+ },
+ {
+ "coord": [
+ 120.14401197464,
+ 30.257896175374
+ ],
+ "elevation": 11.4
+ },
+ {
+ "coord": [
+ 120.14300259506,
+ 30.25815596188
+ ],
+ "elevation": 7.5
+ },
+ {
+ "coord": [
+ 120.14193973938,
+ 30.258067720804
+ ],
+ "elevation": 10.7
+ },
+ {
+ "coord": [
+ 120.14066939043,
+ 30.258266272418
+ ],
+ "elevation": 12.4
+ },
+ {
+ "coord": [
+ 120.14023691319,
+ 30.258196017724
+ ],
+ "elevation": 14.6
+ },
+ {
+ "coord": [
+ 120.13964609533,
+ 30.258439287876
+ ],
+ "elevation": 15.4
+ },
+ {
+ "coord": [
+ 120.13817864545,
+ 30.258444119728
+ ],
+ "elevation": 16.5
+ },
+ {
+ "coord": [
+ 120.13736496457,
+ 30.258923701828
+ ],
+ "elevation": 7.1
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.12813877134,
+ 30.269189257056
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.12766830022,
+ 30.269407246153
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.12765214704,
+ 30.269772966857
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.12748285813,
+ 30.269861597641
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.12539541698,
+ 30.270613357547
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.12480573294,
+ 30.271057765016
+ ],
+ "elevation": 58
+ },
+ {
+ "coord": [
+ 120.1246538564,
+ 30.270946282494
+ ],
+ "elevation": 64
+ },
+ {
+ "coord": [
+ 120.12374565922,
+ 30.271108683283
+ ],
+ "elevation": 89
+ },
+ {
+ "coord": [
+ 120.1229974326,
+ 30.271792237106
+ ],
+ "elevation": 142
+ },
+ {
+ "coord": [
+ 120.122791728,
+ 30.271821905354
+ ],
+ "elevation": 142
+ },
+ {
+ "coord": [
+ 120.12100070252,
+ 30.270949089997
+ ],
+ "elevation": 166
+ },
+ {
+ "coord": [
+ 120.12056471161,
+ 30.270512628348
+ ],
+ "elevation": 154
+ },
+ {
+ "coord": [
+ 120.12023151725,
+ 30.269592085565
+ ],
+ "elevation": 145
+ },
+ {
+ "coord": [
+ 120.11936620934,
+ 30.268820116987
+ ],
+ "elevation": 148
+ },
+ {
+ "coord": [
+ 120.11920351129,
+ 30.268267993763
+ ],
+ "elevation": 131
+ },
+ {
+ "coord": [
+ 120.11795919151,
+ 30.267157125882
+ ],
+ "elevation": 147
+ },
+ {
+ "coord": [
+ 120.11808901852,
+ 30.266909391517
+ ],
+ "elevation": 136
+ },
+ {
+ "coord": [
+ 120.11784044623,
+ 30.266243773978
+ ],
+ "elevation": 138
+ },
+ {
+ "coord": [
+ 120.11709699318,
+ 30.265937352723
+ ],
+ "elevation": 144
+ },
+ {
+ "coord": [
+ 120.11702622078,
+ 30.265690107811
+ ],
+ "elevation": 144
+ },
+ {
+ "coord": [
+ 120.1165657632,
+ 30.265513889427
+ ],
+ "elevation": 135
+ },
+ {
+ "coord": [
+ 120.116245455,
+ 30.264733564115
+ ],
+ "elevation": 128
+ },
+ {
+ "coord": [
+ 120.11614551209,
+ 30.263681012465
+ ],
+ "elevation": 132
+ },
+ {
+ "coord": [
+ 120.1153016816,
+ 30.26218519618
+ ],
+ "elevation": 106
+ },
+ {
+ "coord": [
+ 120.11557925287,
+ 30.261754226725
+ ],
+ "elevation": 106
+ },
+ {
+ "coord": [
+ 120.11561705183,
+ 30.261257292613
+ ],
+ "elevation": 105
+ },
+ {
+ "coord": [
+ 120.11546350841,
+ 30.261453240429
+ ],
+ "elevation": 103
+ },
+ {
+ "coord": [
+ 120.11552743331,
+ 30.261174442184
+ ],
+ "elevation": 103
+ },
+ {
+ "coord": [
+ 120.11584366841,
+ 30.260707445482
+ ],
+ "elevation": 110
+ },
+ {
+ "coord": [
+ 120.11607348801,
+ 30.259745994273
+ ],
+ "elevation": 116
+ },
+ {
+ "coord": [
+ 120.11572483238,
+ 30.259224861021
+ ],
+ "elevation": 120
+ },
+ {
+ "coord": [
+ 120.1154653621,
+ 30.259235516472
+ ],
+ "elevation": 119
+ },
+ {
+ "coord": [
+ 120.11472712114,
+ 30.258649519004
+ ],
+ "elevation": 124
+ },
+ {
+ "coord": [
+ 120.1141938201,
+ 30.257510287264
+ ],
+ "elevation": 146
+ },
+ {
+ "coord": [
+ 120.11353340989,
+ 30.256982513963
+ ],
+ "elevation": 168
+ },
+ {
+ "coord": [
+ 120.11313044736,
+ 30.256363403544
+ ],
+ "elevation": 170
+ },
+ {
+ "coord": [
+ 120.11139118851,
+ 30.255952882798
+ ],
+ "elevation": 213
+ },
+ {
+ "coord": [
+ 120.11081109016,
+ 30.255395544154
+ ],
+ "elevation": 217
+ },
+ {
+ "coord": [
+ 120.10976470791,
+ 30.255334313415
+ ],
+ "elevation": 226
+ },
+ {
+ "coord": [
+ 120.10894719094,
+ 30.255050365119
+ ],
+ "elevation": 216
+ },
+ {
+ "coord": [
+ 120.10849825154,
+ 30.25466098758
+ ],
+ "elevation": 213
+ },
+ {
+ "coord": [
+ 120.1070303173,
+ 30.254108018932
+ ],
+ "elevation": 221
+ },
+ {
+ "coord": [
+ 120.10498651918,
+ 30.25442650189
+ ],
+ "elevation": 233
+ },
+ {
+ "coord": [
+ 120.10456049277,
+ 30.254330999714
+ ],
+ "elevation": 236
+ },
+ {
+ "coord": [
+ 120.10410838493,
+ 30.253759061016
+ ],
+ "elevation": 248
+ },
+ {
+ "coord": [
+ 120.10397624374,
+ 30.253105294357
+ ],
+ "elevation": 267
+ },
+ {
+ "coord": [
+ 120.10415698496,
+ 30.253170043365
+ ],
+ "elevation": 267
+ },
+ {
+ "coord": [
+ 120.10344245989,
+ 30.252679951346
+ ],
+ "elevation": 275
+ },
+ {
+ "coord": [
+ 120.10342234159,
+ 30.252539861104
+ ],
+ "elevation": 281
+ },
+ {
+ "coord": [
+ 120.10322978007,
+ 30.252527761845
+ ],
+ "elevation": 276
+ },
+ {
+ "coord": [
+ 120.10311488429,
+ 30.251838984271
+ ],
+ "elevation": 289
+ },
+ {
+ "coord": [
+ 120.10252696273,
+ 30.251248350436
+ ],
+ "elevation": 284
+ },
+ {
+ "coord": [
+ 120.10155432485,
+ 30.250976459516
+ ],
+ "elevation": 280
+ },
+ {
+ "coord": [
+ 120.10110372391,
+ 30.251031684409
+ ],
+ "elevation": 275
+ },
+ {
+ "coord": [
+ 120.10049944516,
+ 30.249122297263
+ ],
+ "elevation": 284
+ },
+ {
+ "coord": [
+ 120.09950864877,
+ 30.248402990276
+ ],
+ "elevation": 312
+ },
+ {
+ "coord": [
+ 120.09916001837,
+ 30.24832753766
+ ],
+ "elevation": 317
+ },
+ {
+ "coord": [
+ 120.09850953257,
+ 30.247430761946
+ ],
+ "elevation": 306
+ },
+ {
+ "coord": [
+ 120.09841640658,
+ 30.246914833193
+ ],
+ "elevation": 302
+ },
+ {
+ "coord": [
+ 120.09741611977,
+ 30.245830138447
+ ],
+ "elevation": 290
+ },
+ {
+ "coord": [
+ 120.09725205006,
+ 30.245372008778
+ ],
+ "elevation": 287
+ },
+ {
+ "coord": [
+ 120.09620157784,
+ 30.244302592563
+ ],
+ "elevation": 284
+ },
+ {
+ "coord": [
+ 120.09477468114,
+ 30.243694401379
+ ],
+ "elevation": 294
+ },
+ {
+ "coord": [
+ 120.09417570696,
+ 30.243002615975
+ ],
+ "elevation": 298
+ },
+ {
+ "coord": [
+ 120.09320442461,
+ 30.242327790605
+ ],
+ "elevation": 308
+ },
+ {
+ "coord": [
+ 120.09308060087,
+ 30.241343808155
+ ],
+ "elevation": 323
+ },
+ {
+ "coord": [
+ 120.0927285453,
+ 30.24081548847
+ ],
+ "elevation": 332
+ },
+ {
+ "coord": [
+ 120.09251307624,
+ 30.239694971818
+ ],
+ "elevation": 285
+ },
+ {
+ "coord": [
+ 120.09257802426,
+ 30.239285656932
+ ],
+ "elevation": 257
+ },
+ {
+ "coord": [
+ 120.09190047519,
+ 30.238032088351
+ ],
+ "elevation": 217
+ },
+ {
+ "coord": [
+ 120.09206160365,
+ 30.237373835222
+ ],
+ "elevation": 209
+ },
+ {
+ "coord": [
+ 120.09254215347,
+ 30.237011277273
+ ],
+ "elevation": 210
+ },
+ {
+ "coord": [
+ 120.09296441424,
+ 30.236390466872
+ ],
+ "elevation": 224
+ },
+ {
+ "coord": [
+ 120.09265633056,
+ 30.234503661364
+ ],
+ "elevation": 252
+ },
+ {
+ "coord": [
+ 120.091999177,
+ 30.233903013158
+ ],
+ "elevation": 234
+ },
+ {
+ "coord": [
+ 120.09172523153,
+ 30.233384368543
+ ],
+ "elevation": 228
+ },
+ {
+ "coord": [
+ 120.09012179254,
+ 30.231651148275
+ ],
+ "elevation": 262
+ },
+ {
+ "coord": [
+ 120.08890773837,
+ 30.232196458723
+ ],
+ "elevation": 272
+ },
+ {
+ "coord": [
+ 120.08739874056,
+ 30.232247638204
+ ],
+ "elevation": 283
+ },
+ {
+ "coord": [
+ 120.08665572756,
+ 30.232052948629
+ ],
+ "elevation": 280
+ },
+ {
+ "coord": [
+ 120.0855822111,
+ 30.23111879671
+ ],
+ "elevation": 247
+ },
+ {
+ "coord": [
+ 120.08528993479,
+ 30.230460577532
+ ],
+ "elevation": 247
+ },
+ {
+ "coord": [
+ 120.08485164315,
+ 30.230039165576
+ ],
+ "elevation": 252
+ },
+ {
+ "coord": [
+ 120.08448641678,
+ 30.229401389867
+ ],
+ "elevation": 263
+ },
+ {
+ "coord": [
+ 120.08448734427,
+ 30.228752432732
+ ],
+ "elevation": 266
+ },
+ {
+ "coord": [
+ 120.08387826448,
+ 30.22748762598
+ ],
+ "elevation": 309
+ },
+ {
+ "coord": [
+ 120.08403698645,
+ 30.226690469817
+ ],
+ "elevation": 318
+ },
+ {
+ "coord": [
+ 120.08317826163,
+ 30.225993037033
+ ],
+ "elevation": 329
+ },
+ {
+ "coord": [
+ 120.08302888725,
+ 30.225645787418
+ ],
+ "elevation": 328
+ },
+ {
+ "coord": [
+ 120.08307190354,
+ 30.225180857752
+ ],
+ "elevation": 327
+ },
+ {
+ "coord": [
+ 120.08341167061,
+ 30.224665985684
+ ],
+ "elevation": 325
+ },
+ {
+ "coord": [
+ 120.08320429431,
+ 30.223879192901
+ ],
+ "elevation": 323
+ },
+ {
+ "coord": [
+ 120.08297467672,
+ 30.223524826903
+ ],
+ "elevation": 322
+ },
+ {
+ "coord": [
+ 120.08349276602,
+ 30.221946382718
+ ],
+ "elevation": 292
+ },
+ {
+ "coord": [
+ 120.0836545969,
+ 30.221767546686
+ ],
+ "elevation": 292
+ },
+ {
+ "coord": [
+ 120.08494888409,
+ 30.221326814829
+ ],
+ "elevation": 256
+ },
+ {
+ "coord": [
+ 120.08536753053,
+ 30.220733565906
+ ],
+ "elevation": 252
+ },
+ {
+ "coord": [
+ 120.08544307088,
+ 30.220280089756
+ ],
+ "elevation": 244
+ },
+ {
+ "coord": [
+ 120.08502880169,
+ 30.220037562914
+ ],
+ "elevation": 248
+ },
+ {
+ "coord": [
+ 120.08469875281,
+ 30.219468723289
+ ],
+ "elevation": 212
+ },
+ {
+ "coord": [
+ 120.08347116823,
+ 30.218681449917
+ ],
+ "elevation": 177
+ },
+ {
+ "coord": [
+ 120.08343329819,
+ 30.218467399969
+ ],
+ "elevation": 174
+ },
+ {
+ "coord": [
+ 120.08365574776,
+ 30.218606311634
+ ],
+ "elevation": 174
+ },
+ {
+ "coord": [
+ 120.08368895043,
+ 30.218334712528
+ ],
+ "elevation": 172
+ },
+ {
+ "coord": [
+ 120.08311903716,
+ 30.215927519131
+ ],
+ "elevation": 145
+ },
+ {
+ "coord": [
+ 120.08290766972,
+ 30.215639921135
+ ],
+ "elevation": 140
+ },
+ {
+ "coord": [
+ 120.08162365617,
+ 30.214766261392
+ ],
+ "elevation": 122
+ },
+ {
+ "coord": [
+ 120.08139065021,
+ 30.214113475503
+ ],
+ "elevation": 107
+ },
+ {
+ "coord": [
+ 120.08162940432,
+ 30.213820446842
+ ],
+ "elevation": 111
+ },
+ {
+ "coord": [
+ 120.08147312349,
+ 30.213970261278
+ ],
+ "elevation": 107
+ },
+ {
+ "coord": [
+ 120.08121547536,
+ 30.213846139503
+ ],
+ "elevation": 101
+ },
+ {
+ "coord": [
+ 120.08077671476,
+ 30.213210033747
+ ],
+ "elevation": 95
+ },
+ {
+ "coord": [
+ 120.08021807572,
+ 30.213017442744
+ ],
+ "elevation": 89
+ },
+ {
+ "coord": [
+ 120.07996043926,
+ 30.212480707307
+ ],
+ "elevation": 86
+ },
+ {
+ "coord": [
+ 120.07966542062,
+ 30.212273965702
+ ],
+ "elevation": 85
+ },
+ {
+ "coord": [
+ 120.07874876032,
+ 30.212366921655
+ ],
+ "elevation": 82
+ },
+ {
+ "coord": [
+ 120.07851727173,
+ 30.212010074783
+ ],
+ "elevation": 82
+ },
+ {
+ "coord": [
+ 120.07765135087,
+ 30.211665783223
+ ],
+ "elevation": 80
+ },
+ {
+ "coord": [
+ 120.07679088451,
+ 30.211677510884
+ ],
+ "elevation": 79
+ },
+ {
+ "coord": [
+ 120.07598689437,
+ 30.212832632678
+ ],
+ "elevation": 90
+ },
+ {
+ "coord": [
+ 120.07460869032,
+ 30.213385624163
+ ],
+ "elevation": 102
+ },
+ {
+ "coord": [
+ 120.07119532408,
+ 30.215455014312
+ ],
+ "elevation": 103
+ },
+ {
+ "coord": [
+ 120.07059510678,
+ 30.215622826713
+ ],
+ "elevation": 95
+ },
+ {
+ "coord": [
+ 120.0701287064,
+ 30.216304687814
+ ],
+ "elevation": 87
+ },
+ {
+ "coord": [
+ 120.06957254086,
+ 30.216768395346
+ ],
+ "elevation": 80
+ },
+ {
+ "coord": [
+ 120.06850280716,
+ 30.217207429406
+ ],
+ "elevation": 71
+ },
+ {
+ "coord": [
+ 120.0683083906,
+ 30.217131393012
+ ],
+ "elevation": 72
+ },
+ {
+ "coord": [
+ 120.06797352797,
+ 30.217378276373
+ ],
+ "elevation": 74
+ },
+ {
+ "coord": [
+ 120.06747094191,
+ 30.216321917303
+ ],
+ "elevation": 80
+ },
+ {
+ "coord": [
+ 120.06709394393,
+ 30.216242171647
+ ],
+ "elevation": 82
+ },
+ {
+ "coord": [
+ 120.06691058986,
+ 30.216322932507
+ ],
+ "elevation": 85
+ },
+ {
+ "coord": [
+ 120.06692334565,
+ 30.216489225403
+ ],
+ "elevation": 85
+ },
+ {
+ "coord": [
+ 120.06579018819,
+ 30.2161511952
+ ],
+ "elevation": 100
+ },
+ {
+ "coord": [
+ 120.06503424079,
+ 30.216635464922
+ ],
+ "elevation": 121
+ },
+ {
+ "coord": [
+ 120.06423346257,
+ 30.217925543713
+ ],
+ "elevation": 183
+ },
+ {
+ "coord": [
+ 120.06338334008,
+ 30.218422120885
+ ],
+ "elevation": 205
+ },
+ {
+ "coord": [
+ 120.06193016785,
+ 30.218755126296
+ ],
+ "elevation": 257
+ },
+ {
+ "coord": [
+ 120.06004276101,
+ 30.218347056441
+ ],
+ "elevation": 295
+ },
+ {
+ "coord": [
+ 120.05950552918,
+ 30.217980829172
+ ],
+ "elevation": 298
+ },
+ {
+ "coord": [
+ 120.05926031563,
+ 30.216920487446
+ ],
+ "elevation": 315
+ },
+ {
+ "coord": [
+ 120.05844795567,
+ 30.216371475136
+ ],
+ "elevation": 329
+ },
+ {
+ "coord": [
+ 120.05772084032,
+ 30.214780404883
+ ],
+ "elevation": 339
+ },
+ {
+ "coord": [
+ 120.05726741327,
+ 30.214293591259
+ ],
+ "elevation": 348
+ },
+ {
+ "coord": [
+ 120.05648327899,
+ 30.214253286278
+ ],
+ "elevation": 351
+ },
+ {
+ "coord": [
+ 120.05562699935,
+ 30.213606611132
+ ],
+ "elevation": 357
+ },
+ {
+ "coord": [
+ 120.05533522192,
+ 30.213196220639
+ ],
+ "elevation": 360
+ },
+ {
+ "coord": [
+ 120.05328519017,
+ 30.212948281582
+ ],
+ "elevation": 334
+ },
+ {
+ "coord": [
+ 120.05152659272,
+ 30.213410828946
+ ],
+ "elevation": 292
+ },
+ {
+ "coord": [
+ 120.05006673003,
+ 30.213343079213
+ ],
+ "elevation": 269
+ },
+ {
+ "coord": [
+ 120.04850053828,
+ 30.213786907445
+ ],
+ "elevation": 262
+ },
+ {
+ "coord": [
+ 120.04830039879,
+ 30.2136847158
+ ],
+ "elevation": 259
+ },
+ {
+ "coord": [
+ 120.04835680099,
+ 30.213405269286
+ ],
+ "elevation": 260
+ },
+ {
+ "coord": [
+ 120.04887752032,
+ 30.212879821608
+ ],
+ "elevation": 267
+ },
+ {
+ "coord": [
+ 120.04888743593,
+ 30.21221184321
+ ],
+ "elevation": 268
+ },
+ {
+ "coord": [
+ 120.04847119904,
+ 30.211651487676
+ ],
+ "elevation": 276
+ },
+ {
+ "coord": [
+ 120.04842072231,
+ 30.2109158132
+ ],
+ "elevation": 300
+ },
+ {
+ "coord": [
+ 120.04794003645,
+ 30.210070956337
+ ],
+ "elevation": 324
+ },
+ {
+ "coord": [
+ 120.0472503928,
+ 30.209431623196
+ ],
+ "elevation": 348
+ },
+ {
+ "coord": [
+ 120.04718052797,
+ 30.20904757099
+ ],
+ "elevation": 370
+ },
+ {
+ "coord": [
+ 120.0465166564,
+ 30.207894915385
+ ],
+ "elevation": 395
+ },
+ {
+ "coord": [
+ 120.04560323938,
+ 30.207426358723
+ ],
+ "elevation": 372
+ },
+ {
+ "coord": [
+ 120.0446617532,
+ 30.207404024608
+ ],
+ "elevation": 284
+ },
+ {
+ "coord": [
+ 120.04431641955,
+ 30.207125697462
+ ],
+ "elevation": 279
+ },
+ {
+ "coord": [
+ 120.04418069495,
+ 30.207227854182
+ ],
+ "elevation": 281
+ },
+ {
+ "coord": [
+ 120.04363007892,
+ 30.207183722707
+ ],
+ "elevation": 276
+ },
+ {
+ "coord": [
+ 120.04305214226,
+ 30.206646265077
+ ],
+ "elevation": 258
+ },
+ {
+ "coord": [
+ 120.04302372627,
+ 30.20624208929
+ ],
+ "elevation": 248
+ },
+ {
+ "coord": [
+ 120.04281787734,
+ 30.205948197669
+ ],
+ "elevation": 236
+ },
+ {
+ "coord": [
+ 120.04207921874,
+ 30.206953022392
+ ],
+ "elevation": 234
+ },
+ {
+ "coord": [
+ 120.04144944089,
+ 30.207001828224
+ ],
+ "elevation": 214
+ },
+ {
+ "coord": [
+ 120.04130761636,
+ 30.207266958917
+ ],
+ "elevation": 213
+ },
+ {
+ "coord": [
+ 120.04104514785,
+ 30.207352566601
+ ],
+ "elevation": 211
+ },
+ {
+ "coord": [
+ 120.04023329824,
+ 30.207368260352
+ ],
+ "elevation": 198
+ },
+ {
+ "coord": [
+ 120.03982951224,
+ 30.207760863959
+ ],
+ "elevation": 199
+ },
+ {
+ "coord": [
+ 120.03996891804,
+ 30.208076721271
+ ],
+ "elevation": 200
+ },
+ {
+ "coord": [
+ 120.03964993343,
+ 30.20838070869
+ ],
+ "elevation": 195
+ },
+ {
+ "coord": [
+ 120.03954967283,
+ 30.20829821036
+ ],
+ "elevation": 195
+ },
+ {
+ "coord": [
+ 120.03970007517,
+ 30.208392528873
+ ],
+ "elevation": 195
+ },
+ {
+ "coord": [
+ 120.03951400547,
+ 30.208210447655
+ ],
+ "elevation": 195
+ },
+ {
+ "coord": [
+ 120.03978867469,
+ 30.208326064034
+ ],
+ "elevation": 196
+ },
+ {
+ "coord": [
+ 120.03970450835,
+ 30.208208547231
+ ],
+ "elevation": 195
+ },
+ {
+ "coord": [
+ 120.03981911399,
+ 30.208543577341
+ ],
+ "elevation": 189
+ },
+ {
+ "coord": [
+ 120.0397957352,
+ 30.208390759513
+ ],
+ "elevation": 196
+ },
+ {
+ "coord": [
+ 120.03998647671,
+ 30.208470506425
+ ],
+ "elevation": 189
+ },
+ {
+ "coord": [
+ 120.03921598108,
+ 30.208570215341
+ ],
+ "elevation": 191
+ },
+ {
+ "coord": [
+ 120.03671733273,
+ 30.208395329515
+ ],
+ "elevation": 223
+ },
+ {
+ "coord": [
+ 120.03635763556,
+ 30.208214924871
+ ],
+ "elevation": 216
+ },
+ {
+ "coord": [
+ 120.0357372158,
+ 30.207157622908
+ ],
+ "elevation": 224
+ },
+ {
+ "coord": [
+ 120.03528709887,
+ 30.206862819315
+ ],
+ "elevation": 231
+ },
+ {
+ "coord": [
+ 120.03389462968,
+ 30.206369949489
+ ],
+ "elevation": 223
+ },
+ {
+ "coord": [
+ 120.03340731504,
+ 30.205864741693
+ ],
+ "elevation": 215
+ },
+ {
+ "coord": [
+ 120.03328594055,
+ 30.205529580194
+ ],
+ "elevation": 216
+ },
+ {
+ "coord": [
+ 120.03192848171,
+ 30.205050047546
+ ],
+ "elevation": 221
+ },
+ {
+ "coord": [
+ 120.03055395419,
+ 30.204139967423
+ ],
+ "elevation": 233
+ },
+ {
+ "coord": [
+ 120.03036994515,
+ 30.204273710867
+ ],
+ "elevation": 235
+ },
+ {
+ "coord": [
+ 120.02904988894,
+ 30.203708398914
+ ],
+ "elevation": 217
+ },
+ {
+ "coord": [
+ 120.0282774748,
+ 30.203758052146
+ ],
+ "elevation": 201
+ },
+ {
+ "coord": [
+ 120.02750289356,
+ 30.203447317283
+ ],
+ "elevation": 185
+ },
+ {
+ "coord": [
+ 120.02738783032,
+ 30.203184529939
+ ],
+ "elevation": 180
+ },
+ {
+ "coord": [
+ 120.02726569301,
+ 30.203339806362
+ ],
+ "elevation": 180
+ },
+ {
+ "coord": [
+ 120.02582304221,
+ 30.202676870769
+ ],
+ "elevation": 159
+ },
+ {
+ "coord": [
+ 120.02522365137,
+ 30.20180975932
+ ],
+ "elevation": 174
+ },
+ {
+ "coord": [
+ 120.02477104815,
+ 30.201416734405
+ ],
+ "elevation": 186
+ },
+ {
+ "coord": [
+ 120.02411741229,
+ 30.201179319421
+ ],
+ "elevation": 190
+ },
+ {
+ "coord": [
+ 120.0226615381,
+ 30.199141751073
+ ],
+ "elevation": 212
+ },
+ {
+ "coord": [
+ 120.02123163124,
+ 30.198862376865
+ ],
+ "elevation": 222
+ },
+ {
+ "coord": [
+ 120.02015637472,
+ 30.198907023363
+ ],
+ "elevation": 234
+ },
+ {
+ "coord": [
+ 120.01917371261,
+ 30.19944470454
+ ],
+ "elevation": 255
+ },
+ {
+ "coord": [
+ 120.01793103615,
+ 30.199508468753
+ ],
+ "elevation": 258
+ },
+ {
+ "coord": [
+ 120.01695417244,
+ 30.199109778198
+ ],
+ "elevation": 263
+ },
+ {
+ "coord": [
+ 120.01601911691,
+ 30.198373342914
+ ],
+ "elevation": 241
+ },
+ {
+ "coord": [
+ 120.01555413447,
+ 30.198472388868
+ ],
+ "elevation": 272
+ },
+ {
+ "coord": [
+ 120.01481813961,
+ 30.197977605225
+ ],
+ "elevation": 267
+ },
+ {
+ "coord": [
+ 120.01459578533,
+ 30.197996723296
+ ],
+ "elevation": 267
+ },
+ {
+ "coord": [
+ 120.01426668178,
+ 30.197632031959
+ ],
+ "elevation": 270
+ },
+ {
+ "coord": [
+ 120.01441872918,
+ 30.197490934239
+ ],
+ "elevation": 256
+ },
+ {
+ "coord": [
+ 120.01433105284,
+ 30.197044110346
+ ],
+ "elevation": 247
+ },
+ {
+ "coord": [
+ 120.01274638687,
+ 30.195106372652
+ ],
+ "elevation": 254
+ },
+ {
+ "coord": [
+ 120.01248698064,
+ 30.195056945621
+ ],
+ "elevation": 258
+ },
+ {
+ "coord": [
+ 120.01277224089,
+ 30.19446861514
+ ],
+ "elevation": 244
+ },
+ {
+ "coord": [
+ 120.01334501992,
+ 30.194149529625
+ ],
+ "elevation": 233
+ },
+ {
+ "coord": [
+ 120.01450335175,
+ 30.194046527493
+ ],
+ "elevation": 217
+ },
+ {
+ "coord": [
+ 120.01490058255,
+ 30.194207190892
+ ],
+ "elevation": 217
+ },
+ {
+ "coord": [
+ 120.01517093188,
+ 30.194627233788
+ ],
+ "elevation": 213
+ },
+ {
+ "coord": [
+ 120.01563933086,
+ 30.194918848358
+ ],
+ "elevation": 212
+ },
+ {
+ "coord": [
+ 120.01575778559,
+ 30.195603951859
+ ],
+ "elevation": 214
+ },
+ {
+ "coord": [
+ 120.01599084693,
+ 30.195836731021
+ ],
+ "elevation": 217
+ },
+ {
+ "coord": [
+ 120.01595145179,
+ 30.196418278445
+ ],
+ "elevation": 204
+ },
+ {
+ "coord": [
+ 120.01617702268,
+ 30.196839576983
+ ],
+ "elevation": 191
+ },
+ {
+ "coord": [
+ 120.01752954311,
+ 30.197245375072
+ ],
+ "elevation": 193
+ },
+ {
+ "coord": [
+ 120.01763325744,
+ 30.197138257192
+ ],
+ "elevation": 193
+ },
+ {
+ "coord": [
+ 120.01796338469,
+ 30.197856184746
+ ],
+ "elevation": 186
+ },
+ {
+ "coord": [
+ 120.01831818786,
+ 30.198053579224
+ ],
+ "elevation": 188
+ },
+ {
+ "coord": [
+ 120.01895235498,
+ 30.197983272283
+ ],
+ "elevation": 183
+ },
+ {
+ "coord": [
+ 120.01992151552,
+ 30.197624381768
+ ],
+ "elevation": 181
+ },
+ {
+ "coord": [
+ 120.02008979038,
+ 30.197169944948
+ ],
+ "elevation": 167
+ },
+ {
+ "coord": [
+ 120.02064951998,
+ 30.196884672486
+ ],
+ "elevation": 161
+ },
+ {
+ "coord": [
+ 120.02203704039,
+ 30.196572609473
+ ],
+ "elevation": 152
+ },
+ {
+ "coord": [
+ 120.02307804638,
+ 30.196555281379
+ ],
+ "elevation": 155
+ },
+ {
+ "coord": [
+ 120.02346813183,
+ 30.196003150707
+ ],
+ "elevation": 134
+ },
+ {
+ "coord": [
+ 120.02379595215,
+ 30.195997512799
+ ],
+ "elevation": 136
+ },
+ {
+ "coord": [
+ 120.02358265316,
+ 30.196119717526
+ ],
+ "elevation": 134
+ },
+ {
+ "coord": [
+ 120.02384692862,
+ 30.195929769572
+ ],
+ "elevation": 136
+ },
+ {
+ "coord": [
+ 120.02409841697,
+ 30.196046702677
+ ],
+ "elevation": 138
+ },
+ {
+ "coord": [
+ 120.02446518695,
+ 30.195758298909
+ ],
+ "elevation": 135
+ },
+ {
+ "coord": [
+ 120.02490341646,
+ 30.195672931247
+ ],
+ "elevation": 134
+ },
+ {
+ "coord": [
+ 120.02638164665,
+ 30.195765035262
+ ],
+ "elevation": 124
+ },
+ {
+ "coord": [
+ 120.02714035047,
+ 30.195954631531
+ ],
+ "elevation": 119
+ },
+ {
+ "coord": [
+ 120.02830566946,
+ 30.196987275282
+ ],
+ "elevation": 111
+ },
+ {
+ "coord": [
+ 120.02851361456,
+ 30.197539955599
+ ],
+ "elevation": 113
+ },
+ {
+ "coord": [
+ 120.02898561786,
+ 30.197714871638
+ ],
+ "elevation": 94
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.16311551209,
+ 30.266249765866
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16311578177,
+ 30.266244063726
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16130743788,
+ 30.265669907678
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16053643347,
+ 30.265612387322
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.1594627004,
+ 30.265225808019
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.15879866838,
+ 30.265030887139
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.15824508212,
+ 30.264489116024
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.15679932962,
+ 30.262968394791
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.15541118764,
+ 30.261353804951
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.15400577794,
+ 30.259710097791
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.15359057436,
+ 30.259211527826
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.1530547167,
+ 30.258817450905
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.15257606364,
+ 30.258380486325
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.15223152412,
+ 30.258643485485
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.15168681503,
+ 30.259069915841
+ ],
+ "elevation": 6
+ },
+ {
+ "coord": [
+ 120.15113016268,
+ 30.259541256598
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.15089349453,
+ 30.259724323524
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.15065098312,
+ 30.259745499017
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.15043467971,
+ 30.259824252701
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.15010355389,
+ 30.259762316053
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.14907889801,
+ 30.25957764676
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.14853063642,
+ 30.259478055118
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.14761417099,
+ 30.259147152857
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.14765897834,
+ 30.258966782157
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.14797471483,
+ 30.258613880052
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.14792608738,
+ 30.258447838543
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.14759193004,
+ 30.258251065433
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.14674359872,
+ 30.257864401451
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.1459764711,
+ 30.257750135526
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.14558615436,
+ 30.257726507212
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.14519823262,
+ 30.25793854514
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.14497013668,
+ 30.258087796758
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.14459747703,
+ 30.257945930534
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.1442529696,
+ 30.257906936522
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.14398581526,
+ 30.257873231997
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.14346539942,
+ 30.257775374647
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.14287887274,
+ 30.257682092802
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.14259780193,
+ 30.257541726072
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.1422989739,
+ 30.257312558669
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.14237191504,
+ 30.256975911038
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.14254106268,
+ 30.256454221501
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.14310711029,
+ 30.254682788027
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.14375217287,
+ 30.252701579665
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.14447291695,
+ 30.250703484171
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.14474667659,
+ 30.249683130517
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.14519838045,
+ 30.248226629176
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.14557673175,
+ 30.246935879725
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.14591997041,
+ 30.245652399398
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.14630491198,
+ 30.244379580078
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.14654894445,
+ 30.243542053057
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.14670414535,
+ 30.242934967838
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.14723800395,
+ 30.241507040942
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.14762318628,
+ 30.240652934042
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.14803194153,
+ 30.239919923893
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.14850329238,
+ 30.239087276348
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.1491919315,
+ 30.23806679731
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.1497270577,
+ 30.237158752609
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.15013450771,
+ 30.23633944205
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.15045726921,
+ 30.235552257675
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.15074957669,
+ 30.235454227754
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.15086477653,
+ 30.235373743381
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.15174404791,
+ 30.235542060033
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.1524031455,
+ 30.235692533199
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.15298429542,
+ 30.235500309644
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.15362532611,
+ 30.235513939567
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.15380097032,
+ 30.235657464771
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.15431614802,
+ 30.235725466315
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.15503904506,
+ 30.235821295454
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.15573872656,
+ 30.235850774246
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.15627546776,
+ 30.235932405828
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.15696998174,
+ 30.235968200852
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.15743089823,
+ 30.235989938212
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.1576666742,
+ 30.236005051968
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.15805903417,
+ 30.235866647391
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.15859228496,
+ 30.235709614784
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.15908505889,
+ 30.235713179948
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.15946150453,
+ 30.235780798653
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.16009608337,
+ 30.235898748985
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16016743529,
+ 30.236147871978
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.160535956,
+ 30.236209735467
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16070674528,
+ 30.236417968893
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.16075914329,
+ 30.236802301355
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.160840888,
+ 30.237386614038
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16135331735,
+ 30.238069166936
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16156375942,
+ 30.238423236641
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16153333563,
+ 30.238527438926
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.16158522625,
+ 30.238646971071
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.16145224079,
+ 30.238937543887
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.1614880787,
+ 30.239082872312
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16142254694,
+ 30.239234926028
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16147582029,
+ 30.239373425664
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16165564629,
+ 30.239621694236
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16164216662,
+ 30.239773344893
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16131277162,
+ 30.239854486687
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16121734475,
+ 30.240090117906
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16139074045,
+ 30.240445400045
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.16112583212,
+ 30.240706097047
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.16111788822,
+ 30.240942578314
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.16079090561,
+ 30.240991970616
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16067062725,
+ 30.241450839856
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16075996383,
+ 30.241947110624
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16118014153,
+ 30.242163557211
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16128847298,
+ 30.242304308617
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.1613669484,
+ 30.242293926462
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16209519054,
+ 30.242108449394
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16247303116,
+ 30.241987707679
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.1629370945,
+ 30.241994364182
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16315304276,
+ 30.242134079272
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.1634450656,
+ 30.242603235853
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16349414987,
+ 30.242913329962
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16312550402,
+ 30.242933120891
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16276576553,
+ 30.24369165944
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.16272620572,
+ 30.244182948627
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.16216454536,
+ 30.244144157573
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16190609719,
+ 30.24457264811
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.16138052982,
+ 30.244684736831
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16098011955,
+ 30.244880076539
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16084851442,
+ 30.245173633506
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.16103477914,
+ 30.245569099696
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16095893507,
+ 30.246024983073
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.16125572392,
+ 30.246840104297
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.16149070724,
+ 30.246910449896
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.16158446224,
+ 30.247188230522
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.16208737866,
+ 30.247857769143
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.16252531047,
+ 30.248147846911
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.16289561716,
+ 30.248405535967
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.16329041216,
+ 30.248911113482
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.16398720137,
+ 30.24953222345
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.16454758805,
+ 30.250022893358
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16501463814,
+ 30.250382313344
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.16560266796,
+ 30.25107028823
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.1661169574,
+ 30.251607408899
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16595040532,
+ 30.251772150177
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16580851042,
+ 30.252086000897
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16547887665,
+ 30.252076583799
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16522744331,
+ 30.252093026321
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16484315109,
+ 30.252211609454
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16463743611,
+ 30.252475066209
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.16473438709,
+ 30.252719238347
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.1650454302,
+ 30.253207230998
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16536338134,
+ 30.253523933971
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16576442178,
+ 30.253565517924
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16599899757,
+ 30.253598797411
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16607426465,
+ 30.253688179462
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16608180965,
+ 30.253892641467
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16595144885,
+ 30.254023681078
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16578868717,
+ 30.254174803446
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16575637486,
+ 30.25428875911
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16572080366,
+ 30.254414165527
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16576035822,
+ 30.254473742585
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16573156112,
+ 30.254559963831
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.16579264906,
+ 30.254633834641
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.16582077817,
+ 30.254711510841
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.1658843176,
+ 30.254786157358
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.16599383201,
+ 30.254793296475
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.16605437828,
+ 30.254873152777
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.16603947573,
+ 30.254961310918
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.16609403151,
+ 30.255044523242
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16618568433,
+ 30.25518464858
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16631438415,
+ 30.255327697289
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.16648606923,
+ 30.255414700296
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16656424483,
+ 30.255414783095
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16671791491,
+ 30.255465468855
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16680445766,
+ 30.255382126415
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16692585581,
+ 30.255290357685
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.1672004748,
+ 30.255368712793
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16749970749,
+ 30.255572886982
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.16796629123,
+ 30.255944623016
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16812527005,
+ 30.256182828331
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16850346911,
+ 30.256429629425
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.16906764025,
+ 30.256694619266
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16921206053,
+ 30.257140434544
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16912316527,
+ 30.257638013839
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16876832023,
+ 30.25825436078
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16837015098,
+ 30.258877681913
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16790684839,
+ 30.25948935118
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16758659925,
+ 30.259885073696
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16707269667,
+ 30.260677628946
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16659929573,
+ 30.261431940954
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16639633265,
+ 30.261778739263
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16594011045,
+ 30.262253730223
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.1657165132,
+ 30.262332059401
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.16526404312,
+ 30.262364339925
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.1649570274,
+ 30.262387990313
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.16446968914,
+ 30.262905854741
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16419715202,
+ 30.263205475027
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16396717832,
+ 30.263619418199
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.16397475959,
+ 30.263993695773
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16359904377,
+ 30.264492140092
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16346245507,
+ 30.264835300712
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.16321921122,
+ 30.26548556728
+ ],
+ "elevation": 9
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.09463378344,
+ 30.192848945769
+ ],
+ "elevation": 17.8
+ },
+ {
+ "coord": [
+ 120.09391240947,
+ 30.193653602253
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.09389423819,
+ 30.19491601145
+ ],
+ "elevation": 23.2
+ },
+ {
+ "coord": [
+ 120.09267420583,
+ 30.197254123564
+ ],
+ "elevation": 25.2
+ },
+ {
+ "coord": [
+ 120.09186948424,
+ 30.200420356971
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.09119315275,
+ 30.201427769351
+ ],
+ "elevation": 31.2
+ },
+ {
+ "coord": [
+ 120.09129591721,
+ 30.201993246235
+ ],
+ "elevation": 32.6
+ },
+ {
+ "coord": [
+ 120.09224993861,
+ 30.203629721899
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.09197149026,
+ 30.205141850046
+ ],
+ "elevation": 38.8
+ },
+ {
+ "coord": [
+ 120.09197522832,
+ 30.206269170002
+ ],
+ "elevation": 42.8
+ },
+ {
+ "coord": [
+ 120.09215161739,
+ 30.206690127395
+ ],
+ "elevation": 43.8
+ },
+ {
+ "coord": [
+ 120.09337982232,
+ 30.208053692306
+ ],
+ "elevation": 46.4
+ },
+ {
+ "coord": [
+ 120.09484752026,
+ 30.210300341823
+ ],
+ "elevation": 51.2
+ },
+ {
+ "coord": [
+ 120.09513407707,
+ 30.21089735142
+ ],
+ "elevation": 52.4
+ },
+ {
+ "coord": [
+ 120.0951801515,
+ 30.211258986494
+ ],
+ "elevation": 53
+ },
+ {
+ "coord": [
+ 120.0950515666,
+ 30.21155954438
+ ],
+ "elevation": 53.6
+ },
+ {
+ "coord": [
+ 120.09540494242,
+ 30.211706465038
+ ],
+ "elevation": 56
+ },
+ {
+ "coord": [
+ 120.09539842905,
+ 30.211859328687
+ ],
+ "elevation": 57.2
+ },
+ {
+ "coord": [
+ 120.09574017116,
+ 30.212126473418
+ ],
+ "elevation": 63.8
+ },
+ {
+ "coord": [
+ 120.09599538753,
+ 30.213186494765
+ ],
+ "elevation": 100.8
+ },
+ {
+ "coord": [
+ 120.09663896632,
+ 30.213592288118
+ ],
+ "elevation": 118.4
+ },
+ {
+ "coord": [
+ 120.09682283097,
+ 30.213533383116
+ ],
+ "elevation": 124.2
+ },
+ {
+ "coord": [
+ 120.09790128966,
+ 30.214741922704
+ ],
+ "elevation": 161
+ },
+ {
+ "coord": [
+ 120.0988912977,
+ 30.215423016827
+ ],
+ "elevation": 182.8
+ },
+ {
+ "coord": [
+ 120.09887698302,
+ 30.215605851927
+ ],
+ "elevation": 184.8
+ },
+ {
+ "coord": [
+ 120.09882163845,
+ 30.215478130017
+ ],
+ "elevation": 184.8
+ },
+ {
+ "coord": [
+ 120.09879058452,
+ 30.215684792889
+ ],
+ "elevation": 186.6
+ },
+ {
+ "coord": [
+ 120.09849197413,
+ 30.215943654592
+ ],
+ "elevation": 196.2
+ },
+ {
+ "coord": [
+ 120.09903411315,
+ 30.215907197905
+ ],
+ "elevation": 202.2
+ },
+ {
+ "coord": [
+ 120.09963836518,
+ 30.2164776041
+ ],
+ "elevation": 209.6
+ },
+ {
+ "coord": [
+ 120.1001465068,
+ 30.216493047971
+ ],
+ "elevation": 219.4
+ },
+ {
+ "coord": [
+ 120.10056934168,
+ 30.216661486941
+ ],
+ "elevation": 227.8
+ },
+ {
+ "coord": [
+ 120.10073432735,
+ 30.216906511476
+ ],
+ "elevation": 235
+ },
+ {
+ "coord": [
+ 120.10115906612,
+ 30.217011454826
+ ],
+ "elevation": 245.4
+ },
+ {
+ "coord": [
+ 120.10164512887,
+ 30.217386846746
+ ],
+ "elevation": 258.2
+ },
+ {
+ "coord": [
+ 120.1023643387,
+ 30.218518094309
+ ],
+ "elevation": 282.4
+ },
+ {
+ "coord": [
+ 120.10223336342,
+ 30.218468254323
+ ],
+ "elevation": 285
+ },
+ {
+ "coord": [
+ 120.10270004824,
+ 30.218848582712
+ ],
+ "elevation": 284.8
+ },
+ {
+ "coord": [
+ 120.10307811401,
+ 30.218801631209
+ ],
+ "elevation": 283.8
+ },
+ {
+ "coord": [
+ 120.10395551348,
+ 30.218443583833
+ ],
+ "elevation": 283.6
+ },
+ {
+ "coord": [
+ 120.10387958062,
+ 30.21807386291
+ ],
+ "elevation": 277.2
+ },
+ {
+ "coord": [
+ 120.10403318263,
+ 30.217134965263
+ ],
+ "elevation": 251.2
+ },
+ {
+ "coord": [
+ 120.10391676996,
+ 30.216948193413
+ ],
+ "elevation": 247.8
+ },
+ {
+ "coord": [
+ 120.10423842073,
+ 30.216292725616
+ ],
+ "elevation": 242.2
+ },
+ {
+ "coord": [
+ 120.10437455346,
+ 30.215579759517
+ ],
+ "elevation": 242.2
+ },
+ {
+ "coord": [
+ 120.10516110652,
+ 30.215128592016
+ ],
+ "elevation": 254
+ },
+ {
+ "coord": [
+ 120.10587806693,
+ 30.214419923815
+ ],
+ "elevation": 252.2
+ },
+ {
+ "coord": [
+ 120.10662269802,
+ 30.213523758937
+ ],
+ "elevation": 259.2
+ },
+ {
+ "coord": [
+ 120.1067102877,
+ 30.213146238756
+ ],
+ "elevation": 266.6
+ },
+ {
+ "coord": [
+ 120.10638373695,
+ 30.212744322584
+ ],
+ "elevation": 266.6
+ },
+ {
+ "coord": [
+ 120.10623743102,
+ 30.212163326611
+ ],
+ "elevation": 267.6
+ },
+ {
+ "coord": [
+ 120.1060351301,
+ 30.211994512988
+ ],
+ "elevation": 268.8
+ },
+ {
+ "coord": [
+ 120.1052534055,
+ 30.211879399159
+ ],
+ "elevation": 276.8
+ },
+ {
+ "coord": [
+ 120.1053760061,
+ 30.210935350824
+ ],
+ "elevation": 289.8
+ },
+ {
+ "coord": [
+ 120.10504983153,
+ 30.210501237542
+ ],
+ "elevation": 293.6
+ },
+ {
+ "coord": [
+ 120.10441549982,
+ 30.210060405383
+ ],
+ "elevation": 301.2
+ },
+ {
+ "coord": [
+ 120.10475033817,
+ 30.20949629419
+ ],
+ "elevation": 306.4
+ },
+ {
+ "coord": [
+ 120.10459631646,
+ 30.208929182916
+ ],
+ "elevation": 310
+ },
+ {
+ "coord": [
+ 120.10357624727,
+ 30.208148105624
+ ],
+ "elevation": 310
+ },
+ {
+ "coord": [
+ 120.10367164183,
+ 30.208006300775
+ ],
+ "elevation": 310
+ },
+ {
+ "coord": [
+ 120.10349361547,
+ 30.207495941065
+ ],
+ "elevation": 312.6
+ },
+ {
+ "coord": [
+ 120.10388704146,
+ 30.207060476681
+ ],
+ "elevation": 309.8
+ },
+ {
+ "coord": [
+ 120.103823936,
+ 30.206309400098
+ ],
+ "elevation": 309
+ },
+ {
+ "coord": [
+ 120.10467760545,
+ 30.205430254981
+ ],
+ "elevation": 308
+ },
+ {
+ "coord": [
+ 120.10497398814,
+ 30.205288059282
+ ],
+ "elevation": 310.2
+ },
+ {
+ "coord": [
+ 120.1048669209,
+ 30.204989770393
+ ],
+ "elevation": 311.6
+ },
+ {
+ "coord": [
+ 120.10510287316,
+ 30.20426853063
+ ],
+ "elevation": 302.2
+ },
+ {
+ "coord": [
+ 120.10564912434,
+ 30.203283445575
+ ],
+ "elevation": 317.2
+ },
+ {
+ "coord": [
+ 120.10616453296,
+ 30.202887908027
+ ],
+ "elevation": 324.6
+ },
+ {
+ "coord": [
+ 120.10619550013,
+ 30.201832814253
+ ],
+ "elevation": 326.8
+ },
+ {
+ "coord": [
+ 120.10647319959,
+ 30.201472590463
+ ],
+ "elevation": 326
+ },
+ {
+ "coord": [
+ 120.1062188032,
+ 30.201349066944
+ ],
+ "elevation": 324
+ },
+ {
+ "coord": [
+ 120.10617579894,
+ 30.201043774308
+ ],
+ "elevation": 322.8
+ },
+ {
+ "coord": [
+ 120.10608573237,
+ 30.201193353198
+ ],
+ "elevation": 323.8
+ },
+ {
+ "coord": [
+ 120.10617291032,
+ 30.200929542434
+ ],
+ "elevation": 320.6
+ },
+ {
+ "coord": [
+ 120.10606945701,
+ 30.200545407806
+ ],
+ "elevation": 316
+ },
+ {
+ "coord": [
+ 120.10549574289,
+ 30.200115421669
+ ],
+ "elevation": 296.4
+ },
+ {
+ "coord": [
+ 120.10513767567,
+ 30.199616009318
+ ],
+ "elevation": 278.8
+ },
+ {
+ "coord": [
+ 120.1051526887,
+ 30.19941474986
+ ],
+ "elevation": 274.2
+ },
+ {
+ "coord": [
+ 120.10490496132,
+ 30.199115437343
+ ],
+ "elevation": 262.6
+ },
+ {
+ "coord": [
+ 120.10465019453,
+ 30.197856417343
+ ],
+ "elevation": 247.4
+ },
+ {
+ "coord": [
+ 120.10401300874,
+ 30.196628693315
+ ],
+ "elevation": 235
+ },
+ {
+ "coord": [
+ 120.10314615575,
+ 30.196532847154
+ ],
+ "elevation": 222.6
+ },
+ {
+ "coord": [
+ 120.10260485072,
+ 30.196042575164
+ ],
+ "elevation": 200.6
+ },
+ {
+ "coord": [
+ 120.10226333627,
+ 30.195934170232
+ ],
+ "elevation": 188.8
+ },
+ {
+ "coord": [
+ 120.10209014025,
+ 30.196046027369
+ ],
+ "elevation": 179.6
+ },
+ {
+ "coord": [
+ 120.10210324172,
+ 30.196194346542
+ ],
+ "elevation": 176.2
+ },
+ {
+ "coord": [
+ 120.10198283355,
+ 30.196160700718
+ ],
+ "elevation": 171.2
+ },
+ {
+ "coord": [
+ 120.10197510218,
+ 30.196355019243
+ ],
+ "elevation": 168
+ },
+ {
+ "coord": [
+ 120.1018203979,
+ 30.19632427033
+ ],
+ "elevation": 162.2
+ },
+ {
+ "coord": [
+ 120.10168274806,
+ 30.196556630767
+ ],
+ "elevation": 150.8
+ },
+ {
+ "coord": [
+ 120.10153428041,
+ 30.196499404704
+ ],
+ "elevation": 142.2
+ },
+ {
+ "coord": [
+ 120.10072875067,
+ 30.197185677806
+ ],
+ "elevation": 110.2
+ },
+ {
+ "coord": [
+ 120.10036549303,
+ 30.197289875879
+ ],
+ "elevation": 101.8
+ },
+ {
+ "coord": [
+ 120.10023243298,
+ 30.197544786748
+ ],
+ "elevation": 97
+ },
+ {
+ "coord": [
+ 120.1004285273,
+ 30.197788995073
+ ],
+ "elevation": 88.6
+ },
+ {
+ "coord": [
+ 120.10047480906,
+ 30.197657500451
+ ],
+ "elevation": 88.6
+ },
+ {
+ "coord": [
+ 120.10066666178,
+ 30.197810763629
+ ],
+ "elevation": 85
+ },
+ {
+ "coord": [
+ 120.10065835446,
+ 30.198060941551
+ ],
+ "elevation": 78.8
+ },
+ {
+ "coord": [
+ 120.10032798251,
+ 30.198238431522
+ ],
+ "elevation": 75
+ },
+ {
+ "coord": [
+ 120.10025927626,
+ 30.19805978033
+ ],
+ "elevation": 74.2
+ },
+ {
+ "coord": [
+ 120.09966195521,
+ 30.198141132471
+ ],
+ "elevation": 68.8
+ },
+ {
+ "coord": [
+ 120.09960040636,
+ 30.197799606613
+ ],
+ "elevation": 68
+ },
+ {
+ "coord": [
+ 120.09923959281,
+ 30.197587268388
+ ],
+ "elevation": 67.6
+ },
+ {
+ "coord": [
+ 120.09916797626,
+ 30.197345628894
+ ],
+ "elevation": 65.2
+ },
+ {
+ "coord": [
+ 120.09852082682,
+ 30.197311489327
+ ],
+ "elevation": 61.8
+ },
+ {
+ "coord": [
+ 120.0982672327,
+ 30.197077802377
+ ],
+ "elevation": 59.2
+ },
+ {
+ "coord": [
+ 120.0971785065,
+ 30.196918351784
+ ],
+ "elevation": 50.2
+ },
+ {
+ "coord": [
+ 120.09657677184,
+ 30.196530776934
+ ],
+ "elevation": 46.8
+ },
+ {
+ "coord": [
+ 120.09564957559,
+ 30.196294882417
+ ],
+ "elevation": 43.6
+ },
+ {
+ "coord": [
+ 120.0940947305,
+ 30.195043450328
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.09390362768,
+ 30.194096863582
+ ],
+ "elevation": 37
+ },
+ {
+ "coord": [
+ 120.09396067918,
+ 30.193717700369
+ ],
+ "elevation": 37
+ },
+ {
+ "coord": [
+ 120.09470593185,
+ 30.192785217112
+ ],
+ "elevation": 31.2
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.12429779909,
+ 30.276532269865
+ ],
+ "elevation": 35.7
+ },
+ {
+ "coord": [
+ 120.12449626658,
+ 30.276528599327
+ ],
+ "elevation": 13.1
+ },
+ {
+ "coord": [
+ 120.12476687136,
+ 30.276186469389
+ ],
+ "elevation": 12.2
+ },
+ {
+ "coord": [
+ 120.12524114987,
+ 30.276191478294
+ ],
+ "elevation": 18.4
+ },
+ {
+ "coord": [
+ 120.12597341111,
+ 30.275656589584
+ ],
+ "elevation": 61.2
+ },
+ {
+ "coord": [
+ 120.12609601594,
+ 30.275785219515
+ ],
+ "elevation": 76.1
+ },
+ {
+ "coord": [
+ 120.12655064624,
+ 30.275721248505
+ ],
+ "elevation": 79.4
+ },
+ {
+ "coord": [
+ 120.12663094019,
+ 30.275592925177
+ ],
+ "elevation": 110.2
+ },
+ {
+ "coord": [
+ 120.12638432165,
+ 30.275003199949
+ ],
+ "elevation": 131.4
+ },
+ {
+ "coord": [
+ 120.12574249577,
+ 30.274264559581
+ ],
+ "elevation": 138.6
+ },
+ {
+ "coord": [
+ 120.12496794391,
+ 30.274093917843
+ ],
+ "elevation": 138.6
+ },
+ {
+ "coord": [
+ 120.12527590999,
+ 30.273404730436
+ ],
+ "elevation": 139.5
+ },
+ {
+ "coord": [
+ 120.12495050056,
+ 30.273436317606
+ ],
+ "elevation": 140
+ },
+ {
+ "coord": [
+ 120.12403019827,
+ 30.273038487989
+ ],
+ "elevation": 142.4
+ },
+ {
+ "coord": [
+ 120.12311432148,
+ 30.272098903934
+ ],
+ "elevation": 157.3
+ },
+ {
+ "coord": [
+ 120.12226189442,
+ 30.271746083951
+ ],
+ "elevation": 152.5
+ },
+ {
+ "coord": [
+ 120.12214749276,
+ 30.271556524463
+ ],
+ "elevation": 153.9
+ },
+ {
+ "coord": [
+ 120.1219334552,
+ 30.271683648873
+ ],
+ "elevation": 154.9
+ },
+ {
+ "coord": [
+ 120.12183123443,
+ 30.271412451282
+ ],
+ "elevation": 156.8
+ },
+ {
+ "coord": [
+ 120.1216491707,
+ 30.271479164505
+ ],
+ "elevation": 158.3
+ },
+ {
+ "coord": [
+ 120.1215510364,
+ 30.271276321751
+ ],
+ "elevation": 160.2
+ },
+ {
+ "coord": [
+ 120.12057620363,
+ 30.270906331624
+ ],
+ "elevation": 166.4
+ },
+ {
+ "coord": [
+ 120.12039947726,
+ 30.270503803535
+ ],
+ "elevation": 165
+ },
+ {
+ "coord": [
+ 120.11998717684,
+ 30.270302176806
+ ],
+ "elevation": 166.9
+ },
+ {
+ "coord": [
+ 120.11980316919,
+ 30.269955929436
+ ],
+ "elevation": 171.3
+ },
+ {
+ "coord": [
+ 120.1197263383,
+ 30.270213971086
+ ],
+ "elevation": 172.7
+ },
+ {
+ "coord": [
+ 120.119667608,
+ 30.269518542817
+ ],
+ "elevation": 170.8
+ },
+ {
+ "coord": [
+ 120.11934322242,
+ 30.26890080493
+ ],
+ "elevation": 166
+ },
+ {
+ "coord": [
+ 120.11868406173,
+ 30.268677421164
+ ],
+ "elevation": 164.5
+ },
+ {
+ "coord": [
+ 120.11857229511,
+ 30.268817925044
+ ],
+ "elevation": 164
+ },
+ {
+ "coord": [
+ 120.11842151609,
+ 30.268209346113
+ ],
+ "elevation": 159.7
+ },
+ {
+ "coord": [
+ 120.11773556682,
+ 30.267110794621
+ ],
+ "elevation": 158.8
+ },
+ {
+ "coord": [
+ 120.11761465088,
+ 30.266179494433
+ ],
+ "elevation": 159.7
+ },
+ {
+ "coord": [
+ 120.11677485393,
+ 30.265813986841
+ ],
+ "elevation": 160.2
+ },
+ {
+ "coord": [
+ 120.11625010834,
+ 30.26482585269
+ ],
+ "elevation": 146.3
+ },
+ {
+ "coord": [
+ 120.11589552749,
+ 30.26375669572
+ ],
+ "elevation": 143.4
+ },
+ {
+ "coord": [
+ 120.1159054695,
+ 30.262798529378
+ ],
+ "elevation": 144.8
+ },
+ {
+ "coord": [
+ 120.11522147422,
+ 30.262004749045
+ ],
+ "elevation": 132.8
+ },
+ {
+ "coord": [
+ 120.1160714544,
+ 30.259916633471
+ ],
+ "elevation": 127.5
+ },
+ {
+ "coord": [
+ 120.11610132935,
+ 30.259359094097
+ ],
+ "elevation": 127.5
+ },
+ {
+ "coord": [
+ 120.11584166895,
+ 30.259154945229
+ ],
+ "elevation": 134.7
+ },
+ {
+ "coord": [
+ 120.11536570247,
+ 30.259118091794
+ ],
+ "elevation": 136.6
+ },
+ {
+ "coord": [
+ 120.11466491095,
+ 30.258661592083
+ ],
+ "elevation": 145.8
+ },
+ {
+ "coord": [
+ 120.11428937961,
+ 30.257922418262
+ ],
+ "elevation": 154.9
+ },
+ {
+ "coord": [
+ 120.10743231206,
+ 30.254373842765
+ ],
+ "elevation": 153.5
+ },
+ {
+ "coord": [
+ 120.10712237206,
+ 30.254029730123
+ ],
+ "elevation": 153.5
+ },
+ {
+ "coord": [
+ 120.10685594261,
+ 30.253979847791
+ ],
+ "elevation": 153.5
+ },
+ {
+ "coord": [
+ 120.10660992718,
+ 30.254376323333
+ ],
+ "elevation": 153.5
+ },
+ {
+ "coord": [
+ 120.10464336394,
+ 30.254574452594
+ ],
+ "elevation": 175.6
+ },
+ {
+ "coord": [
+ 120.10360985456,
+ 30.252634884545
+ ],
+ "elevation": 182.8
+ },
+ {
+ "coord": [
+ 120.10416221062,
+ 30.252138001879
+ ],
+ "elevation": 312.1
+ },
+ {
+ "coord": [
+ 120.10146113922,
+ 30.250946535974
+ ],
+ "elevation": 300.1
+ },
+ {
+ "coord": [
+ 120.10078489652,
+ 30.250810641502
+ ],
+ "elevation": 311.1
+ },
+ {
+ "coord": [
+ 120.10045305319,
+ 30.249440522071
+ ],
+ "elevation": 304.9
+ },
+ {
+ "coord": [
+ 120.09955168397,
+ 30.248509072078
+ ],
+ "elevation": 315.4
+ },
+ {
+ "coord": [
+ 120.09911767405,
+ 30.248370698425
+ ],
+ "elevation": 343.8
+ },
+ {
+ "coord": [
+ 120.09882815372,
+ 30.248006828817
+ ],
+ "elevation": 336.6
+ },
+ {
+ "coord": [
+ 120.09837908067,
+ 30.246847110368
+ ],
+ "elevation": 330.4
+ },
+ {
+ "coord": [
+ 120.09727116965,
+ 30.24585615493
+ ],
+ "elevation": 307.3
+ },
+ {
+ "coord": [
+ 120.09706751029,
+ 30.245226878135
+ ],
+ "elevation": 298.6
+ },
+ {
+ "coord": [
+ 120.09568812085,
+ 30.24406928825
+ ],
+ "elevation": 291.4
+ },
+ {
+ "coord": [
+ 120.09475680418,
+ 30.243636541783
+ ],
+ "elevation": 303.4
+ },
+ {
+ "coord": [
+ 120.09429526978,
+ 30.243231969847
+ ],
+ "elevation": 301
+ },
+ {
+ "coord": [
+ 120.0941204668,
+ 30.242839592588
+ ],
+ "elevation": 305.4
+ },
+ {
+ "coord": [
+ 120.09311446901,
+ 30.242279985864
+ ],
+ "elevation": 328.4
+ },
+ {
+ "coord": [
+ 120.09314582962,
+ 30.241505923364
+ ],
+ "elevation": 342.8
+ },
+ {
+ "coord": [
+ 120.09303886442,
+ 30.241184302234
+ ],
+ "elevation": 344.3
+ },
+ {
+ "coord": [
+ 120.09263974295,
+ 30.240843685535
+ ],
+ "elevation": 344.3
+ },
+ {
+ "coord": [
+ 120.09269828867,
+ 30.240244864088
+ ],
+ "elevation": 329.4
+ },
+ {
+ "coord": [
+ 120.09255001024,
+ 30.240195443624
+ ],
+ "elevation": 323.6
+ },
+ {
+ "coord": [
+ 120.09266857341,
+ 30.23995046335
+ ],
+ "elevation": 317.9
+ },
+ {
+ "coord": [
+ 120.09249957404,
+ 30.239692822256
+ ],
+ "elevation": 313.5
+ },
+ {
+ "coord": [
+ 120.09265279359,
+ 30.239263710285
+ ],
+ "elevation": 281.8
+ },
+ {
+ "coord": [
+ 120.09219732281,
+ 30.238722117698
+ ],
+ "elevation": 278
+ },
+ {
+ "coord": [
+ 120.0918334794,
+ 30.23799694043
+ ],
+ "elevation": 253.4
+ },
+ {
+ "coord": [
+ 120.09195046057,
+ 30.237484116163
+ ],
+ "elevation": 245.8
+ },
+ {
+ "coord": [
+ 120.09244820413,
+ 30.237024187625
+ ],
+ "elevation": 228.9
+ },
+ {
+ "coord": [
+ 120.09263129249,
+ 30.237053629705
+ ],
+ "elevation": 228.5
+ },
+ {
+ "coord": [
+ 120.09302265036,
+ 30.23629713126
+ ],
+ "elevation": 238.1
+ },
+ {
+ "coord": [
+ 120.09288052163,
+ 30.234930817944
+ ],
+ "elevation": 257.8
+ },
+ {
+ "coord": [
+ 120.09224280305,
+ 30.233997586531
+ ],
+ "elevation": 264
+ },
+ {
+ "coord": [
+ 120.09231480685,
+ 30.233890661261
+ ],
+ "elevation": 264
+ },
+ {
+ "coord": [
+ 120.09159365337,
+ 30.233284823339
+ ],
+ "elevation": 263.5
+ },
+ {
+ "coord": [
+ 120.09013196329,
+ 30.231528967436
+ ],
+ "elevation": 287.6
+ },
+ {
+ "coord": [
+ 120.09107422124,
+ 30.231296361847
+ ],
+ "elevation": 286.6
+ },
+ {
+ "coord": [
+ 120.09154362574,
+ 30.231437600821
+ ],
+ "elevation": 287.6
+ },
+ {
+ "coord": [
+ 120.0917061182,
+ 30.231358642943
+ ],
+ "elevation": 284.7
+ },
+ {
+ "coord": [
+ 120.09157351671,
+ 30.231327452224
+ ],
+ "elevation": 285.2
+ },
+ {
+ "coord": [
+ 120.09213648713,
+ 30.231315828365
+ ],
+ "elevation": 281.8
+ },
+ {
+ "coord": [
+ 120.09270708302,
+ 30.231048027171
+ ],
+ "elevation": 277.5
+ },
+ {
+ "coord": [
+ 120.09396450226,
+ 30.231129044591
+ ],
+ "elevation": 272.7
+ },
+ {
+ "coord": [
+ 120.09497577289,
+ 30.229848518499
+ ],
+ "elevation": 280.4
+ },
+ {
+ "coord": [
+ 120.09517954836,
+ 30.22976066733
+ ],
+ "elevation": 275.6
+ },
+ {
+ "coord": [
+ 120.09630677318,
+ 30.229864490821
+ ],
+ "elevation": 300.1
+ },
+ {
+ "coord": [
+ 120.09644999418,
+ 30.228829450005
+ ],
+ "elevation": 333.2
+ },
+ {
+ "coord": [
+ 120.09659545077,
+ 30.22873317984
+ ],
+ "elevation": 340.4
+ },
+ {
+ "coord": [
+ 120.09651715471,
+ 30.228292179492
+ ],
+ "elevation": 361.6
+ },
+ {
+ "coord": [
+ 120.09731295841,
+ 30.228146645119
+ ],
+ "elevation": 360.2
+ },
+ {
+ "coord": [
+ 120.09744621909,
+ 30.227965494547
+ ],
+ "elevation": 359.7
+ },
+ {
+ "coord": [
+ 120.09819404194,
+ 30.227929712715
+ ],
+ "elevation": 339
+ },
+ {
+ "coord": [
+ 120.09843626948,
+ 30.227558526174
+ ],
+ "elevation": 330.8
+ },
+ {
+ "coord": [
+ 120.09905543398,
+ 30.227236475154
+ ],
+ "elevation": 338.5
+ },
+ {
+ "coord": [
+ 120.0993570982,
+ 30.226903006265
+ ],
+ "elevation": 340
+ },
+ {
+ "coord": [
+ 120.09897126131,
+ 30.226356962017
+ ],
+ "elevation": 349.1
+ },
+ {
+ "coord": [
+ 120.0989876746,
+ 30.225150263185
+ ],
+ "elevation": 401.5
+ },
+ {
+ "coord": [
+ 120.10041738846,
+ 30.224742350593
+ ],
+ "elevation": 396.7
+ },
+ {
+ "coord": [
+ 120.10096180924,
+ 30.224310748887
+ ],
+ "elevation": 393.8
+ },
+ {
+ "coord": [
+ 120.10179688458,
+ 30.224077546837
+ ],
+ "elevation": 362.6
+ },
+ {
+ "coord": [
+ 120.10243557491,
+ 30.223549793016
+ ],
+ "elevation": 316.9
+ },
+ {
+ "coord": [
+ 120.10313202787,
+ 30.223547079726
+ ],
+ "elevation": 299.1
+ },
+ {
+ "coord": [
+ 120.10329112681,
+ 30.222908305106
+ ],
+ "elevation": 299.1
+ },
+ {
+ "coord": [
+ 120.10403236139,
+ 30.221745598702
+ ],
+ "elevation": 296.7
+ },
+ {
+ "coord": [
+ 120.10423250671,
+ 30.220795523323
+ ],
+ "elevation": 299.1
+ },
+ {
+ "coord": [
+ 120.1046067255,
+ 30.220250488488
+ ],
+ "elevation": 311.1
+ },
+ {
+ "coord": [
+ 120.10497621361,
+ 30.220209899459
+ ],
+ "elevation": 317.4
+ },
+ {
+ "coord": [
+ 120.10522547136,
+ 30.219953173147
+ ],
+ "elevation": 314.5
+ },
+ {
+ "coord": [
+ 120.10532402082,
+ 30.219734836289
+ ],
+ "elevation": 314.5
+ },
+ {
+ "coord": [
+ 120.10481372474,
+ 30.219391379574
+ ],
+ "elevation": 313.5
+ },
+ {
+ "coord": [
+ 120.10390851485,
+ 30.218400170604
+ ],
+ "elevation": 311.6
+ },
+ {
+ "coord": [
+ 120.10394458632,
+ 30.216908803859
+ ],
+ "elevation": 262.1
+ },
+ {
+ "coord": [
+ 120.10424004094,
+ 30.216238228976
+ ],
+ "elevation": 250.1
+ },
+ {
+ "coord": [
+ 120.10431135142,
+ 30.215622065377
+ ],
+ "elevation": 249.6
+ },
+ {
+ "coord": [
+ 120.10446395884,
+ 30.215428585745
+ ],
+ "elevation": 248.6
+ },
+ {
+ "coord": [
+ 120.10486586855,
+ 30.215328627857
+ ],
+ "elevation": 251.5
+ },
+ {
+ "coord": [
+ 120.10571949462,
+ 30.214471254226
+ ],
+ "elevation": 251.5
+ },
+ {
+ "coord": [
+ 120.10619388365,
+ 30.214188085044
+ ],
+ "elevation": 253
+ },
+ {
+ "coord": [
+ 120.10656732207,
+ 30.213477825971
+ ],
+ "elevation": 253.9
+ },
+ {
+ "coord": [
+ 120.10656848196,
+ 30.212975476299
+ ],
+ "elevation": 255.8
+ },
+ {
+ "coord": [
+ 120.10570668308,
+ 30.21077816812
+ ],
+ "elevation": 262.1
+ },
+ {
+ "coord": [
+ 120.10528138744,
+ 30.210275427882
+ ],
+ "elevation": 264.5
+ },
+ {
+ "coord": [
+ 120.10477444326,
+ 30.210110267365
+ ],
+ "elevation": 282.3
+ },
+ {
+ "coord": [
+ 120.10456710477,
+ 30.209808597395
+ ],
+ "elevation": 285.2
+ },
+ {
+ "coord": [
+ 120.10496296941,
+ 30.209329596528
+ ],
+ "elevation": 288.5
+ },
+ {
+ "coord": [
+ 120.10460232227,
+ 30.208761658163
+ ],
+ "elevation": 291.4
+ },
+ {
+ "coord": [
+ 120.10428637787,
+ 30.208594257111
+ ],
+ "elevation": 293.3
+ },
+ {
+ "coord": [
+ 120.10406534914,
+ 30.208166998694
+ ],
+ "elevation": 291.9
+ },
+ {
+ "coord": [
+ 120.10376080367,
+ 30.207918088851
+ ],
+ "elevation": 292.9
+ },
+ {
+ "coord": [
+ 120.10371512823,
+ 30.207375620037
+ ],
+ "elevation": 297.7
+ },
+ {
+ "coord": [
+ 120.10394810408,
+ 30.207007841323
+ ],
+ "elevation": 300.1
+ },
+ {
+ "coord": [
+ 120.10383144473,
+ 30.206416670033
+ ],
+ "elevation": 306.3
+ },
+ {
+ "coord": [
+ 120.1041301016,
+ 30.205988460786
+ ],
+ "elevation": 310.2
+ },
+ {
+ "coord": [
+ 120.10423979051,
+ 30.20592364731
+ ],
+ "elevation": 309.7
+ },
+ {
+ "coord": [
+ 120.10423429857,
+ 30.206098769409
+ ],
+ "elevation": 311.1
+ },
+ {
+ "coord": [
+ 120.10435670244,
+ 30.20599538535
+ ],
+ "elevation": 311.6
+ },
+ {
+ "coord": [
+ 120.10466294784,
+ 30.205564263032
+ ],
+ "elevation": 312.1
+ },
+ {
+ "coord": [
+ 120.10502368921,
+ 30.204337971466
+ ],
+ "elevation": 315
+ },
+ {
+ "coord": [
+ 120.10598539333,
+ 30.202940538145
+ ],
+ "elevation": 323.1
+ },
+ {
+ "coord": [
+ 120.10606602657,
+ 30.202335146582
+ ],
+ "elevation": 336.6
+ },
+ {
+ "coord": [
+ 120.10632863016,
+ 30.202305854704
+ ],
+ "elevation": 334.7
+ },
+ {
+ "coord": [
+ 120.10618028139,
+ 30.201963563543
+ ],
+ "elevation": 336.1
+ },
+ {
+ "coord": [
+ 120.10631745789,
+ 30.201660701158
+ ],
+ "elevation": 337.1
+ },
+ {
+ "coord": [
+ 120.1065303695,
+ 30.201619444358
+ ],
+ "elevation": 335.2
+ },
+ {
+ "coord": [
+ 120.10653696099,
+ 30.201089584459
+ ],
+ "elevation": 330.8
+ },
+ {
+ "coord": [
+ 120.10673554765,
+ 30.201066243368
+ ],
+ "elevation": 330.8
+ },
+ {
+ "coord": [
+ 120.10695929699,
+ 30.201374992362
+ ],
+ "elevation": 317.9
+ },
+ {
+ "coord": [
+ 120.10719567157,
+ 30.201419205181
+ ],
+ "elevation": 316.9
+ },
+ {
+ "coord": [
+ 120.109139963,
+ 30.201331574244
+ ],
+ "elevation": 299.6
+ },
+ {
+ "coord": [
+ 120.10975774987,
+ 30.20103065284
+ ],
+ "elevation": 279.4
+ },
+ {
+ "coord": [
+ 120.11013510708,
+ 30.200624098476
+ ],
+ "elevation": 271.7
+ },
+ {
+ "coord": [
+ 120.11102045347,
+ 30.200563507609
+ ],
+ "elevation": 267.9
+ },
+ {
+ "coord": [
+ 120.11084389579,
+ 30.20024023153
+ ],
+ "elevation": 265.5
+ },
+ {
+ "coord": [
+ 120.11117206764,
+ 30.200269129521
+ ],
+ "elevation": 265.9
+ },
+ {
+ "coord": [
+ 120.11126981907,
+ 30.200065410861
+ ],
+ "elevation": 260.7
+ },
+ {
+ "coord": [
+ 120.11143082944,
+ 30.200226237354
+ ],
+ "elevation": 244.3
+ },
+ {
+ "coord": [
+ 120.11307486735,
+ 30.197856762352
+ ],
+ "elevation": 222.7
+ },
+ {
+ "coord": [
+ 120.11287431833,
+ 30.197082977018
+ ],
+ "elevation": 201.1
+ },
+ {
+ "coord": [
+ 120.11282536417,
+ 30.197406471037
+ ],
+ "elevation": 172.7
+ },
+ {
+ "coord": [
+ 120.11282345359,
+ 30.197110555009
+ ],
+ "elevation": 169.3
+ },
+ {
+ "coord": [
+ 120.11403514654,
+ 30.196149972873
+ ],
+ "elevation": 160.7
+ },
+ {
+ "coord": [
+ 120.11466262658,
+ 30.195359902926
+ ],
+ "elevation": 137.6
+ },
+ {
+ "coord": [
+ 120.11468452384,
+ 30.195079441452
+ ],
+ "elevation": 130.9
+ },
+ {
+ "coord": [
+ 120.11515075831,
+ 30.194392316583
+ ],
+ "elevation": 109.7
+ },
+ {
+ "coord": [
+ 120.11499078435,
+ 30.194186403572
+ ],
+ "elevation": 109.7
+ },
+ {
+ "coord": [
+ 120.11643309289,
+ 30.193808469785
+ ],
+ "elevation": 109.2
+ },
+ {
+ "coord": [
+ 120.11748792754,
+ 30.193726277809
+ ],
+ "elevation": 109.7
+ },
+ {
+ "coord": [
+ 120.11741823795,
+ 30.193284431166
+ ],
+ "elevation": 93.9
+ },
+ {
+ "coord": [
+ 120.11718485193,
+ 30.193348307111
+ ],
+ "elevation": 47.7
+ },
+ {
+ "coord": [
+ 120.11840706293,
+ 30.193105348838
+ ],
+ "elevation": 42.4
+ },
+ {
+ "coord": [
+ 120.11857201897,
+ 30.193317331662
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.12182672057,
+ 30.193534666054
+ ],
+ "elevation": 5.4
+ },
+ {
+ "coord": [
+ 120.12288904467,
+ 30.193808464669
+ ],
+ "elevation": 5.9
+ },
+ {
+ "coord": [
+ 120.12382545712,
+ 30.194218081578
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.12366047195,
+ 30.195575575143
+ ],
+ "elevation": 8.3
+ },
+ {
+ "coord": [
+ 120.12438623608,
+ 30.19773826747
+ ],
+ "elevation": 6.4
+ },
+ {
+ "coord": [
+ 120.12396934671,
+ 30.196997221236
+ ],
+ "elevation": 6.4
+ },
+ {
+ "coord": [
+ 120.12350357493,
+ 30.198001102448
+ ],
+ "elevation": 5.9
+ },
+ {
+ "coord": [
+ 120.12286413138,
+ 30.19836467058
+ ],
+ "elevation": 4.9
+ },
+ {
+ "coord": [
+ 120.12257007797,
+ 30.198689331819
+ ],
+ "elevation": 6.9
+ },
+ {
+ "coord": [
+ 120.12256745842,
+ 30.198911987922
+ ],
+ "elevation": 7.8
+ },
+ {
+ "coord": [
+ 120.1204890586,
+ 30.201006716297
+ ],
+ "elevation": 7.3
+ },
+ {
+ "coord": [
+ 120.12045825516,
+ 30.201651769594
+ ],
+ "elevation": 7.3
+ },
+ {
+ "coord": [
+ 120.12024449006,
+ 30.202110501697
+ ],
+ "elevation": 6.9
+ },
+ {
+ "coord": [
+ 120.1201443076,
+ 30.202859556086
+ ],
+ "elevation": 21.3
+ },
+ {
+ "coord": [
+ 120.12033632821,
+ 30.202889185026
+ ],
+ "elevation": 24.7
+ },
+ {
+ "coord": [
+ 120.12012277062,
+ 30.202662245591
+ ],
+ "elevation": 24.7
+ },
+ {
+ "coord": [
+ 120.12143119266,
+ 30.204371899878
+ ],
+ "elevation": 31.4
+ },
+ {
+ "coord": [
+ 120.121655095,
+ 30.205615465119
+ ],
+ "elevation": 29.9
+ },
+ {
+ "coord": [
+ 120.12212800243,
+ 30.20651804515
+ ],
+ "elevation": 34.3
+ },
+ {
+ "coord": [
+ 120.12215357259,
+ 30.206868315447
+ ],
+ "elevation": 34.3
+ },
+ {
+ "coord": [
+ 120.12341858014,
+ 30.207756763084
+ ],
+ "elevation": 221.7
+ },
+ {
+ "coord": [
+ 120.12714287213,
+ 30.209812249373
+ ],
+ "elevation": 210.2
+ },
+ {
+ "coord": [
+ 120.12724909889,
+ 30.210204927527
+ ],
+ "elevation": 216.4
+ },
+ {
+ "coord": [
+ 120.12697913368,
+ 30.211125189096
+ ],
+ "elevation": 192.9
+ },
+ {
+ "coord": [
+ 120.12728174484,
+ 30.211812858295
+ ],
+ "elevation": 193.4
+ },
+ {
+ "coord": [
+ 120.12701717604,
+ 30.21195247887
+ ],
+ "elevation": 189
+ },
+ {
+ "coord": [
+ 120.12685405149,
+ 30.212264506011
+ ],
+ "elevation": 181.3
+ },
+ {
+ "coord": [
+ 120.1268468604,
+ 30.212947526283
+ ],
+ "elevation": 177.5
+ },
+ {
+ "coord": [
+ 120.12741900236,
+ 30.213330663994
+ ],
+ "elevation": 175.1
+ },
+ {
+ "coord": [
+ 120.12777027613,
+ 30.214204511801
+ ],
+ "elevation": 156.8
+ },
+ {
+ "coord": [
+ 120.12890353748,
+ 30.215323193784
+ ],
+ "elevation": 152.5
+ },
+ {
+ "coord": [
+ 120.12994406677,
+ 30.21571369956
+ ],
+ "elevation": 170.8
+ },
+ {
+ "coord": [
+ 120.13078852532,
+ 30.21671844117
+ ],
+ "elevation": 181.8
+ },
+ {
+ "coord": [
+ 120.13139659847,
+ 30.216877056256
+ ],
+ "elevation": 207.8
+ },
+ {
+ "coord": [
+ 120.13225877183,
+ 30.217455729922
+ ],
+ "elevation": 233.3
+ },
+ {
+ "coord": [
+ 120.13214196064,
+ 30.21744716523
+ ],
+ "elevation": 236.1
+ },
+ {
+ "coord": [
+ 120.13224710827,
+ 30.217732222388
+ ],
+ "elevation": 236.6
+ },
+ {
+ "coord": [
+ 120.13305596297,
+ 30.218388686854
+ ],
+ "elevation": 206.8
+ },
+ {
+ "coord": [
+ 120.13405545791,
+ 30.21872930106
+ ],
+ "elevation": 180.9
+ },
+ {
+ "coord": [
+ 120.13406826212,
+ 30.21896603145
+ ],
+ "elevation": 173.7
+ },
+ {
+ "coord": [
+ 120.13433681141,
+ 30.219185656056
+ ],
+ "elevation": 166.4
+ },
+ {
+ "coord": [
+ 120.13532219549,
+ 30.219473425476
+ ],
+ "elevation": 159.2
+ },
+ {
+ "coord": [
+ 120.13576912486,
+ 30.219412309627
+ ],
+ "elevation": 149.6
+ },
+ {
+ "coord": [
+ 120.13630349297,
+ 30.218092300179
+ ],
+ "elevation": 108.8
+ },
+ {
+ "coord": [
+ 120.13676384327,
+ 30.217998939233
+ ],
+ "elevation": 100.1
+ },
+ {
+ "coord": [
+ 120.13674721334,
+ 30.217414236975
+ ],
+ "elevation": 94.3
+ },
+ {
+ "coord": [
+ 120.13735853,
+ 30.216838210988
+ ],
+ "elevation": 70.3
+ },
+ {
+ "coord": [
+ 120.13723206768,
+ 30.216845192284
+ ],
+ "elevation": 64.1
+ },
+ {
+ "coord": [
+ 120.13723614257,
+ 30.216629492268
+ ],
+ "elevation": 63.6
+ },
+ {
+ "coord": [
+ 120.1372834655,
+ 30.216732095061
+ ],
+ "elevation": 61.7
+ },
+ {
+ "coord": [
+ 120.13822998113,
+ 30.216144865427
+ ],
+ "elevation": 54.5
+ },
+ {
+ "coord": [
+ 120.13859125144,
+ 30.215395974806
+ ],
+ "elevation": 55.9
+ },
+ {
+ "coord": [
+ 120.13916011004,
+ 30.215316505114
+ ],
+ "elevation": 55.9
+ },
+ {
+ "coord": [
+ 120.13922949692,
+ 30.215143171672
+ ],
+ "elevation": 55.9
+ },
+ {
+ "coord": [
+ 120.14068523645,
+ 30.215629895014
+ ],
+ "elevation": 55.9
+ },
+ {
+ "coord": [
+ 120.14077450414,
+ 30.215516718885
+ ],
+ "elevation": 43.4
+ },
+ {
+ "coord": [
+ 120.14105890201,
+ 30.215577055407
+ ],
+ "elevation": 38.6
+ },
+ {
+ "coord": [
+ 120.14116694372,
+ 30.215792382517
+ ],
+ "elevation": 37.1
+ },
+ {
+ "coord": [
+ 120.14168843464,
+ 30.215881201321
+ ],
+ "elevation": 32.8
+ },
+ {
+ "coord": [
+ 120.14184766446,
+ 30.216430531455
+ ],
+ "elevation": 30.4
+ },
+ {
+ "coord": [
+ 120.14181965491,
+ 30.217297075977
+ ],
+ "elevation": 34.3
+ },
+ {
+ "coord": [
+ 120.14242502044,
+ 30.219458126776
+ ],
+ "elevation": 22.2
+ },
+ {
+ "coord": [
+ 120.14236216359,
+ 30.220907651489
+ ],
+ "elevation": 20.3
+ },
+ {
+ "coord": [
+ 120.14202815356,
+ 30.22276896674
+ ],
+ "elevation": 36.2
+ },
+ {
+ "coord": [
+ 120.14235114368,
+ 30.222376285471
+ ],
+ "elevation": 64.1
+ },
+ {
+ "coord": [
+ 120.14222683811,
+ 30.221806133563
+ ],
+ "elevation": 50.1
+ },
+ {
+ "coord": [
+ 120.14244538011,
+ 30.220549208162
+ ],
+ "elevation": 36.2
+ },
+ {
+ "coord": [
+ 120.1421298416,
+ 30.220382952201
+ ],
+ "elevation": 36.2
+ },
+ {
+ "coord": [
+ 120.14213468627,
+ 30.220120012639
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.14258402281,
+ 30.219579871256
+ ],
+ "elevation": 26.1
+ },
+ {
+ "coord": [
+ 120.1435018098,
+ 30.219718869913
+ ],
+ "elevation": 25.6
+ },
+ {
+ "coord": [
+ 120.14420315209,
+ 30.219329734863
+ ],
+ "elevation": 18.4
+ },
+ {
+ "coord": [
+ 120.1446998317,
+ 30.219238621314
+ ],
+ "elevation": 30.4
+ },
+ {
+ "coord": [
+ 120.1450494291,
+ 30.218759293998
+ ],
+ "elevation": 45.8
+ },
+ {
+ "coord": [
+ 120.14544843972,
+ 30.21898173076
+ ],
+ "elevation": 62.6
+ },
+ {
+ "coord": [
+ 120.14573970958,
+ 30.219727473647
+ ],
+ "elevation": 42.4
+ },
+ {
+ "coord": [
+ 120.14628397758,
+ 30.220112631825
+ ],
+ "elevation": 42.9
+ },
+ {
+ "coord": [
+ 120.14737875868,
+ 30.220212888458
+ ],
+ "elevation": 54.5
+ },
+ {
+ "coord": [
+ 120.14813004994,
+ 30.219939505269
+ ],
+ "elevation": 71.8
+ },
+ {
+ "coord": [
+ 120.14876309687,
+ 30.221696876459
+ ],
+ "elevation": 94.3
+ },
+ {
+ "coord": [
+ 120.14900205551,
+ 30.221745635661
+ ],
+ "elevation": 97.2
+ },
+ {
+ "coord": [
+ 120.14918482621,
+ 30.221568014724
+ ],
+ "elevation": 97.2
+ },
+ {
+ "coord": [
+ 120.14932872098,
+ 30.221681883356
+ ],
+ "elevation": 109.2
+ },
+ {
+ "coord": [
+ 120.14916626293,
+ 30.2214408332
+ ],
+ "elevation": 113.1
+ },
+ {
+ "coord": [
+ 120.14912224016,
+ 30.220845584031
+ ],
+ "elevation": 117.4
+ },
+ {
+ "coord": [
+ 120.14943780084,
+ 30.221991141301
+ ],
+ "elevation": 116.9
+ },
+ {
+ "coord": [
+ 120.14976046653,
+ 30.222171298844
+ ],
+ "elevation": 116
+ },
+ {
+ "coord": [
+ 120.15014924132,
+ 30.222817412532
+ ],
+ "elevation": 114.5
+ },
+ {
+ "coord": [
+ 120.15030049471,
+ 30.222880644933
+ ],
+ "elevation": 114.5
+ },
+ {
+ "coord": [
+ 120.15011787652,
+ 30.22273414038
+ ],
+ "elevation": 115
+ },
+ {
+ "coord": [
+ 120.15012134604,
+ 30.222519215382
+ ],
+ "elevation": 110.2
+ },
+ {
+ "coord": [
+ 120.15023640728,
+ 30.222730133666
+ ],
+ "elevation": 108.8
+ },
+ {
+ "coord": [
+ 120.15056016779,
+ 30.222843994685
+ ],
+ "elevation": 106.4
+ },
+ {
+ "coord": [
+ 120.15049209509,
+ 30.22298845523
+ ],
+ "elevation": 108.3
+ },
+ {
+ "coord": [
+ 120.14937075441,
+ 30.221929105744
+ ],
+ "elevation": 116
+ },
+ {
+ "coord": [
+ 120.14901817694,
+ 30.219664871737
+ ],
+ "elevation": 128.5
+ },
+ {
+ "coord": [
+ 120.14919493512,
+ 30.219268979367
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14947966811,
+ 30.219296821244
+ ],
+ "elevation": 129
+ },
+ {
+ "coord": [
+ 120.15020163018,
+ 30.220162471314
+ ],
+ "elevation": 164
+ },
+ {
+ "coord": [
+ 120.15104871674,
+ 30.219641624755
+ ],
+ "elevation": 194.3
+ },
+ {
+ "coord": [
+ 120.1525098017,
+ 30.220238139641
+ ],
+ "elevation": 221.7
+ },
+ {
+ "coord": [
+ 120.15263485781,
+ 30.220076324621
+ ],
+ "elevation": 203.9
+ },
+ {
+ "coord": [
+ 120.15265269442,
+ 30.220618835218
+ ],
+ "elevation": 205.9
+ },
+ {
+ "coord": [
+ 120.15205577607,
+ 30.221344899817
+ ],
+ "elevation": 208.3
+ },
+ {
+ "coord": [
+ 120.15264964134,
+ 30.220381788843
+ ],
+ "elevation": 203
+ },
+ {
+ "coord": [
+ 120.15256347145,
+ 30.220153326177
+ ],
+ "elevation": 200.1
+ },
+ {
+ "coord": [
+ 120.15348330087,
+ 30.220263289821
+ ],
+ "elevation": 187.1
+ },
+ {
+ "coord": [
+ 120.15365283738,
+ 30.220334473619
+ ],
+ "elevation": 182.3
+ },
+ {
+ "coord": [
+ 120.15362048155,
+ 30.220661972544
+ ],
+ "elevation": 163.1
+ },
+ {
+ "coord": [
+ 120.15373660981,
+ 30.220764801837
+ ],
+ "elevation": 154.9
+ },
+ {
+ "coord": [
+ 120.15420488388,
+ 30.220929704149
+ ],
+ "elevation": 155.9
+ },
+ {
+ "coord": [
+ 120.15449431522,
+ 30.220871671588
+ ],
+ "elevation": 136.2
+ },
+ {
+ "coord": [
+ 120.15467125735,
+ 30.221091904206
+ ],
+ "elevation": 140.5
+ },
+ {
+ "coord": [
+ 120.15530554293,
+ 30.221299769196
+ ],
+ "elevation": 142.4
+ },
+ {
+ "coord": [
+ 120.15566488519,
+ 30.221700775085
+ ],
+ "elevation": 137.1
+ },
+ {
+ "coord": [
+ 120.15674720625,
+ 30.221703509289
+ ],
+ "elevation": 127
+ },
+ {
+ "coord": [
+ 120.15808517456,
+ 30.222542744021
+ ],
+ "elevation": 123.2
+ },
+ {
+ "coord": [
+ 120.15913644937,
+ 30.222700545029
+ ],
+ "elevation": 100.1
+ },
+ {
+ "coord": [
+ 120.15951839767,
+ 30.22302279924
+ ],
+ "elevation": 96.3
+ },
+ {
+ "coord": [
+ 120.15925304781,
+ 30.223305532929
+ ],
+ "elevation": 93.9
+ },
+ {
+ "coord": [
+ 120.16005304917,
+ 30.223559021335
+ ],
+ "elevation": 101.1
+ },
+ {
+ "coord": [
+ 120.16040488717,
+ 30.223555521389
+ ],
+ "elevation": 116.9
+ },
+ {
+ "coord": [
+ 120.16045385984,
+ 30.223343823839
+ ],
+ "elevation": 121.3
+ },
+ {
+ "coord": [
+ 120.16092703549,
+ 30.223524511765
+ ],
+ "elevation": 135.2
+ },
+ {
+ "coord": [
+ 120.16153771066,
+ 30.224100204426
+ ],
+ "elevation": 137.1
+ },
+ {
+ "coord": [
+ 120.16183392799,
+ 30.224719102069
+ ],
+ "elevation": 149.1
+ },
+ {
+ "coord": [
+ 120.16275096317,
+ 30.224888497556
+ ],
+ "elevation": 147.7
+ },
+ {
+ "coord": [
+ 120.16320546946,
+ 30.225466182912
+ ],
+ "elevation": 143.4
+ },
+ {
+ "coord": [
+ 120.16388528849,
+ 30.225473797787
+ ],
+ "elevation": 147.2
+ },
+ {
+ "coord": [
+ 120.16434059551,
+ 30.226075529203
+ ],
+ "elevation": 141
+ },
+ {
+ "coord": [
+ 120.16443786999,
+ 30.226606970297
+ ],
+ "elevation": 147.2
+ },
+ {
+ "coord": [
+ 120.16426573954,
+ 30.227201659423
+ ],
+ "elevation": 149.1
+ },
+ {
+ "coord": [
+ 120.16440511152,
+ 30.227461069747
+ ],
+ "elevation": 150.1
+ },
+ {
+ "coord": [
+ 120.16487861683,
+ 30.227920159421
+ ],
+ "elevation": 144.8
+ },
+ {
+ "coord": [
+ 120.16560181497,
+ 30.228215082741
+ ],
+ "elevation": 151.5
+ },
+ {
+ "coord": [
+ 120.1661408767,
+ 30.229027403851
+ ],
+ "elevation": 138.1
+ },
+ {
+ "coord": [
+ 120.16660122096,
+ 30.229447195005
+ ],
+ "elevation": 141.9
+ },
+ {
+ "coord": [
+ 120.16665535198,
+ 30.230529143194
+ ],
+ "elevation": 134.2
+ },
+ {
+ "coord": [
+ 120.16782924326,
+ 30.231302708164
+ ],
+ "elevation": 124.6
+ },
+ {
+ "coord": [
+ 120.16883192412,
+ 30.231663658441
+ ],
+ "elevation": 119.3
+ },
+ {
+ "coord": [
+ 120.16956359656,
+ 30.231717656325
+ ],
+ "elevation": 112.6
+ },
+ {
+ "coord": [
+ 120.17001376222,
+ 30.231513080184
+ ],
+ "elevation": 93.9
+ },
+ {
+ "coord": [
+ 120.17007703831,
+ 30.231300544871
+ ],
+ "elevation": 88.6
+ },
+ {
+ "coord": [
+ 120.17029201931,
+ 30.23117675146
+ ],
+ "elevation": 79.4
+ },
+ {
+ "coord": [
+ 120.17130630591,
+ 30.23119150191
+ ],
+ "elevation": 56.4
+ },
+ {
+ "coord": [
+ 120.17109988275,
+ 30.231058366087
+ ],
+ "elevation": 54
+ },
+ {
+ "coord": [
+ 120.17159410936,
+ 30.230961100888
+ ],
+ "elevation": 50.1
+ },
+ {
+ "coord": [
+ 120.1728450863,
+ 30.231212299107
+ ],
+ "elevation": 21.8
+ },
+ {
+ "coord": [
+ 120.17291485411,
+ 30.231355779583
+ ],
+ "elevation": 21.8
+ },
+ {
+ "coord": [
+ 120.17407886166,
+ 30.231402986763
+ ],
+ "elevation": 22.7
+ },
+ {
+ "coord": [
+ 120.17427979217,
+ 30.231615860224
+ ],
+ "elevation": 21.3
+ },
+ {
+ "coord": [
+ 120.17416529713,
+ 30.232020612724
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.17282875057,
+ 30.232969313173
+ ],
+ "elevation": 46.3
+ },
+ {
+ "coord": [
+ 120.17298974926,
+ 30.233192527065
+ ],
+ "elevation": 53
+ },
+ {
+ "coord": [
+ 120.17286041315,
+ 30.233758749234
+ ],
+ "elevation": 51.6
+ },
+ {
+ "coord": [
+ 120.17229256056,
+ 30.234511226865
+ ],
+ "elevation": 46.8
+ },
+ {
+ "coord": [
+ 120.17190431436,
+ 30.234651093816
+ ],
+ "elevation": 51.6
+ },
+ {
+ "coord": [
+ 120.17157370366,
+ 30.235060543579
+ ],
+ "elevation": 57.3
+ },
+ {
+ "coord": [
+ 120.17105926768,
+ 30.235383570535
+ ],
+ "elevation": 71.3
+ },
+ {
+ "coord": [
+ 120.17024718682,
+ 30.235338702429
+ ],
+ "elevation": 77
+ },
+ {
+ "coord": [
+ 120.16963638468,
+ 30.235496711395
+ ],
+ "elevation": 85.7
+ },
+ {
+ "coord": [
+ 120.16953513501,
+ 30.235846306165
+ ],
+ "elevation": 88.1
+ },
+ {
+ "coord": [
+ 120.17005745316,
+ 30.236288619774
+ ],
+ "elevation": 79.9
+ },
+ {
+ "coord": [
+ 120.16996329196,
+ 30.236933840598
+ ],
+ "elevation": 81.8
+ },
+ {
+ "coord": [
+ 120.17024043226,
+ 30.237811719977
+ ],
+ "elevation": 75.1
+ },
+ {
+ "coord": [
+ 120.17069533267,
+ 30.238393589113
+ ],
+ "elevation": 69.4
+ },
+ {
+ "coord": [
+ 120.17156320444,
+ 30.239064198523
+ ],
+ "elevation": 63.6
+ },
+ {
+ "coord": [
+ 120.17189069324,
+ 30.239696706281
+ ],
+ "elevation": 67.9
+ },
+ {
+ "coord": [
+ 120.17191819377,
+ 30.23998966215
+ ],
+ "elevation": 70.3
+ },
+ {
+ "coord": [
+ 120.17146890456,
+ 30.240898066106
+ ],
+ "elevation": 57.3
+ },
+ {
+ "coord": [
+ 120.17174299729,
+ 30.241181775404
+ ],
+ "elevation": 55.4
+ },
+ {
+ "coord": [
+ 120.17177213734,
+ 30.241748217802
+ ],
+ "elevation": 59.7
+ },
+ {
+ "coord": [
+ 120.1721384107,
+ 30.242507265045
+ ],
+ "elevation": 55.9
+ },
+ {
+ "coord": [
+ 120.17274769791,
+ 30.24301698335
+ ],
+ "elevation": 56.9
+ },
+ {
+ "coord": [
+ 120.17227877693,
+ 30.2435251552
+ ],
+ "elevation": 44.4
+ },
+ {
+ "coord": [
+ 120.17242555452,
+ 30.243885251542
+ ],
+ "elevation": 36.7
+ },
+ {
+ "coord": [
+ 120.17212571286,
+ 30.245289204936
+ ],
+ "elevation": 27.1
+ },
+ {
+ "coord": [
+ 120.17225636168,
+ 30.245572431572
+ ],
+ "elevation": 25.1
+ },
+ {
+ "coord": [
+ 120.17323804916,
+ 30.24570672369
+ ],
+ "elevation": 10.2
+ },
+ {
+ "coord": [
+ 120.1145970802,
+ 30.245327716025
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.11482400815,
+ 30.245287588361
+ ],
+ "elevation": 70.3
+ },
+ {
+ "coord": [
+ 120.11476652374,
+ 30.24569125338
+ ],
+ "elevation": 65
+ },
+ {
+ "coord": [
+ 120.11437343929,
+ 30.245397956647
+ ],
+ "elevation": 63.1
+ },
+ {
+ "coord": [
+ 120.11441788874,
+ 30.245216115973
+ ],
+ "elevation": 63.1
+ },
+ {
+ "coord": [
+ 120.11482158192,
+ 30.245028438542
+ ],
+ "elevation": 65
+ },
+ {
+ "coord": [
+ 120.11453831691,
+ 30.245266833091
+ ],
+ "elevation": 62.6
+ },
+ {
+ "coord": [
+ 120.1144489305,
+ 30.245150255665
+ ],
+ "elevation": 64.1
+ },
+ {
+ "coord": [
+ 120.11514649613,
+ 30.244758671748
+ ],
+ "elevation": 63.6
+ },
+ {
+ "coord": [
+ 120.11539249924,
+ 30.244827443444
+ ],
+ "elevation": 65
+ },
+ {
+ "coord": [
+ 120.11609901775,
+ 30.244321168311
+ ],
+ "elevation": 76.1
+ },
+ {
+ "coord": [
+ 120.11631309808,
+ 30.244081474093
+ ],
+ "elevation": 85.2
+ },
+ {
+ "coord": [
+ 120.11619834851,
+ 30.243801713069
+ ],
+ "elevation": 95.3
+ },
+ {
+ "coord": [
+ 120.11628090397,
+ 30.243551251867
+ ],
+ "elevation": 103.5
+ },
+ {
+ "coord": [
+ 120.1167802497,
+ 30.243048533176
+ ],
+ "elevation": 146.7
+ },
+ {
+ "coord": [
+ 120.11682069568,
+ 30.242625622711
+ ],
+ "elevation": 180.4
+ },
+ {
+ "coord": [
+ 120.1164488299,
+ 30.242063772596
+ ],
+ "elevation": 190
+ },
+ {
+ "coord": [
+ 120.11580210816,
+ 30.242084898645
+ ],
+ "elevation": 181.8
+ },
+ {
+ "coord": [
+ 120.1162392707,
+ 30.241960299
+ ],
+ "elevation": 189.5
+ },
+ {
+ "coord": [
+ 120.11638972992,
+ 30.241407132488
+ ],
+ "elevation": 177.5
+ },
+ {
+ "coord": [
+ 120.11671715784,
+ 30.241373560907
+ ],
+ "elevation": 183.3
+ },
+ {
+ "coord": [
+ 120.11693094057,
+ 30.241069173783
+ ],
+ "elevation": 182.3
+ },
+ {
+ "coord": [
+ 120.11778059265,
+ 30.240508886801
+ ],
+ "elevation": 170.8
+ },
+ {
+ "coord": [
+ 120.11737001286,
+ 30.240005357403
+ ],
+ "elevation": 174.6
+ },
+ {
+ "coord": [
+ 120.11641748976,
+ 30.239322489078
+ ],
+ "elevation": 197.7
+ },
+ {
+ "coord": [
+ 120.11628820317,
+ 30.238819842776
+ ],
+ "elevation": 204.4
+ },
+ {
+ "coord": [
+ 120.11563755266,
+ 30.238084649789
+ ],
+ "elevation": 227
+ },
+ {
+ "coord": [
+ 120.1155565027,
+ 30.237328180488
+ ],
+ "elevation": 254.4
+ },
+ {
+ "coord": [
+ 120.11506586949,
+ 30.237203155982
+ ],
+ "elevation": 270.3
+ },
+ {
+ "coord": [
+ 120.11406534377,
+ 30.236417513521
+ ],
+ "elevation": 277
+ },
+ {
+ "coord": [
+ 120.11393740254,
+ 30.236106737872
+ ],
+ "elevation": 277
+ },
+ {
+ "coord": [
+ 120.11408317626,
+ 30.23608615808
+ ],
+ "elevation": 276
+ },
+ {
+ "coord": [
+ 120.11393309532,
+ 30.235818813454
+ ],
+ "elevation": 265
+ },
+ {
+ "coord": [
+ 120.11424520563,
+ 30.235778412357
+ ],
+ "elevation": 250.6
+ },
+ {
+ "coord": [
+ 120.11411406427,
+ 30.234556248238
+ ],
+ "elevation": 229.9
+ },
+ {
+ "coord": [
+ 120.11313785398,
+ 30.232736435767
+ ],
+ "elevation": 222.2
+ },
+ {
+ "coord": [
+ 120.11325069881,
+ 30.232474350257
+ ],
+ "elevation": 227
+ },
+ {
+ "coord": [
+ 120.11307911913,
+ 30.2312101143
+ ],
+ "elevation": 237.1
+ },
+ {
+ "coord": [
+ 120.1127118761,
+ 30.230823584689
+ ],
+ "elevation": 261.6
+ },
+ {
+ "coord": [
+ 120.11088540171,
+ 30.230670758816
+ ],
+ "elevation": 268.3
+ },
+ {
+ "coord": [
+ 120.10952261925,
+ 30.230364609664
+ ],
+ "elevation": 249.6
+ },
+ {
+ "coord": [
+ 120.10846109515,
+ 30.229555661548
+ ],
+ "elevation": 251
+ },
+ {
+ "coord": [
+ 120.10811812376,
+ 30.229454334292
+ ],
+ "elevation": 281.8
+ },
+ {
+ "coord": [
+ 120.10810723529,
+ 30.229745280325
+ ],
+ "elevation": 284.2
+ },
+ {
+ "coord": [
+ 120.10777458465,
+ 30.229283475755
+ ],
+ "elevation": 286.1
+ },
+ {
+ "coord": [
+ 120.10651057637,
+ 30.228640277209
+ ],
+ "elevation": 271.7
+ },
+ {
+ "coord": [
+ 120.10625593561,
+ 30.228374824315
+ ],
+ "elevation": 275.1
+ },
+ {
+ "coord": [
+ 120.10569913911,
+ 30.228291768497
+ ],
+ "elevation": 271.2
+ },
+ {
+ "coord": [
+ 120.10459835773,
+ 30.227202748217
+ ],
+ "elevation": 259.2
+ },
+ {
+ "coord": [
+ 120.10412103642,
+ 30.226030316572
+ ],
+ "elevation": 258.7
+ },
+ {
+ "coord": [
+ 120.10378329177,
+ 30.22572651819
+ ],
+ "elevation": 267.9
+ },
+ {
+ "coord": [
+ 120.10355265985,
+ 30.225739548078
+ ],
+ "elevation": 266.9
+ },
+ {
+ "coord": [
+ 120.10320181701,
+ 30.225099309964
+ ],
+ "elevation": 267.9
+ },
+ {
+ "coord": [
+ 120.10304343752,
+ 30.224191449288
+ ],
+ "elevation": 285.6
+ },
+ {
+ "coord": [
+ 120.10305492435,
+ 30.223884007533
+ ],
+ "elevation": 289
+ },
+ {
+ "coord": [
+ 120.10344521008,
+ 30.2233171572
+ ],
+ "elevation": 294.3
+ },
+ {
+ "coord": [
+ 120.10331682363,
+ 30.22302405926
+ ],
+ "elevation": 290
+ },
+ {
+ "coord": [
+ 120.10403940273,
+ 30.221811101684
+ ],
+ "elevation": 297.2
+ },
+ {
+ "coord": [
+ 120.10432243286,
+ 30.220744728428
+ ],
+ "elevation": 310.6
+ },
+ {
+ "coord": [
+ 120.10467424327,
+ 30.220221810871
+ ],
+ "elevation": 332.8
+ },
+ {
+ "coord": [
+ 120.10510935476,
+ 30.220106371106
+ ],
+ "elevation": 335.6
+ },
+ {
+ "coord": [
+ 120.10521950449,
+ 30.219828825645
+ ],
+ "elevation": 333.2
+ },
+ {
+ "coord": [
+ 120.10554767029,
+ 30.219684898956
+ ],
+ "elevation": 323.6
+ },
+ {
+ "coord": [
+ 120.10582888095,
+ 30.21972949216
+ ],
+ "elevation": 319.3
+ },
+ {
+ "coord": [
+ 120.10607331413,
+ 30.219511382895
+ ],
+ "elevation": 323.6
+ },
+ {
+ "coord": [
+ 120.10600321387,
+ 30.218628839745
+ ],
+ "elevation": 323.1
+ },
+ {
+ "coord": [
+ 120.10644860345,
+ 30.217904294794
+ ],
+ "elevation": 335.2
+ },
+ {
+ "coord": [
+ 120.10799236595,
+ 30.217273595662
+ ],
+ "elevation": 320.7
+ },
+ {
+ "coord": [
+ 120.10832039121,
+ 30.216930905031
+ ],
+ "elevation": 303.9
+ },
+ {
+ "coord": [
+ 120.10877356693,
+ 30.216904993363
+ ],
+ "elevation": 286.6
+ },
+ {
+ "coord": [
+ 120.11089529474,
+ 30.216121844481
+ ],
+ "elevation": 239
+ },
+ {
+ "coord": [
+ 120.11136623278,
+ 30.216200400192
+ ],
+ "elevation": 216
+ },
+ {
+ "coord": [
+ 120.11262948616,
+ 30.216994509907
+ ],
+ "elevation": 155.4
+ },
+ {
+ "coord": [
+ 120.11317115652,
+ 30.216930100372
+ ],
+ "elevation": 117.4
+ },
+ {
+ "coord": [
+ 120.11345999286,
+ 30.216673957187
+ ],
+ "elevation": 103.5
+ },
+ {
+ "coord": [
+ 120.11422735701,
+ 30.217078889989
+ ],
+ "elevation": 86.2
+ },
+ {
+ "coord": [
+ 120.11418298362,
+ 30.21669155905
+ ],
+ "elevation": 72.7
+ },
+ {
+ "coord": [
+ 120.11427766449,
+ 30.216911811082
+ ],
+ "elevation": 71.3
+ },
+ {
+ "coord": [
+ 120.11527131868,
+ 30.216665131912
+ ],
+ "elevation": 72.2
+ },
+ {
+ "coord": [
+ 120.11514523725,
+ 30.216294345115
+ ],
+ "elevation": 91.5
+ },
+ {
+ "coord": [
+ 120.11500076484,
+ 30.216296614348
+ ],
+ "elevation": 94.8
+ },
+ {
+ "coord": [
+ 120.11504297256,
+ 30.216015216427
+ ],
+ "elevation": 108.8
+ },
+ {
+ "coord": [
+ 120.11517581894,
+ 30.215749421035
+ ],
+ "elevation": 110.7
+ },
+ {
+ "coord": [
+ 120.11547560736,
+ 30.215587058218
+ ],
+ "elevation": 122.7
+ },
+ {
+ "coord": [
+ 120.11574969319,
+ 30.215893923296
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.11643270224,
+ 30.215885374386
+ ],
+ "elevation": 144.8
+ },
+ {
+ "coord": [
+ 120.11597590664,
+ 30.215979174579
+ ],
+ "elevation": 132.8
+ },
+ {
+ "coord": [
+ 120.11657017678,
+ 30.216204587135
+ ],
+ "elevation": 155.4
+ },
+ {
+ "coord": [
+ 120.11694123213,
+ 30.216656931214
+ ],
+ "elevation": 174.1
+ },
+ {
+ "coord": [
+ 120.11677315621,
+ 30.216478540924
+ ],
+ "elevation": 173.7
+ },
+ {
+ "coord": [
+ 120.11772674094,
+ 30.216519135423
+ ],
+ "elevation": 202.5
+ },
+ {
+ "coord": [
+ 120.11816313515,
+ 30.216219393277
+ ],
+ "elevation": 216.9
+ },
+ {
+ "coord": [
+ 120.11860579929,
+ 30.216405908767
+ ],
+ "elevation": 226.5
+ },
+ {
+ "coord": [
+ 120.11875715935,
+ 30.216789793415
+ ],
+ "elevation": 218.4
+ },
+ {
+ "coord": [
+ 120.1187653255,
+ 30.21771759893
+ ],
+ "elevation": 214
+ },
+ {
+ "coord": [
+ 120.11902421327,
+ 30.218059648888
+ ],
+ "elevation": 216.4
+ },
+ {
+ "coord": [
+ 120.11947580006,
+ 30.21941290937
+ ],
+ "elevation": 211.1
+ },
+ {
+ "coord": [
+ 120.11942011728,
+ 30.22000365209
+ ],
+ "elevation": 195.8
+ },
+ {
+ "coord": [
+ 120.1197315931,
+ 30.220188825017
+ ],
+ "elevation": 192.4
+ },
+ {
+ "coord": [
+ 120.12017295379,
+ 30.220921335893
+ ],
+ "elevation": 181.3
+ },
+ {
+ "coord": [
+ 120.12058340732,
+ 30.221278308382
+ ],
+ "elevation": 177
+ },
+ {
+ "coord": [
+ 120.12248462596,
+ 30.222278631118
+ ],
+ "elevation": 164
+ },
+ {
+ "coord": [
+ 120.122570852,
+ 30.222424640568
+ ],
+ "elevation": 166.9
+ },
+ {
+ "coord": [
+ 120.12220922042,
+ 30.222890921479
+ ],
+ "elevation": 162.6
+ },
+ {
+ "coord": [
+ 120.12219981871,
+ 30.223131517607
+ ],
+ "elevation": 159.7
+ },
+ {
+ "coord": [
+ 120.122552311,
+ 30.223667082474
+ ],
+ "elevation": 154.4
+ },
+ {
+ "coord": [
+ 120.12313970146,
+ 30.223850898838
+ ],
+ "elevation": 154.9
+ },
+ {
+ "coord": [
+ 120.12322072022,
+ 30.224463466952
+ ],
+ "elevation": 157.3
+ },
+ {
+ "coord": [
+ 120.12419650151,
+ 30.224794589844
+ ],
+ "elevation": 148.2
+ },
+ {
+ "coord": [
+ 120.12577212295,
+ 30.225045835133
+ ],
+ "elevation": 142.4
+ },
+ {
+ "coord": [
+ 120.12640206842,
+ 30.22467570612
+ ],
+ "elevation": 132.8
+ },
+ {
+ "coord": [
+ 120.12808172221,
+ 30.225029972816
+ ],
+ "elevation": 106.8
+ },
+ {
+ "coord": [
+ 120.12796052812,
+ 30.22466147412
+ ],
+ "elevation": 104
+ },
+ {
+ "coord": [
+ 120.12826777318,
+ 30.224752651621
+ ],
+ "elevation": 98.7
+ },
+ {
+ "coord": [
+ 120.12822204411,
+ 30.224432062547
+ ],
+ "elevation": 97.7
+ },
+ {
+ "coord": [
+ 120.12855200472,
+ 30.224275962286
+ ],
+ "elevation": 88.6
+ },
+ {
+ "coord": [
+ 120.12926274673,
+ 30.224568018359
+ ],
+ "elevation": 77.5
+ },
+ {
+ "coord": [
+ 120.13333831992,
+ 30.225252031344
+ ],
+ "elevation": 45.8
+ },
+ {
+ "coord": [
+ 120.13464956499,
+ 30.225769880445
+ ],
+ "elevation": 42.9
+ },
+ {
+ "coord": [
+ 120.13684555202,
+ 30.225905920835
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.13814641814,
+ 30.225353963645
+ ],
+ "elevation": 28.5
+ },
+ {
+ "coord": [
+ 120.13957737767,
+ 30.224038658452
+ ],
+ "elevation": 29.5
+ },
+ {
+ "coord": [
+ 120.13998437841,
+ 30.223892110676
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.1407091116,
+ 30.223331213322
+ ],
+ "elevation": 24.7
+ },
+ {
+ "coord": [
+ 120.14080173102,
+ 30.223572019297
+ ],
+ "elevation": 26.6
+ },
+ {
+ "coord": [
+ 120.14066111098,
+ 30.223779733928
+ ],
+ "elevation": 30.9
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.17259626052,
+ 30.259946633554
+ ],
+ "elevation": 54
+ },
+ {
+ "coord": [
+ 120.17270430123,
+ 30.25995396081
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.17219496361,
+ 30.260096897184
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.17205996473,
+ 30.26008344721
+ ],
+ "elevation": 6
+ },
+ {
+ "coord": [
+ 120.17187351436,
+ 30.260058202379
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.17173167325,
+ 30.260004446481
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.17161789689,
+ 30.259995913643
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.17150031198,
+ 30.259993138387
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.17138000034,
+ 30.259987153445
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.17127303342,
+ 30.259994021431
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.17116633613,
+ 30.260000079576
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.1710593655,
+ 30.260007234441
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.17094720006,
+ 30.259986522256
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.17082062445,
+ 30.259991793025
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.17070793563,
+ 30.260005292405
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.17060801103,
+ 30.259980908303
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.17049695567,
+ 30.25999982694
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.17038179732,
+ 30.25999547785
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.1702587512,
+ 30.260003729973
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.17015121995,
+ 30.260010956645
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.17002434699,
+ 30.260004901744
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16990810117,
+ 30.260014440525
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16978937302,
+ 30.259984139509
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.16966031992,
+ 30.259985199543
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16955792698,
+ 30.259959561594
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16945526603,
+ 30.259941802339
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16938986035,
+ 30.259863538346
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.1689582453,
+ 30.259814058457
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16896976098,
+ 30.259919158785
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16891400231,
+ 30.260002476645
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.16879476324,
+ 30.260041441812
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.16867929073,
+ 30.26002202411
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.16857201316,
+ 30.260039389168
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.16846117598,
+ 30.260032938915
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.16834487766,
+ 30.260009214846
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.168220151,
+ 30.260006520028
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.16810385132,
+ 30.259986338907
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16799248302,
+ 30.260007872193
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.16793184921,
+ 30.260138235532
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16784202513,
+ 30.260202854077
+ ],
+ "elevation": 37
+ },
+ {
+ "coord": [
+ 120.16777427366,
+ 30.260286395076
+ ],
+ "elevation": 38
+ },
+ {
+ "coord": [
+ 120.16770596565,
+ 30.260355024591
+ ],
+ "elevation": 38
+ },
+ {
+ "coord": [
+ 120.16765755058,
+ 30.26044043698
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.1676451064,
+ 30.260555129803
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.16752912638,
+ 30.260612035136
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16753293849,
+ 30.26061088968
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16746683433,
+ 30.260718291668
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.16741597007,
+ 30.260810260403
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.16736621321,
+ 30.260928259486
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.1673172498,
+ 30.261014231481
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16725222812,
+ 30.261116739551
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.16716538837,
+ 30.261179714353
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16704664661,
+ 30.261194909686
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16696770348,
+ 30.261258309247
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.16691819477,
+ 30.261348640867
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16687522465,
+ 30.261442124015
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.1668317017,
+ 30.261524764224
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.16676775881,
+ 30.26162048748
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.1666912657,
+ 30.261687385219
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16664665477,
+ 30.261774930577
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.16656824623,
+ 30.261831282602
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.16652637505,
+ 30.261944018308
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.16647277504,
+ 30.262033884276
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16642408135,
+ 30.262129640298
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16634486157,
+ 30.262199308358
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.1662871671,
+ 30.262279478611
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.16560594635,
+ 30.262383556684
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16551253481,
+ 30.262426360906
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.16539402336,
+ 30.262414513995
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.16527632512,
+ 30.262398861063
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16517525812,
+ 30.262405180596
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16506411204,
+ 30.262414659862
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.16498188463,
+ 30.262487683069
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.16488302196,
+ 30.262536845344
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.16480461312,
+ 30.262619576784
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.16470439091,
+ 30.262676094936
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16470745413,
+ 30.262778870689
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.16461376626,
+ 30.262830668304
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.16454242506,
+ 30.26289320941
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.1644566526,
+ 30.262970380395
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.16433514655,
+ 30.262982512628
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16427416615,
+ 30.263060618566
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.16429983205,
+ 30.263148080757
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16424021437,
+ 30.26322806301
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.16418523067,
+ 30.263312578642
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16415068346,
+ 30.263401353519
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.16409787385,
+ 30.263478507717
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.16404807419,
+ 30.263577586898
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.16406857273,
+ 30.263682771313
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.16397926262,
+ 30.263777925276
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.16394744134,
+ 30.263872895072
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.16393987381,
+ 30.263976124872
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16391540312,
+ 30.264062556291
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.16382007835,
+ 30.264127704399
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16375909678,
+ 30.264215316937
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.16371446367,
+ 30.264304543988
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16369244502,
+ 30.26439364728
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16366689227,
+ 30.264497463195
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16360644093,
+ 30.264563093398
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.16356970935,
+ 30.264655439635
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.16352263018,
+ 30.264760176728
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.16346464706,
+ 30.264857238133
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.16343935982,
+ 30.264953182938
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.1633988091,
+ 30.265041257168
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.16332337596,
+ 30.265120721903
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16313892229,
+ 30.265664148495
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.16317712178,
+ 30.265764670046
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16319406481,
+ 30.265860683888
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.16313225767,
+ 30.265952120717
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.16312032227,
+ 30.266059225642
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.16308276241,
+ 30.266145350974
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.16303294691,
+ 30.26624498766
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.16290898258,
+ 30.266280014217
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16279753043,
+ 30.266271957104
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.16270514068,
+ 30.266241317227
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16261110655,
+ 30.266193074597
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.16249992037,
+ 30.266177155157
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.16240997152,
+ 30.266127759913
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.16228134732,
+ 30.266119485229
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.16217127401,
+ 30.266155104241
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16207423502,
+ 30.266100147791
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.16197011036,
+ 30.266045864312
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.16187334864,
+ 30.26600365945
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16177903164,
+ 30.265947305028
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.161675993,
+ 30.265890025661
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16155170629,
+ 30.265850226695
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.161448407,
+ 30.265819545858
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.16133392923,
+ 30.265780118007
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.16123225261,
+ 30.265728251265
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.16112868843,
+ 30.26571657457
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.16102350169,
+ 30.265730432701
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16090331249,
+ 30.265719336451
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16078285262,
+ 30.265713403146
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16067002495,
+ 30.26571167379
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.16055228026,
+ 30.265689146919
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.1604704891,
+ 30.265628250082
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.16036364081,
+ 30.265598744644
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16025490466,
+ 30.265608344234
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.16014778127,
+ 30.265576135204
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.16008260591,
+ 30.265501915098
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.15998010338,
+ 30.265448462081
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.15986016352,
+ 30.265405914407
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.15927796572,
+ 30.265320399195
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.15921169785,
+ 30.265247836043
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.15908739593,
+ 30.265210267028
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.15898461617,
+ 30.265156834492
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.15890745474,
+ 30.265101840448
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.15878888794,
+ 30.265088044183
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.15868257678,
+ 30.265058284919
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.15861413209,
+ 30.26499607671
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.1585369613,
+ 30.26492643533
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.15845106837,
+ 30.264856686197
+ ],
+ "elevation": 35
+ },
+ {
+ "coord": [
+ 120.15838180093,
+ 30.264787169494
+ ],
+ "elevation": 35
+ },
+ {
+ "coord": [
+ 120.158315253,
+ 30.264707563896
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.1582824992,
+ 30.264624070733
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.15819933031,
+ 30.264554272405
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.15812542922,
+ 30.264486742907
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.15806377966,
+ 30.264396465682
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.15799858948,
+ 30.264311409858
+ ],
+ "elevation": 41
+ },
+ {
+ "coord": [
+ 120.15790779129,
+ 30.264247996221
+ ],
+ "elevation": 43
+ },
+ {
+ "coord": [
+ 120.15783306785,
+ 30.264174785989
+ ],
+ "elevation": 42
+ },
+ {
+ "coord": [
+ 120.15777224352,
+ 30.264099958976
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.15769969712,
+ 30.264022096165
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.15762879235,
+ 30.263955326574
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.15754915561,
+ 30.263872170992
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.1574591773,
+ 30.263815526922
+ ],
+ "elevation": 41
+ },
+ {
+ "coord": [
+ 120.15739780339,
+ 30.263735827543
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.15734077212,
+ 30.263626745029
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.15725978449,
+ 30.263565320557
+ ],
+ "elevation": 43
+ },
+ {
+ "coord": [
+ 120.15720386221,
+ 30.263487960919
+ ],
+ "elevation": 41
+ },
+ {
+ "coord": [
+ 120.15713512344,
+ 30.263401074667
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.15705304364,
+ 30.263337771916
+ ],
+ "elevation": 44
+ },
+ {
+ "coord": [
+ 120.15698295304,
+ 30.263269360515
+ ],
+ "elevation": 47
+ },
+ {
+ "coord": [
+ 120.15697962052,
+ 30.263171207565
+ ],
+ "elevation": 38
+ },
+ {
+ "coord": [
+ 120.1569076191,
+ 30.263099033642
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.15685877797,
+ 30.263015843527
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.15681865504,
+ 30.262927334656
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.15670524799,
+ 30.262892837242
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.15630836052,
+ 30.262414095071
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.15621428978,
+ 30.262357528946
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.15613219656,
+ 30.26227848976
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.15604602059,
+ 30.262208209172
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.15598437159,
+ 30.262133126755
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.15593088858,
+ 30.262042425778
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.15585806267,
+ 30.261965110988
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.15578850463,
+ 30.261883936169
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.15572603804,
+ 30.261810224908
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.1556518542,
+ 30.261740803076
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.15559129779,
+ 30.261670853957
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.15550293554,
+ 30.261594100605
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.15542929679,
+ 30.261525210233
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.15538780847,
+ 30.261440251498
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.15531279403,
+ 30.261353479261
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.15524623507,
+ 30.261275772982
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.15516986422,
+ 30.261198521529
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.15512564016,
+ 30.261100589724
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.15504572869,
+ 30.261027473601
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.1550050455,
+ 30.260927033036
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.154937397,
+ 30.260851515925
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.15484386917,
+ 30.260794661179
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.15476614343,
+ 30.260729370447
+ ],
+ "elevation": 35
+ },
+ {
+ "coord": [
+ 120.15469357349,
+ 30.260633052115
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.15461992988,
+ 30.26055954427
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.15455636034,
+ 30.260472010207
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.15448435123,
+ 30.260397656758
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.15442296702,
+ 30.260317135248
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.154355863,
+ 30.260241875158
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.15428058775,
+ 30.260173821355
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.15424291158,
+ 30.26008851495
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.15417472036,
+ 30.260017614768
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.15412397064,
+ 30.259944489661
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.15405930733,
+ 30.259853716085
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.15400745494,
+ 30.259764602593
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.15393707742,
+ 30.259686415175
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.15386124687,
+ 30.259605615267
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.15379277894,
+ 30.259529832773
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.15372377597,
+ 30.259467083087
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.15367002085,
+ 30.259385328043
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.15360154327,
+ 30.259297334116
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.15351754989,
+ 30.259234046588
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.1536086158,
+ 30.259279838007
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.15368960421,
+ 30.259333955182
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.1537602515,
+ 30.259408070333
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.1542201478,
+ 30.259900641437
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.15420660919,
+ 30.260018105447
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.15425981708,
+ 30.26009823854
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.15434926742,
+ 30.260169283879
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.15441365242,
+ 30.260253005826
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.15447531319,
+ 30.2603386774
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.15454786513,
+ 30.260409764954
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.15461251766,
+ 30.260487239984
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.15467989238,
+ 30.260560322509
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.15473311164,
+ 30.260657274253
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.15476833887,
+ 30.260749949767
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.15487741411,
+ 30.260823064732
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.15495623687,
+ 30.260897830351
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.1550108045,
+ 30.260976034169
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.15507518677,
+ 30.261058123662
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.15516136829,
+ 30.26113302135
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.15522900853,
+ 30.261197684506
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.15528957478,
+ 30.261280115687
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.15537302333,
+ 30.261345024421
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.15544475406,
+ 30.261413136979
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.15548761741,
+ 30.261515434216
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.15556344027,
+ 30.261589438447
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.15561828864,
+ 30.261681742905
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.15568485678,
+ 30.26177409852
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.15575250201,
+ 30.261847712715
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.15580406813,
+ 30.261924341672
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.15590358154,
+ 30.261967240932
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.15596932229,
+ 30.262046587871
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.15604377382,
+ 30.262109763348
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.15611170684,
+ 30.262207246973
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.15616762852,
+ 30.262277281701
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.15624917412,
+ 30.262352532697
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.15631654567,
+ 30.262426693186
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.15638038861,
+ 30.262523439056
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.15644503462,
+ 30.262598464469
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.15651185837,
+ 30.26266965048
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.15659312548,
+ 30.262737580665
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.15665640996,
+ 30.262815615931
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.15670607368,
+ 30.262905302206
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.15678951324,
+ 30.262961796301
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.15685879077,
+ 30.263035920539
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.15691389908,
+ 30.263116551112
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.1569679143,
+ 30.263193132491
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.15704073393,
+ 30.263266647639
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.15711137522,
+ 30.263344002146
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.15748043529,
+ 30.263812957606
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.15759220062,
+ 30.263840434119
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.1576941706,
+ 30.263896040036
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.15773728404,
+ 30.263978524342
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.1577991966,
+ 30.264049261267
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.15783413776,
+ 30.264140309488
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.15791158318,
+ 30.264207228618
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.15795797166,
+ 30.264299419055
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.15802342836,
+ 30.264373888614
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.15809679,
+ 30.264450380918
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.15814944571,
+ 30.264541911817
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.15821326588,
+ 30.264616141461
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.15828989117,
+ 30.264682263906
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.15835861216,
+ 30.264748534616
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.15844941199,
+ 30.264819005285
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.15852687696,
+ 30.26492662372
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.15860758717,
+ 30.264989416228
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.15871800151,
+ 30.265045686227
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.15882594117,
+ 30.265063206708
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.15893824998,
+ 30.265096654265
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.1590418437,
+ 30.265142745785
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.15914679865,
+ 30.265186914163
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.15925553462,
+ 30.265168070409
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.15934305923,
+ 30.26523698332
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.15944827942,
+ 30.265270027489
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.15955676278,
+ 30.265290261325
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.15966090511,
+ 30.265348017742
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.15972362459,
+ 30.265413325688
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.15983128813,
+ 30.265431951524
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.15993403816,
+ 30.265436833516
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.1600504283,
+ 30.265467510795
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16015237306,
+ 30.265497643057
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.16024969467,
+ 30.26554766776
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.16031050743,
+ 30.265619257144
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.16041137288,
+ 30.265673017747
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.160520394,
+ 30.265688918956
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.16062205274,
+ 30.265698175082
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.16075423072,
+ 30.265700905073
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.16087632705,
+ 30.265708978119
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.16099732304,
+ 30.265698897088
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.16111397082,
+ 30.265713858801
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.16123362277,
+ 30.265742876777
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16135818386,
+ 30.265781033188
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.16146038635,
+ 30.265797352496
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.16217065629,
+ 30.266009696432
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16227313422,
+ 30.266043396241
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16236798887,
+ 30.266092157395
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.16237016777,
+ 30.266089947913
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.1624734633,
+ 30.266127165935
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16257812433,
+ 30.266172230529
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16265363657,
+ 30.26623545294
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16276099385,
+ 30.266225671931
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16286536877,
+ 30.266248232611
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16297683178,
+ 30.266279624014
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16305800785,
+ 30.266229350748
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.16310374054,
+ 30.266139011018
+ ],
+ "elevation": 38
+ },
+ {
+ "coord": [
+ 120.16311023448,
+ 30.266047466731
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.16312435119,
+ 30.265943307515
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.16319760829,
+ 30.265863063036
+ ],
+ "elevation": 37
+ },
+ {
+ "coord": [
+ 120.16315015488,
+ 30.265781967588
+ ],
+ "elevation": 38
+ },
+ {
+ "coord": [
+ 120.16317489897,
+ 30.265681418673
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.16318438085,
+ 30.265575713343
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.16323637995,
+ 30.265490147695
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.16329027834,
+ 30.265390441456
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.1632967734,
+ 30.265307035908
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.16329807997,
+ 30.265203102446
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.1633677882,
+ 30.265117497867
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16339008442,
+ 30.265031372328
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16344207305,
+ 30.26493224455
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16348480599,
+ 30.264849558636
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.16355041604,
+ 30.264748565502
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16356780358,
+ 30.264658186142
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.16360670862,
+ 30.264554678133
+ ],
+ "elevation": 38
+ },
+ {
+ "coord": [
+ 120.16364071172,
+ 30.264456682552
+ ],
+ "elevation": 41
+ },
+ {
+ "coord": [
+ 120.16370660411,
+ 30.264377392376
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.16364878682,
+ 30.264284802287
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.16372503374,
+ 30.264207772903
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.16383290134,
+ 30.264156782198
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.1638663517,
+ 30.264049574008
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.16387420221,
+ 30.263963431733
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.16394688879,
+ 30.26386015307
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.16403566438,
+ 30.26378128608
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16402933952,
+ 30.263684809078
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.16404181525,
+ 30.263590175928
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16406763854,
+ 30.263491241358
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16408747082,
+ 30.263398108418
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16416208999,
+ 30.263342009801
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16447287277,
+ 30.26277204213
+ ],
+ "elevation": 35
+ },
+ {
+ "coord": [
+ 120.16460063629,
+ 30.262748956552
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16469678222,
+ 30.262706612345
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.16479538278,
+ 30.262669927549
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.16486453292,
+ 30.26259332256
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.16494703745,
+ 30.26252544569
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.16503389483,
+ 30.262449629574
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.16514912574,
+ 30.262437095289
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.16526927526,
+ 30.262449444637
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.16537822507,
+ 30.262418035543
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16548036736,
+ 30.262393257395
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16559994375,
+ 30.262369277377
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16571870271,
+ 30.262347487868
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.16583583295,
+ 30.26233685571
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16590688411,
+ 30.262264862492
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.1660098099,
+ 30.262198855607
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16609503379,
+ 30.26214128512
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16617288924,
+ 30.262064847182
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16623739221,
+ 30.261982391174
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16628172815,
+ 30.261886702171
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.1663620378,
+ 30.261817827597
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.16636122229,
+ 30.261820282804
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.16644425542,
+ 30.261752180703
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.16655187491,
+ 30.261790037655
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.16664036702,
+ 30.26174138938
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16673348067,
+ 30.26168127476
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16684486104,
+ 30.261648272552
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16687448711,
+ 30.261556903291
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16696785603,
+ 30.261476717824
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16704298049,
+ 30.261404697475
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.1670946776,
+ 30.261328713865
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16713655704,
+ 30.261235795485
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16719451506,
+ 30.261156458461
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16725627986,
+ 30.261069194218
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16731832087,
+ 30.260988439147
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16738362862,
+ 30.26090654892
+ ],
+ "elevation": 35
+ },
+ {
+ "coord": [
+ 120.16743721384,
+ 30.260810195204
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.16750361941,
+ 30.260742128877
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.16755256932,
+ 30.260640425119
+ ],
+ "elevation": 37
+ },
+ {
+ "coord": [
+ 120.16760697931,
+ 30.260557628973
+ ],
+ "elevation": 38
+ },
+ {
+ "coord": [
+ 120.16768945362,
+ 30.260492843279
+ ],
+ "elevation": 37
+ },
+ {
+ "coord": [
+ 120.16780054804,
+ 30.260462342351
+ ],
+ "elevation": 38
+ },
+ {
+ "coord": [
+ 120.16785196234,
+ 30.260382855947
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.1678674148,
+ 30.260286567209
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16791965136,
+ 30.260215480692
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16797704655,
+ 30.260123966332
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16804589206,
+ 30.26004991201
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16814879693,
+ 30.260001109284
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16824924504,
+ 30.259946652496
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.16835326379,
+ 30.259934744102
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.16846165108,
+ 30.259940139684
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.16856375009,
+ 30.259914435627
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.16869363623,
+ 30.259906223861
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.16881374584,
+ 30.259936425532
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16892758093,
+ 30.259953977634
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.16903488436,
+ 30.259978689291
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16915223668,
+ 30.259971242379
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.16924914275,
+ 30.259933447095
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16936376337,
+ 30.259919272501
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.16947537962,
+ 30.259895382383
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.16958675125,
+ 30.259910845086
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.16968422529,
+ 30.259912951441
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16978009218,
+ 30.259952258006
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.16989308549,
+ 30.259959036049
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16999407515,
+ 30.259935877664
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.17010379136,
+ 30.259934306772
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.1702363761,
+ 30.259935403207
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.17034963359,
+ 30.259942481547
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.17044684363,
+ 30.259971499454
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.17054949257,
+ 30.25999502093
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.1706885672,
+ 30.259951026024
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.17078958322,
+ 30.259980555436
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.1708892269,
+ 30.259997358401
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.17099508924,
+ 30.259960089852
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.17109746388,
+ 30.259993419857
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.17119980404,
+ 30.259983074687
+ ],
+ "elevation": 43
+ },
+ {
+ "coord": [
+ 120.17131576964,
+ 30.259996157761
+ ],
+ "elevation": 45
+ },
+ {
+ "coord": [
+ 120.17141457261,
+ 30.25999265826
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.17152914864,
+ 30.259973218368
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.17165271067,
+ 30.259962350695
+ ],
+ "elevation": 37
+ },
+ {
+ "coord": [
+ 120.1717594026,
+ 30.259961212075
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.17188594733,
+ 30.259942185536
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.1719926377,
+ 30.259944862865
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.17208841302,
+ 30.259911875116
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.17219180807,
+ 30.259880423696
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.17229524745,
+ 30.259910569244
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.17236660587,
+ 30.25998589899
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.17247870879,
+ 30.259960598266
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.17259218305,
+ 30.25995265392
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.17270674973,
+ 30.259953116238
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.17283300428,
+ 30.259939063079
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.17294374347,
+ 30.259922499596
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.17306479287,
+ 30.259869190646
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.17318069691,
+ 30.259852312116
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.17330152078,
+ 30.259868214144
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.17341254999,
+ 30.259888585538
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.17351320449,
+ 30.259864864332
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.1735357834,
+ 30.259859440752
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.17363946567,
+ 30.259885344961
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.17369176029,
+ 30.259959884625
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.17379598754,
+ 30.259991221196
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.17390670118,
+ 30.259967684085
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.17400407029,
+ 30.259929116168
+ ],
+ "elevation": 45
+ },
+ {
+ "coord": [
+ 120.17409463173,
+ 30.259884664475
+ ],
+ "elevation": 51
+ },
+ {
+ "coord": [
+ 120.17420534331,
+ 30.259867122042
+ ],
+ "elevation": 48
+ },
+ {
+ "coord": [
+ 120.1743362011,
+ 30.25987296701
+ ],
+ "elevation": 44
+ },
+ {
+ "coord": [
+ 120.17445696851,
+ 30.259849906748
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.1745750162,
+ 30.259831500563
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.17469254952,
+ 30.259856251088
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.17480651859,
+ 30.259847407637
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.17489036814,
+ 30.259940102845
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.17501411662,
+ 30.259920319703
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.17512671729,
+ 30.259910163612
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.17524393125,
+ 30.259889387647
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.17537502058,
+ 30.259877974237
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.17549660538,
+ 30.259890820557
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.17561301749,
+ 30.259900747407
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.17569872571,
+ 30.259951966553
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.17575644254,
+ 30.260033048548
+ ],
+ "elevation": 37
+ },
+ {
+ "coord": [
+ 120.17585732226,
+ 30.26001005504
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.17597398619,
+ 30.260004820137
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.17608332082,
+ 30.260021103014
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.1762217327,
+ 30.260014050367
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.17632889507,
+ 30.26004231496
+ ],
+ "elevation": 37
+ },
+ {
+ "coord": [
+ 120.17644745848,
+ 30.260047418193
+ ],
+ "elevation": 35
+ },
+ {
+ "coord": [
+ 120.17655516937,
+ 30.260088992683
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.17668381818,
+ 30.260135265002
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.17679582221,
+ 30.260107092242
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.17692169328,
+ 30.26008314454
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.17703778875,
+ 30.26008046168
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.17713814612,
+ 30.260123512893
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.17722246947,
+ 30.26017865307
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.17712135558,
+ 30.260212927425
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.17723448761,
+ 30.260253973233
+ ],
+ "elevation": 41
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.16644874717,
+ 30.249407646142
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.16624253345,
+ 30.249396642637
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.16614926396,
+ 30.249287741534
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16615919001,
+ 30.249135084926
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16602258597,
+ 30.249005196096
+ ],
+ "elevation": 5
+ },
+ {
+ "coord": [
+ 120.16589722552,
+ 30.248952189978
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.16564266843,
+ 30.248829440212
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16552177205,
+ 30.248615747238
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16549821097,
+ 30.248483727985
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16526101922,
+ 30.248303205834
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.16512718609,
+ 30.248234104959
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16494538042,
+ 30.248143576975
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.16485883266,
+ 30.247960809747
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.16476197875,
+ 30.247825163536
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.16465983095,
+ 30.247574563107
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.1645768128,
+ 30.247382790931
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.16449442975,
+ 30.24728082448
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16450342571,
+ 30.247017197517
+ ],
+ "elevation": 37
+ },
+ {
+ "coord": [
+ 120.16452067681,
+ 30.246565931841
+ ],
+ "elevation": 44
+ },
+ {
+ "coord": [
+ 120.16457548836,
+ 30.246346289834
+ ],
+ "elevation": 51
+ },
+ {
+ "coord": [
+ 120.16456905064,
+ 30.24617762592
+ ],
+ "elevation": 61
+ },
+ {
+ "coord": [
+ 120.16459086565,
+ 30.245928431663
+ ],
+ "elevation": 62
+ },
+ {
+ "coord": [
+ 120.16463540802,
+ 30.245791726203
+ ],
+ "elevation": 54
+ },
+ {
+ "coord": [
+ 120.16465595084,
+ 30.245631282957
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.16470156697,
+ 30.245479093851
+ ],
+ "elevation": 38
+ },
+ {
+ "coord": [
+ 120.1647029995,
+ 30.245280176117
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.16445302949,
+ 30.245147165016
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.16415719738,
+ 30.245200841049
+ ],
+ "elevation": 42
+ },
+ {
+ "coord": [
+ 120.1639693918,
+ 30.245122697335
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.1637178912,
+ 30.244841359106
+ ],
+ "elevation": 35
+ },
+ {
+ "coord": [
+ 120.16355437917,
+ 30.244813288794
+ ],
+ "elevation": 48
+ },
+ {
+ "coord": [
+ 120.16338759426,
+ 30.244784471399
+ ],
+ "elevation": 50
+ },
+ {
+ "coord": [
+ 120.16318241921,
+ 30.244787545623
+ ],
+ "elevation": 55
+ },
+ {
+ "coord": [
+ 120.16305236011,
+ 30.244704915761
+ ],
+ "elevation": 69
+ },
+ {
+ "coord": [
+ 120.16290435171,
+ 30.244658155755
+ ],
+ "elevation": 84
+ },
+ {
+ "coord": [
+ 120.16260072249,
+ 30.244587042412
+ ],
+ "elevation": 97
+ },
+ {
+ "coord": [
+ 120.16239878678,
+ 30.244572744187
+ ],
+ "elevation": 99
+ },
+ {
+ "coord": [
+ 120.16206396614,
+ 30.244657988289
+ ],
+ "elevation": 105
+ },
+ {
+ "coord": [
+ 120.16189892995,
+ 30.244760545794
+ ],
+ "elevation": 106
+ },
+ {
+ "coord": [
+ 120.16158648188,
+ 30.244883146626
+ ],
+ "elevation": 104
+ },
+ {
+ "coord": [
+ 120.16095368638,
+ 30.244881916463
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16108410552,
+ 30.244763128302
+ ],
+ "elevation": 6
+ },
+ {
+ "coord": [
+ 120.16123120061,
+ 30.244696680479
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.16176281579,
+ 30.24463140449
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.16197048471,
+ 30.244646919545
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.16215001077,
+ 30.244591589513
+ ],
+ "elevation": 37
+ },
+ {
+ "coord": [
+ 120.1623859055,
+ 30.24449998405
+ ],
+ "elevation": 37
+ },
+ {
+ "coord": [
+ 120.16248329804,
+ 30.244339777546
+ ],
+ "elevation": 82
+ },
+ {
+ "coord": [
+ 120.16251962314,
+ 30.244152445285
+ ],
+ "elevation": 103
+ },
+ {
+ "coord": [
+ 120.16253602591,
+ 30.243935350497
+ ],
+ "elevation": 91
+ },
+ {
+ "coord": [
+ 120.16328172242,
+ 30.244099028376
+ ],
+ "elevation": 91
+ },
+ {
+ "coord": [
+ 120.16289944109,
+ 30.243845033049
+ ],
+ "elevation": 89
+ },
+ {
+ "coord": [
+ 120.16269705545,
+ 30.243650282449
+ ],
+ "elevation": 116
+ },
+ {
+ "coord": [
+ 120.16284871081,
+ 30.243528465083
+ ],
+ "elevation": 154
+ },
+ {
+ "coord": [
+ 120.16295169709,
+ 30.243243356688
+ ],
+ "elevation": 84
+ },
+ {
+ "coord": [
+ 120.16296701332,
+ 30.243028997155
+ ],
+ "elevation": 55
+ },
+ {
+ "coord": [
+ 120.16302071099,
+ 30.242775155913
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16298428729,
+ 30.242592646528
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.16289909644,
+ 30.242145360992
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.16286565331,
+ 30.241945163269
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16273418332,
+ 30.241815358981
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.16263296939,
+ 30.241695873877
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.16254860424,
+ 30.241530505868
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.16234713625,
+ 30.241438327857
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.16223525956,
+ 30.241285671284
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.16214844082,
+ 30.241120900157
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16205922379,
+ 30.241011527627
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16189548896,
+ 30.24077732897
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.16179861896,
+ 30.2406458513
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.16165682276,
+ 30.240554262446
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.16154194478,
+ 30.240401410519
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.16137715388,
+ 30.240205783812
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16154157004,
+ 30.240015574131
+ ],
+ "elevation": 49
+ },
+ {
+ "coord": [
+ 120.16163022122,
+ 30.239820231438
+ ],
+ "elevation": 63
+ },
+ {
+ "coord": [
+ 120.16153033719,
+ 30.23967145007
+ ],
+ "elevation": 54
+ },
+ {
+ "coord": [
+ 120.16148030271,
+ 30.239500872872
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16146271787,
+ 30.23935087127
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16146092699,
+ 30.239472734296
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.16154030777,
+ 30.239269961021
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16164830369,
+ 30.239068027772
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.16155524721,
+ 30.238932418124
+ ],
+ "elevation": 57
+ },
+ {
+ "coord": [
+ 120.16146232917,
+ 30.238655170609
+ ],
+ "elevation": 42
+ },
+ {
+ "coord": [
+ 120.1612892218,
+ 30.238303681931
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.16115763893,
+ 30.238059977891
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.16101114345,
+ 30.237898222546
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.16085555615,
+ 30.237630546683
+ ],
+ "elevation": 44
+ },
+ {
+ "coord": [
+ 120.16079160638,
+ 30.237436628038
+ ],
+ "elevation": 51
+ },
+ {
+ "coord": [
+ 120.16075733662,
+ 30.237213947773
+ ],
+ "elevation": 60
+ },
+ {
+ "coord": [
+ 120.16070772179,
+ 30.236897939301
+ ],
+ "elevation": 54
+ },
+ {
+ "coord": [
+ 120.16053727766,
+ 30.23646964777
+ ],
+ "elevation": 50
+ },
+ {
+ "coord": [
+ 120.16039000696,
+ 30.236354054402
+ ],
+ "elevation": 51
+ },
+ {
+ "coord": [
+ 120.16029100914,
+ 30.236277733192
+ ],
+ "elevation": 57
+ },
+ {
+ "coord": [
+ 120.16016742976,
+ 30.236141631439
+ ],
+ "elevation": 65
+ },
+ {
+ "coord": [
+ 120.1600409014,
+ 30.236061210155
+ ],
+ "elevation": 65
+ },
+ {
+ "coord": [
+ 120.15986807283,
+ 30.236017192447
+ ],
+ "elevation": 68
+ },
+ {
+ "coord": [
+ 120.15977200998,
+ 30.235871094176
+ ],
+ "elevation": 70
+ },
+ {
+ "coord": [
+ 120.15963212568,
+ 30.2357909292
+ ],
+ "elevation": 70
+ },
+ {
+ "coord": [
+ 120.15931481091,
+ 30.235707278914
+ ],
+ "elevation": 63
+ },
+ {
+ "coord": [
+ 120.15841490409,
+ 30.235768008821
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.15820370443,
+ 30.235802076139
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.15791560576,
+ 30.235793631934
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.1577513311,
+ 30.235881636973
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.15751451048,
+ 30.235918094737
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.15725230823,
+ 30.235917045346
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.15696690695,
+ 30.235880889776
+ ],
+ "elevation": 35
+ },
+ {
+ "coord": [
+ 120.15674228935,
+ 30.23584847845
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.15647678736,
+ 30.235815750405
+ ],
+ "elevation": 45
+ },
+ {
+ "coord": [
+ 120.15625027956,
+ 30.235803725091
+ ],
+ "elevation": 46
+ },
+ {
+ "coord": [
+ 120.15584361739,
+ 30.235799965647
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.15560675598,
+ 30.235791115987
+ ],
+ "elevation": 35
+ },
+ {
+ "coord": [
+ 120.15531288001,
+ 30.235724182594
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.15492520869,
+ 30.235613959416
+ ],
+ "elevation": 52
+ },
+ {
+ "coord": [
+ 120.15468912796,
+ 30.235558412683
+ ],
+ "elevation": 72
+ },
+ {
+ "coord": [
+ 120.15450453964,
+ 30.235478021855
+ ],
+ "elevation": 80
+ },
+ {
+ "coord": [
+ 120.15431068297,
+ 30.235394544655
+ ],
+ "elevation": 79
+ },
+ {
+ "coord": [
+ 120.15408856313,
+ 30.235404927815
+ ],
+ "elevation": 81
+ },
+ {
+ "coord": [
+ 120.15387620195,
+ 30.235351903358
+ ],
+ "elevation": 97
+ },
+ {
+ "coord": [
+ 120.15355894975,
+ 30.235342334635
+ ],
+ "elevation": 97
+ },
+ {
+ "coord": [
+ 120.15336103348,
+ 30.2352846854
+ ],
+ "elevation": 103
+ },
+ {
+ "coord": [
+ 120.15303668663,
+ 30.235257586261
+ ],
+ "elevation": 91
+ },
+ {
+ "coord": [
+ 120.15269108662,
+ 30.23523031757
+ ],
+ "elevation": 77
+ },
+ {
+ "coord": [
+ 120.15238258075,
+ 30.235231377518
+ ],
+ "elevation": 74
+ },
+ {
+ "coord": [
+ 120.15217596794,
+ 30.235189310841
+ ],
+ "elevation": 66
+ },
+ {
+ "coord": [
+ 120.151975105,
+ 30.23517589083
+ ],
+ "elevation": 56
+ },
+ {
+ "coord": [
+ 120.1517335431,
+ 30.235050058521
+ ],
+ "elevation": 46
+ },
+ {
+ "coord": [
+ 120.15128022558,
+ 30.234905258772
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.15114921006,
+ 30.234978987174
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.15105522505,
+ 30.235015142453
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.15073502082,
+ 30.235322351214
+ ],
+ "elevation": 41
+ },
+ {
+ "coord": [
+ 120.15063357877,
+ 30.235555886434
+ ],
+ "elevation": 42
+ },
+ {
+ "coord": [
+ 120.15055472557,
+ 30.235754013191
+ ],
+ "elevation": 45
+ },
+ {
+ "coord": [
+ 120.15038761954,
+ 30.235991429426
+ ],
+ "elevation": 51
+ },
+ {
+ "coord": [
+ 120.15021893941,
+ 30.236293713847
+ ],
+ "elevation": 47
+ },
+ {
+ "coord": [
+ 120.15003146372,
+ 30.236597679967
+ ],
+ "elevation": 50
+ },
+ {
+ "coord": [
+ 120.14995123335,
+ 30.236769227176
+ ],
+ "elevation": 48
+ },
+ {
+ "coord": [
+ 120.14991899688,
+ 30.236980080875
+ ],
+ "elevation": 47
+ },
+ {
+ "coord": [
+ 120.14962180625,
+ 30.23737713078
+ ],
+ "elevation": 54
+ },
+ {
+ "coord": [
+ 120.14950047584,
+ 30.237590089723
+ ],
+ "elevation": 70
+ },
+ {
+ "coord": [
+ 120.14941750075,
+ 30.237731553584
+ ],
+ "elevation": 68
+ },
+ {
+ "coord": [
+ 120.14933533088,
+ 30.237858620312
+ ],
+ "elevation": 61
+ },
+ {
+ "coord": [
+ 120.14906702665,
+ 30.238236387098
+ ],
+ "elevation": 61
+ },
+ {
+ "coord": [
+ 120.14892963208,
+ 30.238450415666
+ ],
+ "elevation": 61
+ },
+ {
+ "coord": [
+ 120.14881618893,
+ 30.238634990097
+ ],
+ "elevation": 57
+ },
+ {
+ "coord": [
+ 120.14871390747,
+ 30.238807971002
+ ],
+ "elevation": 55
+ },
+ {
+ "coord": [
+ 120.14854741736,
+ 30.239074578951
+ ],
+ "elevation": 54
+ },
+ {
+ "coord": [
+ 120.14843676022,
+ 30.239317155425
+ ],
+ "elevation": 51
+ },
+ {
+ "coord": [
+ 120.1483314647,
+ 30.239465752954
+ ],
+ "elevation": 48
+ },
+ {
+ "coord": [
+ 120.14825152741,
+ 30.239634806023
+ ],
+ "elevation": 47
+ },
+ {
+ "coord": [
+ 120.14812910795,
+ 30.239821946136
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.14794744499,
+ 30.240159863873
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.14780273387,
+ 30.240390508327
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.14765421562,
+ 30.240625006843
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.14756668173,
+ 30.240816957934
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.1474502326,
+ 30.24096787525
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.14741330807,
+ 30.241095208243
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.14735439381,
+ 30.241299696878
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.14724725998,
+ 30.24150091739
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.14703153333,
+ 30.242075125158
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.14692300807,
+ 30.242240807741
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.14688128957,
+ 30.242473762534
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.14682306018,
+ 30.242811725626
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.14672063292,
+ 30.243078779068
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.14659961793,
+ 30.24327911051
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.14733544626,
+ 30.243613999369
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.14643462312,
+ 30.243352349497
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.14647123407,
+ 30.243463003203
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.14649016833,
+ 30.243601892444
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.1464047554,
+ 30.243718059368
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.14637395895,
+ 30.243971991752
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.14628139687,
+ 30.24429014713
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.14620243702,
+ 30.24459017023
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.14613862858,
+ 30.24478846462
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.14607107625,
+ 30.245054652463
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.14600300445,
+ 30.245344995734
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.14593543226,
+ 30.245590014723
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.14583303825,
+ 30.245874932017
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.1457869778,
+ 30.246113361515
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.14568891248,
+ 30.246367540622
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.14564092606,
+ 30.246585917953
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.14559211651,
+ 30.246798066246
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.14550276706,
+ 30.247050469586
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.14547406834,
+ 30.247219153904
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.14545874407,
+ 30.247416660418
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.14535793893,
+ 30.247651057463
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.14520205914,
+ 30.248093614786
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.14518484555,
+ 30.248308242793
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.14511810031,
+ 30.248557289245
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.14509323395,
+ 30.248745172749
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.14500929626,
+ 30.248958937009
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.14491969492,
+ 30.249227324268
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.14488799596,
+ 30.249391161121
+ ],
+ "elevation": 44
+ },
+ {
+ "coord": [
+ 120.14455383146,
+ 30.250464557862
+ ],
+ "elevation": 35
+ },
+ {
+ "coord": [
+ 120.1443571762,
+ 30.250972239149
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.14425515026,
+ 30.251341716996
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.14417338132,
+ 30.251541297369
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.14414035362,
+ 30.251739870639
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.14402758388,
+ 30.251981695178
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.14400893388,
+ 30.252124968893
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.14397864663,
+ 30.252342762471
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.14378633375,
+ 30.252547768685
+ ],
+ "elevation": 42
+ },
+ {
+ "coord": [
+ 120.14370902418,
+ 30.252853080555
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.14345995797,
+ 30.253500620111
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.14340405029,
+ 30.253692727708
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.14337970209,
+ 30.253859682295
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.14328651034,
+ 30.254070236173
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.14320397395,
+ 30.254320516514
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.14309099559,
+ 30.254626582522
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.14300575671,
+ 30.254899411268
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.14292294787,
+ 30.255150493613
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.14289701516,
+ 30.25537579844
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.14277317352,
+ 30.255713740299
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.14273820661,
+ 30.255885174778
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.14268960603,
+ 30.256032652478
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.14255635362,
+ 30.25650691627
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.14249336767,
+ 30.256705056419
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.14239343269,
+ 30.256989720451
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.14232767921,
+ 30.257135796437
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.14226366618,
+ 30.257408284399
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.14214844592,
+ 30.257645931272
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.1420605894,
+ 30.257727451799
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.14191533117,
+ 30.25784800702
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.14164808653,
+ 30.257912399184
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.14137461632,
+ 30.258003686271
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.14108942245,
+ 30.258054375312
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.14087280586,
+ 30.258081333019
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.14049558994,
+ 30.258053043807
+ ],
+ "elevation": 18
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.15062708957,
+ 30.243920506947
+ ],
+ "elevation": 23.2
+ },
+ {
+ "coord": [
+ 120.15082472471,
+ 30.243990494347
+ ],
+ "elevation": 25.7
+ },
+ {
+ "coord": [
+ 120.15089930374,
+ 30.243903680845
+ ],
+ "elevation": 29.1
+ },
+ {
+ "coord": [
+ 120.15100694956,
+ 30.243909068686
+ ],
+ "elevation": 30.9
+ },
+ {
+ "coord": [
+ 120.15110391326,
+ 30.243859835231
+ ],
+ "elevation": 28.1
+ },
+ {
+ "coord": [
+ 120.15122316173,
+ 30.243749144631
+ ],
+ "elevation": 23.7
+ },
+ {
+ "coord": [
+ 120.15132122348,
+ 30.243706397872
+ ],
+ "elevation": 11.1
+ },
+ {
+ "coord": [
+ 120.15141683574,
+ 30.243666135095
+ ],
+ "elevation": 11.4
+ },
+ {
+ "coord": [
+ 120.15151544786,
+ 30.243627443568
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.15163503632,
+ 30.243580499308
+ ],
+ "elevation": 12.4
+ },
+ {
+ "coord": [
+ 120.15173064531,
+ 30.243535073612
+ ],
+ "elevation": 12.7
+ },
+ {
+ "coord": [
+ 120.15186169804,
+ 30.243504737175
+ ],
+ "elevation": 12.5
+ },
+ {
+ "coord": [
+ 120.1519663236,
+ 30.243481120308
+ ],
+ "elevation": 12.3
+ },
+ {
+ "coord": [
+ 120.15207938242,
+ 30.243441880275
+ ],
+ "elevation": 11.9
+ },
+ {
+ "coord": [
+ 120.15219681762,
+ 30.243417752341
+ ],
+ "elevation": 11.7
+ },
+ {
+ "coord": [
+ 120.15230063331,
+ 30.243399840681
+ ],
+ "elevation": 11.8
+ },
+ {
+ "coord": [
+ 120.15242298193,
+ 30.24338212914
+ ],
+ "elevation": 12.3
+ },
+ {
+ "coord": [
+ 120.15255187721,
+ 30.243369449618
+ ],
+ "elevation": 12.7
+ },
+ {
+ "coord": [
+ 120.1526638778,
+ 30.243358434563
+ ],
+ "elevation": 13.1
+ },
+ {
+ "coord": [
+ 120.15279688385,
+ 30.243366837754
+ ],
+ "elevation": 13.7
+ },
+ {
+ "coord": [
+ 120.15291819579,
+ 30.243399331515
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.15301170278,
+ 30.243425281519
+ ],
+ "elevation": 13.3
+ },
+ {
+ "coord": [
+ 120.15312131541,
+ 30.243476438207
+ ],
+ "elevation": 12.9
+ },
+ {
+ "coord": [
+ 120.15322083816,
+ 30.243521267444
+ ],
+ "elevation": 12.9
+ },
+ {
+ "coord": [
+ 120.15330103134,
+ 30.243586532383
+ ],
+ "elevation": 13.3
+ },
+ {
+ "coord": [
+ 120.15338232344,
+ 30.243660187498
+ ],
+ "elevation": 13.3
+ },
+ {
+ "coord": [
+ 120.15343990873,
+ 30.243738080071
+ ],
+ "elevation": 12.8
+ },
+ {
+ "coord": [
+ 120.1534994222,
+ 30.243836015621
+ ],
+ "elevation": 12.1
+ },
+ {
+ "coord": [
+ 120.1535611088,
+ 30.243926584093
+ ],
+ "elevation": 11.9
+ },
+ {
+ "coord": [
+ 120.15360072661,
+ 30.244024345407
+ ],
+ "elevation": 11.5
+ },
+ {
+ "coord": [
+ 120.15361445994,
+ 30.244129370826
+ ],
+ "elevation": 11.3
+ },
+ {
+ "coord": [
+ 120.15364946089,
+ 30.24424322678
+ ],
+ "elevation": 10.9
+ },
+ {
+ "coord": [
+ 120.15367218194,
+ 30.244341844289
+ ],
+ "elevation": 10.9
+ },
+ {
+ "coord": [
+ 120.15371535552,
+ 30.244451749308
+ ],
+ "elevation": 10.9
+ },
+ {
+ "coord": [
+ 120.15373452625,
+ 30.244543106409
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.15375832861,
+ 30.244632749305
+ ],
+ "elevation": 11.1
+ },
+ {
+ "coord": [
+ 120.15377642465,
+ 30.244739321426
+ ],
+ "elevation": 11.9
+ },
+ {
+ "coord": [
+ 120.15378251924,
+ 30.244836619746
+ ],
+ "elevation": 13.2
+ },
+ {
+ "coord": [
+ 120.15378345341,
+ 30.244951651244
+ ],
+ "elevation": 14.2
+ },
+ {
+ "coord": [
+ 120.15377865156,
+ 30.245054307702
+ ],
+ "elevation": 15.2
+ },
+ {
+ "coord": [
+ 120.15377546988,
+ 30.245142010242
+ ],
+ "elevation": 16.2
+ },
+ {
+ "coord": [
+ 120.15377285394,
+ 30.245250052897
+ ],
+ "elevation": 16.7
+ },
+ {
+ "coord": [
+ 120.15376750461,
+ 30.245350277472
+ ],
+ "elevation": 17.3
+ },
+ {
+ "coord": [
+ 120.15376570139,
+ 30.245453420873
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.15377343829,
+ 30.245557472257
+ ],
+ "elevation": 18.4
+ },
+ {
+ "coord": [
+ 120.15377980918,
+ 30.245658292937
+ ],
+ "elevation": 19.6
+ },
+ {
+ "coord": [
+ 120.15379271947,
+ 30.245757363952
+ ],
+ "elevation": 20.3
+ },
+ {
+ "coord": [
+ 120.15379063632,
+ 30.245853186352
+ ],
+ "elevation": 20.4
+ },
+ {
+ "coord": [
+ 120.15378446255,
+ 30.245946642747
+ ],
+ "elevation": 19.9
+ },
+ {
+ "coord": [
+ 120.15380146321,
+ 30.24604780842
+ ],
+ "elevation": 19.3
+ },
+ {
+ "coord": [
+ 120.15380158575,
+ 30.24616855325
+ ],
+ "elevation": 18.8
+ },
+ {
+ "coord": [
+ 120.15379677745,
+ 30.246264697678
+ ],
+ "elevation": 18.7
+ },
+ {
+ "coord": [
+ 120.15378924398,
+ 30.246361164124
+ ],
+ "elevation": 18.4
+ },
+ {
+ "coord": [
+ 120.15378336174,
+ 30.246473337678
+ ],
+ "elevation": 18.1
+ },
+ {
+ "coord": [
+ 120.15377255362,
+ 30.246565794868
+ ],
+ "elevation": 18.1
+ },
+ {
+ "coord": [
+ 120.1537680214,
+ 30.246665461576
+ ],
+ "elevation": 18.1
+ },
+ {
+ "coord": [
+ 120.15375232014,
+ 30.246770491429
+ ],
+ "elevation": 17.8
+ },
+ {
+ "coord": [
+ 120.15373279392,
+ 30.246866366726
+ ],
+ "elevation": 17.1
+ },
+ {
+ "coord": [
+ 120.15371709181,
+ 30.24697058248
+ ],
+ "elevation": 16.3
+ },
+ {
+ "coord": [
+ 120.15370055556,
+ 30.24705853319
+ ],
+ "elevation": 15.8
+ },
+ {
+ "coord": [
+ 120.15369465118,
+ 30.247148999704
+ ],
+ "elevation": 15.7
+ },
+ {
+ "coord": [
+ 120.1536854881,
+ 30.247251194453
+ ],
+ "elevation": 15.8
+ },
+ {
+ "coord": [
+ 120.15367168737,
+ 30.247349133883
+ ],
+ "elevation": 15.8
+ },
+ {
+ "coord": [
+ 120.1536554483,
+ 30.247461499682
+ ],
+ "elevation": 15.6
+ },
+ {
+ "coord": [
+ 120.15364491032,
+ 30.247551780858
+ ],
+ "elevation": 15.3
+ },
+ {
+ "coord": [
+ 120.15362266099,
+ 30.247650148439
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.15361921067,
+ 30.247741925962
+ ],
+ "elevation": 14.9
+ },
+ {
+ "coord": [
+ 120.15360349185,
+ 30.24782986119
+ ],
+ "elevation": 14.7
+ },
+ {
+ "coord": [
+ 120.15358370214,
+ 30.247934966469
+ ],
+ "elevation": 14.4
+ },
+ {
+ "coord": [
+ 120.15357398572,
+ 30.248029302348
+ ],
+ "elevation": 14.1
+ },
+ {
+ "coord": [
+ 120.15353047147,
+ 30.248121552133
+ ],
+ "elevation": 14.2
+ },
+ {
+ "coord": [
+ 120.15346650443,
+ 30.24820197068
+ ],
+ "elevation": 14.8
+ },
+ {
+ "coord": [
+ 120.1534431776,
+ 30.248313110597
+ ],
+ "elevation": 15.3
+ },
+ {
+ "coord": [
+ 120.15343046009,
+ 30.248404517109
+ ],
+ "elevation": 15.7
+ },
+ {
+ "coord": [
+ 120.15340738767,
+ 30.24849774362
+ ],
+ "elevation": 16.1
+ },
+ {
+ "coord": [
+ 120.15338050021,
+ 30.24859158343
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.15336290058,
+ 30.248706686929
+ ],
+ "elevation": 15.2
+ },
+ {
+ "coord": [
+ 120.15334065518,
+ 30.248809394751
+ ],
+ "elevation": 14.5
+ },
+ {
+ "coord": [
+ 120.15332629998,
+ 30.248898660584
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.15330241243,
+ 30.248994615129
+ ],
+ "elevation": 13.7
+ },
+ {
+ "coord": [
+ 120.15327688742,
+ 30.249088429158
+ ],
+ "elevation": 13.4
+ },
+ {
+ "coord": [
+ 120.15328052907,
+ 30.249186858443
+ ],
+ "elevation": 13.7
+ },
+ {
+ "coord": [
+ 120.15326372405,
+ 30.249279425513
+ ],
+ "elevation": 13.5
+ },
+ {
+ "coord": [
+ 120.15324094267,
+ 30.249391639691
+ ],
+ "elevation": 13.2
+ },
+ {
+ "coord": [
+ 120.15322605366,
+ 30.249492582697
+ ],
+ "elevation": 13.1
+ },
+ {
+ "coord": [
+ 120.15321851523,
+ 30.249585520713
+ ],
+ "elevation": 13.2
+ },
+ {
+ "coord": [
+ 120.15319816368,
+ 30.249674897065
+ ],
+ "elevation": 13.4
+ },
+ {
+ "coord": [
+ 120.15317347607,
+ 30.24978904553
+ ],
+ "elevation": 13.5
+ },
+ {
+ "coord": [
+ 120.15315640966,
+ 30.249893284624
+ ],
+ "elevation": 13.5
+ },
+ {
+ "coord": [
+ 120.1531390636,
+ 30.249990473964
+ ],
+ "elevation": 13.8
+ },
+ {
+ "coord": [
+ 120.15312498978,
+ 30.25008950209
+ ],
+ "elevation": 14.3
+ },
+ {
+ "coord": [
+ 120.15311583817,
+ 30.250205262218
+ ],
+ "elevation": 15.1
+ },
+ {
+ "coord": [
+ 120.15309793733,
+ 30.250292964703
+ ],
+ "elevation": 15.6
+ },
+ {
+ "coord": [
+ 120.15309013231,
+ 30.250392690765
+ ],
+ "elevation": 16.2
+ },
+ {
+ "coord": [
+ 120.15308233388,
+ 30.250499200159
+ ],
+ "elevation": 16.8
+ },
+ {
+ "coord": [
+ 120.15305952846,
+ 30.250588349805
+ ],
+ "elevation": 17.2
+ },
+ {
+ "coord": [
+ 120.15304273558,
+ 30.250694482627
+ ],
+ "elevation": 17.6
+ },
+ {
+ "coord": [
+ 120.15303274394,
+ 30.250788279414
+ ],
+ "elevation": 17.9
+ },
+ {
+ "coord": [
+ 120.15302847808,
+ 30.250884683756
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.15302559102,
+ 30.250997614287
+ ],
+ "elevation": 18.1
+ },
+ {
+ "coord": [
+ 120.15301587048,
+ 30.251090320576
+ ],
+ "elevation": 18.3
+ },
+ {
+ "coord": [
+ 120.1529971721,
+ 30.251199473005
+ ],
+ "elevation": 19.6
+ },
+ {
+ "coord": [
+ 120.15298854277,
+ 30.251293515716
+ ],
+ "elevation": 20.4
+ },
+ {
+ "coord": [
+ 120.15298238069,
+ 30.251402436454
+ ],
+ "elevation": 20.7
+ },
+ {
+ "coord": [
+ 120.15297076035,
+ 30.251503860449
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.15296267251,
+ 30.251594636943
+ ],
+ "elevation": 21.3
+ },
+ {
+ "coord": [
+ 120.15294451344,
+ 30.251698623586
+ ],
+ "elevation": 21.5
+ },
+ {
+ "coord": [
+ 120.15291353119,
+ 30.251788465866
+ ],
+ "elevation": 21.9
+ },
+ {
+ "coord": [
+ 120.15289101027,
+ 30.251891447395
+ ],
+ "elevation": 22.4
+ },
+ {
+ "coord": [
+ 120.15286958247,
+ 30.251997664678
+ ],
+ "elevation": 23.2
+ },
+ {
+ "coord": [
+ 120.1528688576,
+ 30.252093731769
+ ],
+ "elevation": 23.9
+ },
+ {
+ "coord": [
+ 120.15286323769,
+ 30.252201013977
+ ],
+ "elevation": 24.1
+ },
+ {
+ "coord": [
+ 120.15285923845,
+ 30.25229334265
+ ],
+ "elevation": 24.3
+ },
+ {
+ "coord": [
+ 120.15286123999,
+ 30.252390987346
+ ],
+ "elevation": 24.4
+ },
+ {
+ "coord": [
+ 120.15287768225,
+ 30.252484838203
+ ],
+ "elevation": 24.6
+ },
+ {
+ "coord": [
+ 120.15288595718,
+ 30.252588065146
+ ],
+ "elevation": 24.9
+ },
+ {
+ "coord": [
+ 120.15288335338,
+ 30.252715370441
+ ],
+ "elevation": 25.1
+ },
+ {
+ "coord": [
+ 120.15287746442,
+ 30.252827541384
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.15288983316,
+ 30.252937476046
+ ],
+ "elevation": 25.6
+ },
+ {
+ "coord": [
+ 120.15288937383,
+ 30.253027839737
+ ],
+ "elevation": 25.8
+ },
+ {
+ "coord": [
+ 120.15288047531,
+ 30.253128398555
+ ],
+ "elevation": 25.9
+ },
+ {
+ "coord": [
+ 120.15288385033,
+ 30.25323904166
+ ],
+ "elevation": 26.1
+ },
+ {
+ "coord": [
+ 120.15286404164,
+ 30.253330847523
+ ],
+ "elevation": 25.9
+ },
+ {
+ "coord": [
+ 120.15284261317,
+ 30.25343923466
+ ],
+ "elevation": 25.5
+ },
+ {
+ "coord": [
+ 120.15282745427,
+ 30.253549134058
+ ],
+ "elevation": 24.8
+ },
+ {
+ "coord": [
+ 120.15280574648,
+ 30.253650742669
+ ],
+ "elevation": 24.5
+ },
+ {
+ "coord": [
+ 120.15278921357,
+ 30.253748999719
+ ],
+ "elevation": 24.2
+ },
+ {
+ "coord": [
+ 120.15277841124,
+ 30.253855291119
+ ],
+ "elevation": 23.8
+ },
+ {
+ "coord": [
+ 120.15279022277,
+ 30.253954653588
+ ],
+ "elevation": 23.1
+ },
+ {
+ "coord": [
+ 120.15278268381,
+ 30.254053829997
+ ],
+ "elevation": 22.8
+ },
+ {
+ "coord": [
+ 120.1527767718,
+ 30.254144293625
+ ],
+ "elevation": 22.5
+ },
+ {
+ "coord": [
+ 120.15276923595,
+ 30.254247268538
+ ],
+ "elevation": 22.1
+ },
+ {
+ "coord": [
+ 120.1527663289,
+ 30.25434581672
+ ],
+ "elevation": 21.9
+ },
+ {
+ "coord": [
+ 120.15275607077,
+ 30.254452640344
+ ],
+ "elevation": 21.4
+ },
+ {
+ "coord": [
+ 120.15274444151,
+ 30.254550535099
+ ],
+ "elevation": 20.7
+ },
+ {
+ "coord": [
+ 120.15272409626,
+ 30.254654288351
+ ],
+ "elevation": 20.7
+ },
+ {
+ "coord": [
+ 120.15269612584,
+ 30.2547646939
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.15268722295,
+ 30.254864437469
+ ],
+ "elevation": 20.9
+ },
+ {
+ "coord": [
+ 120.1526720477,
+ 30.254959955096
+ ],
+ "elevation": 20.7
+ },
+ {
+ "coord": [
+ 120.15263942539,
+ 30.255050367068
+ ],
+ "elevation": 21.2
+ },
+ {
+ "coord": [
+ 120.15261035659,
+ 30.255152652079
+ ],
+ "elevation": 21.4
+ },
+ {
+ "coord": [
+ 120.1525690162,
+ 30.255246751209
+ ],
+ "elevation": 21.2
+ },
+ {
+ "coord": [
+ 120.15249631981,
+ 30.255324603555
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.15241352107,
+ 30.255381476279
+ ],
+ "elevation": 21.1
+ },
+ {
+ "coord": [
+ 120.15230374767,
+ 30.255444540225
+ ],
+ "elevation": 21.2
+ },
+ {
+ "coord": [
+ 120.15218494952,
+ 30.255471950889
+ ],
+ "elevation": 21.5
+ },
+ {
+ "coord": [
+ 120.15206668577,
+ 30.255486596052
+ ],
+ "elevation": 22.1
+ },
+ {
+ "coord": [
+ 120.15195960559,
+ 30.255511615873
+ ],
+ "elevation": 22.9
+ },
+ {
+ "coord": [
+ 120.15184515402,
+ 30.255521030164
+ ],
+ "elevation": 23.5
+ },
+ {
+ "coord": [
+ 120.1517315273,
+ 30.255537752347
+ ],
+ "elevation": 23.7
+ },
+ {
+ "coord": [
+ 120.15159962861,
+ 30.255538794897
+ ],
+ "elevation": 23.8
+ },
+ {
+ "coord": [
+ 120.15148517227,
+ 30.255540059362
+ ],
+ "elevation": 24.2
+ },
+ {
+ "coord": [
+ 120.1513794383,
+ 30.255542519159
+ ],
+ "elevation": 24.9
+ },
+ {
+ "coord": [
+ 120.1512715221,
+ 30.255541759557
+ ],
+ "elevation": 25.5
+ },
+ {
+ "coord": [
+ 120.15116252608,
+ 30.255551598374
+ ],
+ "elevation": 25.5
+ },
+ {
+ "coord": [
+ 120.15105597809,
+ 30.255555420538
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.1509450626,
+ 30.255550092905
+ ],
+ "elevation": 24.7
+ },
+ {
+ "coord": [
+ 120.15083225065,
+ 30.255556191896
+ ],
+ "elevation": 23.8
+ },
+ {
+ "coord": [
+ 120.15070526294,
+ 30.255554944195
+ ],
+ "elevation": 22.6
+ },
+ {
+ "coord": [
+ 120.15056982834,
+ 30.255553028962
+ ],
+ "elevation": 21.9
+ },
+ {
+ "coord": [
+ 120.15046273506,
+ 30.255551416184
+ ],
+ "elevation": 21.2
+ },
+ {
+ "coord": [
+ 120.1503338478,
+ 30.255555072411
+ ],
+ "elevation": 19.8
+ },
+ {
+ "coord": [
+ 120.15020495601,
+ 30.255552211605
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.15007661101,
+ 30.255549878533
+ ],
+ "elevation": 18.4
+ },
+ {
+ "coord": [
+ 120.14996053241,
+ 30.2555511217
+ ],
+ "elevation": 17.8
+ },
+ {
+ "coord": [
+ 120.14984309979,
+ 30.255560524366
+ ],
+ "elevation": 17.3
+ },
+ {
+ "coord": [
+ 120.14973710339,
+ 30.25555968155
+ ],
+ "elevation": 16.7
+ },
+ {
+ "coord": [
+ 120.14961285509,
+ 30.255562411988
+ ],
+ "elevation": 15.9
+ },
+ {
+ "coord": [
+ 120.14948207052,
+ 30.25556715112
+ ],
+ "elevation": 14.9
+ },
+ {
+ "coord": [
+ 120.14937417332,
+ 30.255569855759
+ ],
+ "elevation": 13.9
+ },
+ {
+ "coord": [
+ 120.14922158683,
+ 30.255566553094
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.14911994668,
+ 30.255555572092
+ ],
+ "elevation": 13.1
+ },
+ {
+ "coord": [
+ 120.14899897016,
+ 30.255553063171
+ ],
+ "elevation": 13.1
+ },
+ {
+ "coord": [
+ 120.14887690882,
+ 30.255554637583
+ ],
+ "elevation": 13.3
+ },
+ {
+ "coord": [
+ 120.14877638285,
+ 30.255567230222
+ ],
+ "elevation": 13.9
+ },
+ {
+ "coord": [
+ 120.14866113514,
+ 30.255568405515
+ ],
+ "elevation": 14.3
+ },
+ {
+ "coord": [
+ 120.14852955016,
+ 30.255579081807
+ ],
+ "elevation": 14.6
+ },
+ {
+ "coord": [
+ 120.14840831465,
+ 30.255583875925
+ ],
+ "elevation": 14.8
+ },
+ {
+ "coord": [
+ 120.14830479601,
+ 30.255595958628
+ ],
+ "elevation": 14.9
+ },
+ {
+ "coord": [
+ 120.14818793219,
+ 30.255611791883
+ ],
+ "elevation": 14.8
+ },
+ {
+ "coord": [
+ 120.14807378468,
+ 30.255616991383
+ ],
+ "elevation": 14.8
+ },
+ {
+ "coord": [
+ 120.14795829186,
+ 30.255639573557
+ ],
+ "elevation": 14.8
+ },
+ {
+ "coord": [
+ 120.14785478097,
+ 30.25565489288
+ ],
+ "elevation": 14.7
+ },
+ {
+ "coord": [
+ 120.14774308738,
+ 30.255657864347
+ ],
+ "elevation": 14.6
+ },
+ {
+ "coord": [
+ 120.14763494943,
+ 30.25567515127
+ ],
+ "elevation": 14.1
+ },
+ {
+ "coord": [
+ 120.14752544946,
+ 30.255691099272
+ ],
+ "elevation": 13.6
+ },
+ {
+ "coord": [
+ 120.14742739053,
+ 30.255704951347
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.14732144482,
+ 30.255732497295
+ ],
+ "elevation": 12.2
+ },
+ {
+ "coord": [
+ 120.14721222689,
+ 30.255754937287
+ ],
+ "elevation": 11.6
+ },
+ {
+ "coord": [
+ 120.14710735699,
+ 30.255764004488
+ ],
+ "elevation": 11.3
+ },
+ {
+ "coord": [
+ 120.14699568507,
+ 30.255780776369
+ ],
+ "elevation": 11.3
+ },
+ {
+ "coord": [
+ 120.14688455989,
+ 30.255798076111
+ ],
+ "elevation": 11.4
+ },
+ {
+ "coord": [
+ 120.14678079154,
+ 30.255816063207
+ ],
+ "elevation": 11.5
+ },
+ {
+ "coord": [
+ 120.14667784356,
+ 30.255836202414
+ ],
+ "elevation": 11.3
+ },
+ {
+ "coord": [
+ 120.14656373379,
+ 30.255861945408
+ ],
+ "elevation": 11.1
+ },
+ {
+ "coord": [
+ 120.1464594362,
+ 30.255892949088
+ ],
+ "elevation": 11.2
+ },
+ {
+ "coord": [
+ 120.14633117245,
+ 30.255926506721
+ ],
+ "elevation": 11.3
+ },
+ {
+ "coord": [
+ 120.14622633139,
+ 30.255955607925
+ ],
+ "elevation": 11.4
+ },
+ {
+ "coord": [
+ 120.14612095056,
+ 30.255988782307
+ ],
+ "elevation": 11.6
+ },
+ {
+ "coord": [
+ 120.14600086993,
+ 30.256029784269
+ ],
+ "elevation": 11.6
+ },
+ {
+ "coord": [
+ 120.14588186743,
+ 30.256055838418
+ ],
+ "elevation": 11.3
+ },
+ {
+ "coord": [
+ 120.14577349116,
+ 30.256084429383
+ ],
+ "elevation": 11.7
+ },
+ {
+ "coord": [
+ 120.14566865512,
+ 30.25611078741
+ ],
+ "elevation": 11.8
+ },
+ {
+ "coord": [
+ 120.1455559495,
+ 30.25616819591
+ ],
+ "elevation": 12.2
+ },
+ {
+ "coord": [
+ 120.1454405044,
+ 30.256205562324
+ ],
+ "elevation": 12.3
+ },
+ {
+ "coord": [
+ 120.14532015959,
+ 30.256243812486
+ ],
+ "elevation": 12.3
+ },
+ {
+ "coord": [
+ 120.14520525019,
+ 30.256266775383
+ ],
+ "elevation": 12.3
+ },
+ {
+ "coord": [
+ 120.14508054947,
+ 30.256302364683
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.14497000918,
+ 30.256334470094
+ ],
+ "elevation": 10.8
+ },
+ {
+ "coord": [
+ 120.14485593318,
+ 30.25636987928
+ ],
+ "elevation": 8.4
+ },
+ {
+ "coord": [
+ 120.14472661515,
+ 30.256412569986
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.14460874051,
+ 30.256459417571
+ ],
+ "elevation": 6
+ },
+ {
+ "coord": [
+ 120.14449793777,
+ 30.256494482335
+ ],
+ "elevation": 5.1
+ },
+ {
+ "coord": [
+ 120.14438578136,
+ 30.256536615179
+ ],
+ "elevation": 4.2
+ },
+ {
+ "coord": [
+ 120.14426681564,
+ 30.256574773604
+ ],
+ "elevation": 3.3
+ },
+ {
+ "coord": [
+ 120.1441682781,
+ 30.25661695795
+ ],
+ "elevation": 2.6
+ },
+ {
+ "coord": [
+ 120.14405312895,
+ 30.256655858082
+ ],
+ "elevation": 2.4
+ },
+ {
+ "coord": [
+ 120.14395433764,
+ 30.256715941569
+ ],
+ "elevation": 2.3
+ },
+ {
+ "coord": [
+ 120.14385336169,
+ 30.256767097781
+ ],
+ "elevation": 2.5
+ },
+ {
+ "coord": [
+ 120.14375129436,
+ 30.256813922727
+ ],
+ "elevation": 3.5
+ },
+ {
+ "coord": [
+ 120.14364568895,
+ 30.256860793479
+ ],
+ "elevation": 5.6
+ },
+ {
+ "coord": [
+ 120.14353652443,
+ 30.256883018623
+ ],
+ "elevation": 6.7
+ },
+ {
+ "coord": [
+ 120.14342272434,
+ 30.256894993589
+ ],
+ "elevation": 7.8
+ },
+ {
+ "coord": [
+ 120.14331112718,
+ 30.256933518876
+ ],
+ "elevation": 8.2
+ },
+ {
+ "coord": [
+ 120.14322731561,
+ 30.256987100383
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.14315059531,
+ 30.257054141692
+ ],
+ "elevation": 10.2
+ },
+ {
+ "coord": [
+ 120.14304716755,
+ 30.257089274756
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.14312427495,
+ 30.257158168792
+ ],
+ "elevation": 12.7
+ },
+ {
+ "coord": [
+ 120.14322693465,
+ 30.257178664314
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.14334128488,
+ 30.257177276992
+ ],
+ "elevation": 10.9
+ },
+ {
+ "coord": [
+ 120.14342790615,
+ 30.257223769054
+ ],
+ "elevation": 9.8
+ },
+ {
+ "coord": [
+ 120.14349141444,
+ 30.257304782287
+ ],
+ "elevation": 10.4
+ },
+ {
+ "coord": [
+ 120.14353941644,
+ 30.257401214832
+ ],
+ "elevation": 10.8
+ },
+ {
+ "coord": [
+ 120.14356072811,
+ 30.257489083969
+ ],
+ "elevation": 10.2
+ },
+ {
+ "coord": [
+ 120.14355481996,
+ 30.257586577517
+ ],
+ "elevation": 8.7
+ },
+ {
+ "coord": [
+ 120.14353365201,
+ 30.257669643018
+ ],
+ "elevation": 3.6
+ },
+ {
+ "coord": [
+ 120.14357266052,
+ 30.257756980979
+ ],
+ "elevation": -1.3
+ },
+ {
+ "coord": [
+ 120.14346185268,
+ 30.257766743997
+ ],
+ "elevation": 11.7
+ },
+ {
+ "coord": [
+ 120.14335243202,
+ 30.257805240021
+ ],
+ "elevation": 21.4
+ },
+ {
+ "coord": [
+ 120.14324351595,
+ 30.257793525696
+ ],
+ "elevation": 22.5
+ },
+ {
+ "coord": [
+ 120.14313351272,
+ 30.257781819641
+ ],
+ "elevation": 21.5
+ },
+ {
+ "coord": [
+ 120.14304010265,
+ 30.257750603663
+ ],
+ "elevation": 20.7
+ },
+ {
+ "coord": [
+ 120.14293309223,
+ 30.257732328902
+ ],
+ "elevation": 20.3
+ },
+ {
+ "coord": [
+ 120.14282960828,
+ 30.257696631742
+ ],
+ "elevation": 20.7
+ },
+ {
+ "coord": [
+ 120.14271578463,
+ 30.257665415259
+ ],
+ "elevation": 21.2
+ },
+ {
+ "coord": [
+ 120.14262698822,
+ 30.257609689863
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.14255288405,
+ 30.257542628683
+ ],
+ "elevation": 24.1
+ },
+ {
+ "coord": [
+ 120.14245730335,
+ 30.257509780266
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.14235626002,
+ 30.257453667633
+ ],
+ "elevation": 24.3
+ },
+ {
+ "coord": [
+ 120.14225474506,
+ 30.257481937907
+ ],
+ "elevation": 23.3
+ },
+ {
+ "coord": [
+ 120.1422148031,
+ 30.257570129328
+ ],
+ "elevation": 22.1
+ },
+ {
+ "coord": [
+ 120.14212610278,
+ 30.257620191365
+ ],
+ "elevation": 21.1
+ },
+ {
+ "coord": [
+ 120.14212972124,
+ 30.257715377649
+ ],
+ "elevation": 19.5
+ },
+ {
+ "coord": [
+ 120.14204811496,
+ 30.257784058978
+ ],
+ "elevation": 21.6
+ },
+ {
+ "coord": [
+ 120.14203294162,
+ 30.257868649719
+ ],
+ "elevation": 22.1
+ },
+ {
+ "coord": [
+ 120.1419368256,
+ 30.257836318423
+ ],
+ "elevation": 22.5
+ },
+ {
+ "coord": [
+ 120.14184269097,
+ 30.257893492063
+ ],
+ "elevation": 24.5
+ },
+ {
+ "coord": [
+ 120.14173820679,
+ 30.257941574267
+ ],
+ "elevation": 25.1
+ },
+ {
+ "coord": [
+ 120.14162988594,
+ 30.257956055953
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.1415634039,
+ 30.257874192006
+ ],
+ "elevation": 23.2
+ },
+ {
+ "coord": [
+ 120.14145782122,
+ 30.257904361259
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.14135004168,
+ 30.257908775775
+ ],
+ "elevation": 25.3
+ },
+ {
+ "coord": [
+ 120.1412368289,
+ 30.257923021452
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.1411309848,
+ 30.257958867993
+ ],
+ "elevation": 25.8
+ },
+ {
+ "coord": [
+ 120.14104066783,
+ 30.258009156332
+ ],
+ "elevation": 26.7
+ },
+ {
+ "coord": [
+ 120.14094355419,
+ 30.258066581372
+ ],
+ "elevation": 27.6
+ },
+ {
+ "coord": [
+ 120.14084915158,
+ 30.258109313136
+ ],
+ "elevation": 28.3
+ },
+ {
+ "coord": [
+ 120.14074603518,
+ 30.258144010314
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.14063906942,
+ 30.258128553429
+ ],
+ "elevation": 29.9
+ },
+ {
+ "coord": [
+ 120.14050984747,
+ 30.258182286583
+ ],
+ "elevation": 30.2
+ },
+ {
+ "coord": [
+ 120.14039825415,
+ 30.258159543711
+ ],
+ "elevation": 29.4
+ },
+ {
+ "coord": [
+ 120.14029672134,
+ 30.258124185245
+ ],
+ "elevation": 28.3
+ },
+ {
+ "coord": [
+ 120.14018894043,
+ 30.258099478438
+ ],
+ "elevation": 28.2
+ },
+ {
+ "coord": [
+ 120.14007437901,
+ 30.258099265985
+ ],
+ "elevation": 27.5
+ },
+ {
+ "coord": [
+ 120.13996748259,
+ 30.258151858744
+ ],
+ "elevation": 27.8
+ },
+ {
+ "coord": [
+ 120.13987281359,
+ 30.258180960232
+ ],
+ "elevation": 27.9
+ },
+ {
+ "coord": [
+ 120.13975773976,
+ 30.258211115589
+ ],
+ "elevation": 27.4
+ },
+ {
+ "coord": [
+ 120.13965327544,
+ 30.25823570721
+ ],
+ "elevation": 26.7
+ },
+ {
+ "coord": [
+ 120.13955643667,
+ 30.258266440177
+ ],
+ "elevation": 26.6
+ },
+ {
+ "coord": [
+ 120.13944899879,
+ 30.258309772609
+ ],
+ "elevation": 25.9
+ },
+ {
+ "coord": [
+ 120.13933609343,
+ 30.258318702133
+ ],
+ "elevation": 25.2
+ },
+ {
+ "coord": [
+ 120.13923108182,
+ 30.258329157709
+ ],
+ "elevation": 25.1
+ },
+ {
+ "coord": [
+ 120.13911354309,
+ 30.258322113837
+ ],
+ "elevation": 24.5
+ },
+ {
+ "coord": [
+ 120.13900256876,
+ 30.258354597412
+ ],
+ "elevation": 24.4
+ },
+ {
+ "coord": [
+ 120.13889920557,
+ 30.258376402816
+ ],
+ "elevation": 24.1
+ },
+ {
+ "coord": [
+ 120.13877324646,
+ 30.258375935895
+ ],
+ "elevation": 24.1
+ },
+ {
+ "coord": [
+ 120.138665501,
+ 30.258355716544
+ ],
+ "elevation": 24.6
+ },
+ {
+ "coord": [
+ 120.13855015004,
+ 30.258346697232
+ ],
+ "elevation": 24.8
+ },
+ {
+ "coord": [
+ 120.13843183141,
+ 30.258364561482
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.1383241285,
+ 30.258387453427
+ ],
+ "elevation": 25.5
+ },
+ {
+ "coord": [
+ 120.1382163936,
+ 30.258368280989
+ ],
+ "elevation": 26.7
+ },
+ {
+ "coord": [
+ 120.13810759161,
+ 30.258371902154
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.13802034606,
+ 30.258456137855
+ ],
+ "elevation": 28.9
+ },
+ {
+ "coord": [
+ 120.13794696095,
+ 30.258524482741
+ ],
+ "elevation": 28.7
+ },
+ {
+ "coord": [
+ 120.13786758568,
+ 30.258583933017
+ ],
+ "elevation": 28.4
+ },
+ {
+ "coord": [
+ 120.13775392813,
+ 30.258627730718
+ ],
+ "elevation": 29.5
+ },
+ {
+ "coord": [
+ 120.13765442343,
+ 30.258680324115
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.13756689005,
+ 30.258735770059
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.13747308537,
+ 30.258769568201
+ ],
+ "elevation": 30.7
+ },
+ {
+ "coord": [
+ 120.1373694991,
+ 30.258812683892
+ ],
+ "elevation": 30.4
+ },
+ {
+ "coord": [
+ 120.13725722296,
+ 30.258869173427
+ ],
+ "elevation": 29.3
+ },
+ {
+ "coord": [
+ 120.13716234309,
+ 30.258911369402
+ ],
+ "elevation": 29.2
+ },
+ {
+ "coord": [
+ 120.13705517208,
+ 30.258884492336
+ ],
+ "elevation": 28.9
+ },
+ {
+ "coord": [
+ 120.13695646669,
+ 30.258898763644
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.13684986243,
+ 30.258894653884
+ ],
+ "elevation": 29.1
+ },
+ {
+ "coord": [
+ 120.13692023024,
+ 30.258813924181
+ ],
+ "elevation": 27.9
+ },
+ {
+ "coord": [
+ 120.13686604771,
+ 30.258731429725
+ ],
+ "elevation": 27.2
+ },
+ {
+ "coord": [
+ 120.13681539568,
+ 30.258642657926
+ ],
+ "elevation": 26.1
+ },
+ {
+ "coord": [
+ 120.13673212001,
+ 30.258563695983
+ ],
+ "elevation": 25.5
+ },
+ {
+ "coord": [
+ 120.13662607231,
+ 30.258569057188
+ ],
+ "elevation": 25.6
+ },
+ {
+ "coord": [
+ 120.13651974013,
+ 30.258555961487
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.13641644032,
+ 30.258590852247
+ ],
+ "elevation": 26.9
+ },
+ {
+ "coord": [
+ 120.13629573342,
+ 30.25861667077
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.13618617304,
+ 30.258636947866
+ ],
+ "elevation": 26.8
+ },
+ {
+ "coord": [
+ 120.13608690673,
+ 30.258607197132
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.13598442624,
+ 30.258634716498
+ ],
+ "elevation": 26.1
+ },
+ {
+ "coord": [
+ 120.13608852929,
+ 30.258596329346
+ ],
+ "elevation": 18.2
+ },
+ {
+ "coord": [
+ 120.1360892743,
+ 30.258509227226
+ ],
+ "elevation": 20.9
+ },
+ {
+ "coord": [
+ 120.13603794386,
+ 30.258579695902
+ ],
+ "elevation": 22.7
+ },
+ {
+ "coord": [
+ 120.13594336446,
+ 30.258626132686
+ ],
+ "elevation": 22.2
+ },
+ {
+ "coord": [
+ 120.13582236862,
+ 30.258615547255
+ ],
+ "elevation": 22.4
+ },
+ {
+ "coord": [
+ 120.13569947443,
+ 30.258606865099
+ ],
+ "elevation": 23.6
+ },
+ {
+ "coord": [
+ 120.13556759585,
+ 30.258578169678
+ ],
+ "elevation": 24.4
+ },
+ {
+ "coord": [
+ 120.13545475082,
+ 30.258549296202
+ ],
+ "elevation": 25.2
+ },
+ {
+ "coord": [
+ 120.13533157684,
+ 30.258518599734
+ ],
+ "elevation": 26.2
+ },
+ {
+ "coord": [
+ 120.13522390215,
+ 30.258489117046
+ ],
+ "elevation": 26.4
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.15294341512,
+ 30.235500793293
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.15708892895,
+ 30.236094578756
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.15807964902,
+ 30.235753116213
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.15937916098,
+ 30.235740813836
+ ],
+ "elevation": 18.5
+ },
+ {
+ "coord": [
+ 120.16001266529,
+ 30.235874241325
+ ],
+ "elevation": 27.5
+ },
+ {
+ "coord": [
+ 120.16000243894,
+ 30.236022034727
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.16048569028,
+ 30.236381327286
+ ],
+ "elevation": 38.5
+ },
+ {
+ "coord": [
+ 120.16078024289,
+ 30.237526647947
+ ],
+ "elevation": 44
+ },
+ {
+ "coord": [
+ 120.16153870497,
+ 30.238441327957
+ ],
+ "elevation": 37.5
+ },
+ {
+ "coord": [
+ 120.16155142647,
+ 30.238638629934
+ ],
+ "elevation": 44.5
+ },
+ {
+ "coord": [
+ 120.16158116686,
+ 30.239535401939
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.16126681874,
+ 30.23996114507
+ ],
+ "elevation": 36.5
+ },
+ {
+ "coord": [
+ 120.16128652034,
+ 30.240324651042
+ ],
+ "elevation": 36.5
+ },
+ {
+ "coord": [
+ 120.16087981458,
+ 30.240780326286
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.16078917066,
+ 30.241719192543
+ ],
+ "elevation": 39
+ },
+ {
+ "coord": [
+ 120.16131073048,
+ 30.242214903841
+ ],
+ "elevation": 35.5
+ },
+ {
+ "coord": [
+ 120.16228714676,
+ 30.241948437087
+ ],
+ "elevation": 29.5
+ },
+ {
+ "coord": [
+ 120.16271500281,
+ 30.241982845994
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.16295201345,
+ 30.242472472325
+ ],
+ "elevation": 50
+ },
+ {
+ "coord": [
+ 120.16263861109,
+ 30.244329677432
+ ],
+ "elevation": 47.5
+ },
+ {
+ "coord": [
+ 120.16160516446,
+ 30.244495060867
+ ],
+ "elevation": 25.5
+ },
+ {
+ "coord": [
+ 120.16102741565,
+ 30.245027093515
+ ],
+ "elevation": 23.5
+ },
+ {
+ "coord": [
+ 120.16093923287,
+ 30.245409397609
+ ],
+ "elevation": 25.5
+ },
+ {
+ "coord": [
+ 120.16119398166,
+ 30.246690092041
+ ],
+ "elevation": 50
+ },
+ {
+ "coord": [
+ 120.16189200287,
+ 30.247601074639
+ ],
+ "elevation": 4
+ },
+ {
+ "coord": [
+ 120.16300981606,
+ 30.248431458296
+ ],
+ "elevation": -3
+ },
+ {
+ "coord": [
+ 120.16395314715,
+ 30.249536071662
+ ],
+ "elevation": -6.5
+ },
+ {
+ "coord": [
+ 120.1649052981,
+ 30.25028866059
+ ],
+ "elevation": -13.5
+ },
+ {
+ "coord": [
+ 120.16602365526,
+ 30.251463240802
+ ],
+ "elevation": 14.5
+ },
+ {
+ "coord": [
+ 120.16569846044,
+ 30.252091361232
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16483026858,
+ 30.25213069923
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.1646115154,
+ 30.252435081191
+ ],
+ "elevation": 14.5
+ },
+ {
+ "coord": [
+ 120.16463253135,
+ 30.252760053931
+ ],
+ "elevation": 16.5
+ },
+ {
+ "coord": [
+ 120.16496862258,
+ 30.253227800109
+ ],
+ "elevation": 12.5
+ },
+ {
+ "coord": [
+ 120.16530765617,
+ 30.253363699111
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.16536204005,
+ 30.25354620605
+ ],
+ "elevation": 13.5
+ },
+ {
+ "coord": [
+ 120.16591757795,
+ 30.253631078161
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.16596511948,
+ 30.25378413737
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.16565487708,
+ 30.254412009581
+ ],
+ "elevation": 26.5
+ },
+ {
+ "coord": [
+ 120.16611459335,
+ 30.25519097506
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.16644222151,
+ 30.255422742055
+ ],
+ "elevation": 16.5
+ },
+ {
+ "coord": [
+ 120.16679761583,
+ 30.255345878462
+ ],
+ "elevation": 11.5
+ },
+ {
+ "coord": [
+ 120.16686754745,
+ 30.255573753727
+ ],
+ "elevation": 12.5
+ },
+ {
+ "coord": [
+ 120.16796775433,
+ 30.256060458502
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.16814203016,
+ 30.256353235982
+ ],
+ "elevation": 6.5
+ },
+ {
+ "coord": [
+ 120.16872679994,
+ 30.256470465167
+ ],
+ "elevation": -4
+ },
+ {
+ "coord": [
+ 120.16907874503,
+ 30.256944618895
+ ],
+ "elevation": -1.5
+ },
+ {
+ "coord": [
+ 120.16911580285,
+ 30.257298421402
+ ],
+ "elevation": 4.5
+ },
+ {
+ "coord": [
+ 120.16833662948,
+ 30.258844823041
+ ],
+ "elevation": 2
+ },
+ {
+ "coord": [
+ 120.16743027865,
+ 30.259898938649
+ ],
+ "elevation": 10.5
+ },
+ {
+ "coord": [
+ 120.16613174212,
+ 30.262043005862
+ ],
+ "elevation": 12.5
+ },
+ {
+ "coord": [
+ 120.16566670424,
+ 30.262397192318
+ ],
+ "elevation": 17.5
+ },
+ {
+ "coord": [
+ 120.16500798436,
+ 30.26240530247
+ ],
+ "elevation": 17.5
+ },
+ {
+ "coord": [
+ 120.1642670408,
+ 30.262995083807
+ ],
+ "elevation": 13.5
+ },
+ {
+ "coord": [
+ 120.16314786299,
+ 30.265565777847
+ ],
+ "elevation": 25.5
+ },
+ {
+ "coord": [
+ 120.16290328869,
+ 30.26579339591
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.16296156345,
+ 30.266261174928
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.16143613675,
+ 30.265805932291
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.16025766296,
+ 30.265671507604
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.1602198653,
+ 30.265835530132
+ ],
+ "elevation": 25.5
+ },
+ {
+ "coord": [
+ 120.15851897106,
+ 30.264923244415
+ ],
+ "elevation": 22.5
+ },
+ {
+ "coord": [
+ 120.15352494541,
+ 30.259281119865
+ ],
+ "elevation": 35.5
+ },
+ {
+ "coord": [
+ 120.15055183685,
+ 30.256788994886
+ ],
+ "elevation": 43
+ },
+ {
+ "coord": [
+ 120.14855430005,
+ 30.256457499971
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.14655578144,
+ 30.256421560569
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.14536466008,
+ 30.256680498913
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.14527784018,
+ 30.257711012481
+ ],
+ "elevation": 1.5
+ },
+ {
+ "coord": [
+ 120.14484052481,
+ 30.258109336076
+ ],
+ "elevation": 4
+ },
+ {
+ "coord": [
+ 120.14338250648,
+ 30.257955660348
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.14224902555,
+ 30.25747848981
+ ],
+ "elevation": 32.5
+ },
+ {
+ "coord": [
+ 120.14210653298,
+ 30.257655461786
+ ],
+ "elevation": 27.5
+ },
+ {
+ "coord": [
+ 120.14234930462,
+ 30.256957503917
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.14236209165,
+ 30.256320514541
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.14276165275,
+ 30.256231603829
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.14259548915,
+ 30.256120262684
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.14284766099,
+ 30.254989038386
+ ],
+ "elevation": 23.5
+ },
+ {
+ "coord": [
+ 120.14277097159,
+ 30.254782015268
+ ],
+ "elevation": 29.5
+ },
+ {
+ "coord": [
+ 120.1430735582,
+ 30.254612452585
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.14332312218,
+ 30.253334928908
+ ],
+ "elevation": 38.5
+ },
+ {
+ "coord": [
+ 120.14405912792,
+ 30.251937809002
+ ],
+ "elevation": 53
+ },
+ {
+ "coord": [
+ 120.14668033621,
+ 30.242824108656
+ ],
+ "elevation": 44.5
+ },
+ {
+ "coord": [
+ 120.14761067732,
+ 30.240395373175
+ ],
+ "elevation": 35
+ },
+ {
+ "coord": [
+ 120.14876614252,
+ 30.23872648183
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.14879550957,
+ 30.238372695019
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.15058342791,
+ 30.235543218138
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.1509386465,
+ 30.235398190472
+ ],
+ "elevation": 33.5
+ },
+ {
+ "coord": [
+ 120.15222160873,
+ 30.235655434488
+ ],
+ "elevation": 27.5
+ },
+ {
+ "coord": [
+ 120.15305406424,
+ 30.235499020467
+ ],
+ "elevation": 14
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.16457644816,
+ 30.245682300924
+ ],
+ "elevation": 35
+ },
+ {
+ "coord": [
+ 120.16457052304,
+ 30.245481881263
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.16448720353,
+ 30.245262982833
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.16431007553,
+ 30.245229945172
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.16410406694,
+ 30.245200133554
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.16398974066,
+ 30.245306313111
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.16359948607,
+ 30.245496278651
+ ],
+ "elevation": 6
+ },
+ {
+ "coord": [
+ 120.16333331635,
+ 30.245535686062
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.16303333656,
+ 30.245559707058
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.16281495467,
+ 30.24571173525
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.1629689962,
+ 30.245526929639
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.16269906523,
+ 30.245364852824
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.16241283349,
+ 30.245256815981
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.16224877166,
+ 30.245241306164
+ ],
+ "elevation": 2
+ },
+ {
+ "coord": [
+ 120.16203447935,
+ 30.245408236077
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.1618849631,
+ 30.245498033052
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.16159929167,
+ 30.245421527509
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.1613627479,
+ 30.245423109424
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.16128470411,
+ 30.245590048061
+ ],
+ "elevation": 5
+ },
+ {
+ "coord": [
+ 120.16108560176,
+ 30.245700043765
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.16091755157,
+ 30.245528370476
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.16083152371,
+ 30.245349502662
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.16086345965,
+ 30.245130487944
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.16114984968,
+ 30.244828136056
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.16131383437,
+ 30.244755684913
+ ],
+ "elevation": 5
+ },
+ {
+ "coord": [
+ 120.16161106733,
+ 30.244672682555
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.16188085846,
+ 30.244675942131
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.16243050983,
+ 30.244684240243
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.16247993708,
+ 30.244518922977
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16260479036,
+ 30.244298805251
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.1626834049,
+ 30.244163903252
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.16268400251,
+ 30.243946548254
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.1627301951,
+ 30.243816566919
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16277173451,
+ 30.243666047154
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16279879327,
+ 30.243477255074
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.16289669217,
+ 30.243280963857
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.1629850158,
+ 30.242775788472
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.1629016761,
+ 30.242545542139
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16282810929,
+ 30.242278493462
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.16276522113,
+ 30.24206281123
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.16271168112,
+ 30.241930807878
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16252746568,
+ 30.241647830956
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.16230932175,
+ 30.241502227944
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.16212913375,
+ 30.241438443192
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.16203067004,
+ 30.241072007822
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.16191062231,
+ 30.240925478316
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.16184530065,
+ 30.240729936861
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16161483613,
+ 30.240534401426
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16137744945,
+ 30.240509406291
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.1611809072,
+ 30.240172997529
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.16125978268,
+ 30.240012284772
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.16154470059,
+ 30.23987116548
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.16154878393,
+ 30.239583744661
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.16137695696,
+ 30.239436815693
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.16138114429,
+ 30.239256028892
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.16139371202,
+ 30.239003456954
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.16149219078,
+ 30.238821500323
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16152548621,
+ 30.238584290626
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.16154088149,
+ 30.238437489766
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.16145682231,
+ 30.238305247032
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.16131224657,
+ 30.238154570858
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.16115567095,
+ 30.237995164607
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.16107081012,
+ 30.237880852778
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.16092488517,
+ 30.23774676624
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.16075324059,
+ 30.237502722597
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.16069065987,
+ 30.23731556376
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16062426934,
+ 30.237133902569
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.16062324317,
+ 30.23690410169
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.16061866812,
+ 30.236666226297
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.16051791199,
+ 30.236451824278
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.16039329689,
+ 30.236375971808
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.16023865552,
+ 30.236247494558
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.15997609975,
+ 30.236131868163
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.15952113565,
+ 30.23602714663
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.15928947539,
+ 30.236030634425
+ ],
+ "elevation": 2
+ },
+ {
+ "coord": [
+ 120.1591196328,
+ 30.235978712773
+ ],
+ "elevation": 6
+ },
+ {
+ "coord": [
+ 120.15886859566,
+ 30.235956526643
+ ],
+ "elevation": 5
+ },
+ {
+ "coord": [
+ 120.15856497375,
+ 30.235956765195
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.15842140546,
+ 30.236032978387
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.15818925056,
+ 30.236102439555
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.15788239017,
+ 30.236144814922
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.15767064392,
+ 30.236179444059
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.15733376494,
+ 30.23618277858
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.15714429806,
+ 30.236139394374
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.15678227095,
+ 30.236062350945
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.1562965184,
+ 30.236004727356
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.15602741772,
+ 30.235908845899
+ ],
+ "elevation": 6
+ },
+ {
+ "coord": [
+ 120.15580008032,
+ 30.235882725057
+ ],
+ "elevation": 5
+ },
+ {
+ "coord": [
+ 120.15539476607,
+ 30.235860212184
+ ],
+ "elevation": 6
+ },
+ {
+ "coord": [
+ 120.15504671256,
+ 30.235862394223
+ ],
+ "elevation": 6
+ },
+ {
+ "coord": [
+ 120.15472557666,
+ 30.235787277118
+ ],
+ "elevation": 5
+ },
+ {
+ "coord": [
+ 120.15430714428,
+ 30.235714509772
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.15403866091,
+ 30.23569021239
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.15379577622,
+ 30.235639382201
+ ],
+ "elevation": 2
+ },
+ {
+ "coord": [
+ 120.15357283969,
+ 30.23564650977
+ ],
+ "elevation": 2
+ },
+ {
+ "coord": [
+ 120.15343571894,
+ 30.235610796668
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.15318685008,
+ 30.235567110536
+ ],
+ "elevation": 2
+ },
+ {
+ "coord": [
+ 120.1529688998,
+ 30.235660950515
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.1527550715,
+ 30.2357910645
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.15256868114,
+ 30.235817559437
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.15220481316,
+ 30.23577187186
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.1518834427,
+ 30.235699332708
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.15165830107,
+ 30.235654052507
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.15136802793,
+ 30.235604514127
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.15094805838,
+ 30.235568416505
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.1507863472,
+ 30.235434031685
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.15078620685,
+ 30.235270422132
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.15082992006,
+ 30.235082961788
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.15081830589,
+ 30.234883472118
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.15054731786,
+ 30.234738557978
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.15037940541,
+ 30.234673454643
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.15019536373,
+ 30.234542968163
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.14999801533,
+ 30.234462902741
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.14976662322,
+ 30.234398620064
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.14956380702,
+ 30.234287420318
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.14924679185,
+ 30.234129907118
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.14908361386,
+ 30.234165854205
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.14886336188,
+ 30.234040255869
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.14864964612,
+ 30.233905030242
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.14839513336,
+ 30.233849985421
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.14826235884,
+ 30.233733688286
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.14808219477,
+ 30.233632842525
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.14787751895,
+ 30.233536197081
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.14761538313,
+ 30.233460579084
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14731045544,
+ 30.233346574645
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14685787803,
+ 30.233208918832
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14665837861,
+ 30.233075448322
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14637202678,
+ 30.232984341259
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14610612297,
+ 30.232905345635
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14594468354,
+ 30.233004259586
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14575498104,
+ 30.23317822495
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14555335222,
+ 30.233417207331
+ ],
+ "elevation": 6
+ },
+ {
+ "coord": [
+ 120.14525750858,
+ 30.233668228729
+ ],
+ "elevation": 6
+ },
+ {
+ "coord": [
+ 120.14513644091,
+ 30.23382287777
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.14502304855,
+ 30.234035463625
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14489114713,
+ 30.23425565492
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14482320609,
+ 30.234427097761
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.1446030613,
+ 30.234626107381
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14453536659,
+ 30.234760906629
+ ],
+ "elevation": 4
+ },
+ {
+ "coord": [
+ 120.14441130818,
+ 30.234900359231
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.14410694315,
+ 30.235308151005
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.14431184006,
+ 30.235134124821
+ ],
+ "elevation": 2
+ },
+ {
+ "coord": [
+ 120.14424095907,
+ 30.235038060494
+ ],
+ "elevation": 5
+ },
+ {
+ "coord": [
+ 120.14420977036,
+ 30.235187219126
+ ],
+ "elevation": 5
+ },
+ {
+ "coord": [
+ 120.14414045742,
+ 30.23533315238
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14402298773,
+ 30.235524031077
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.1438866946,
+ 30.235670412718
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14362640238,
+ 30.235999048959
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.14341123714,
+ 30.236233106152
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14338827359,
+ 30.236436939462
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14336123565,
+ 30.236650328685
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14314121148,
+ 30.236916710227
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14298598238,
+ 30.237171823993
+ ],
+ "elevation": 2
+ },
+ {
+ "coord": [
+ 120.14287367997,
+ 30.237323476241
+ ],
+ "elevation": 2
+ },
+ {
+ "coord": [
+ 120.14275731033,
+ 30.237490372918
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.14248775453,
+ 30.237743528096
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.1424119137,
+ 30.23786478945
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14225712925,
+ 30.237985515165
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14212573768,
+ 30.238082568434
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14190534494,
+ 30.238187337387
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.14173776713,
+ 30.238292717742
+ ],
+ "elevation": 4
+ },
+ {
+ "coord": [
+ 120.14140345663,
+ 30.238517790563
+ ],
+ "elevation": 5
+ },
+ {
+ "coord": [
+ 120.14121119621,
+ 30.238697783649
+ ],
+ "elevation": 6
+ },
+ {
+ "coord": [
+ 120.14103798723,
+ 30.238870176959
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.14081822279,
+ 30.23901791488
+ ],
+ "elevation": 2
+ },
+ {
+ "coord": [
+ 120.14070347251,
+ 30.239120594735
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.14050198241,
+ 30.239297082161
+ ],
+ "elevation": 5
+ },
+ {
+ "coord": [
+ 120.14035566487,
+ 30.239391991887
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.14021843867,
+ 30.239599648629
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.1399345071,
+ 30.239763779755
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.13967617935,
+ 30.239939753307
+ ],
+ "elevation": 2
+ },
+ {
+ "coord": [
+ 120.13948588157,
+ 30.240111613851
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.13927489057,
+ 30.240259540829
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.13906718162,
+ 30.240416078568
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.13892500668,
+ 30.240531676244
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.13872139033,
+ 30.240685126833
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.13850720108,
+ 30.240867153029
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.13827721722,
+ 30.241021368284
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.13778470744,
+ 30.241395136606
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.13759203164,
+ 30.241561312731
+ ],
+ "elevation": 4
+ },
+ {
+ "coord": [
+ 120.13738549912,
+ 30.241733298339
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.13713623807,
+ 30.241587670091
+ ],
+ "elevation": 2
+ },
+ {
+ "coord": [
+ 120.13703799031,
+ 30.241790253615
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.13696091698,
+ 30.241952462474
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.13687054278,
+ 30.24213758912
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.13680953816,
+ 30.242321066577
+ ],
+ "elevation": 2
+ },
+ {
+ "coord": [
+ 120.13667619091,
+ 30.242494386256
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.13658689476,
+ 30.242663200904
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.13651195816,
+ 30.242777605061
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.1363876538,
+ 30.243011586246
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.13642372915,
+ 30.243194671826
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.13639540835,
+ 30.243424761729
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.13644105357,
+ 30.243659854062
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.13662313865,
+ 30.243829337844
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.13681066502,
+ 30.243994127988
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.13698704382,
+ 30.244153572217
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.13717131983,
+ 30.244316710047
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.13732354958,
+ 30.24451813353
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.1375753384,
+ 30.244729634151
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.13787940241,
+ 30.244979330479
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.13801395063,
+ 30.24515697819
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.13814378544,
+ 30.245242678345
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.13826109172,
+ 30.245309508211
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.13839068901,
+ 30.245422862017
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.13854943597,
+ 30.245574407898
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.13878109057,
+ 30.245720496627
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.13893003129,
+ 30.245847685707
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.13909690816,
+ 30.245950772041
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.13924883134,
+ 30.24605862473
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.1392440064,
+ 30.24639867009
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.13923191366,
+ 30.246547234404
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.13924679193,
+ 30.246731300241
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.13916496819,
+ 30.247068444928
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.13909711783,
+ 30.247232579144
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.13900165844,
+ 30.247535411065
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.13892512108,
+ 30.247716187808
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.13890071772,
+ 30.248066495042
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.13881747104,
+ 30.248337426578
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.13871164458,
+ 30.248607250791
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.13863562116,
+ 30.24875462935
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.13851102826,
+ 30.24902518974
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.13843521321,
+ 30.249378228675
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.13835291274,
+ 30.249774476903
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.13827886978,
+ 30.249994530445
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.13824531818,
+ 30.250174522936
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.13818191951,
+ 30.250429999569
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.13813310173,
+ 30.250576237261
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.13808061103,
+ 30.250859538094
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.13805362143,
+ 30.251074456697
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.13806932694,
+ 30.251279690023
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.13802158558,
+ 30.251414515136
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.13789818095,
+ 30.251780238641
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.13790296989,
+ 30.251950315772
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.13813152601,
+ 30.252024652362
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.13820620685,
+ 30.252179046615
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.13827189203,
+ 30.252312913135
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.13828944589,
+ 30.252463312667
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.13822000144,
+ 30.252663773968
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.13822265349,
+ 30.25287728621
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.13823333842,
+ 30.253244015036
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.13822096783,
+ 30.253394469332
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.13823525516,
+ 30.253545718429
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.13808679686,
+ 30.253610277466
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.13823494682,
+ 30.253796977447
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.13848312289,
+ 30.253893827469
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.13845314592,
+ 30.254128320971
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.13834117967,
+ 30.254245143973
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.13817426867,
+ 30.254362011652
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.13805741006,
+ 30.254476691508
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.13798495527,
+ 30.254662246577
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.13792445451,
+ 30.254832203987
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.13773771691,
+ 30.254966588783
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.13758845609,
+ 30.255031367076
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.13753188897,
+ 30.255336929797
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.13750755818,
+ 30.255500522455
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.1374555944,
+ 30.255786226071
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.13743348308,
+ 30.2560008041
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.13743894881,
+ 30.256339639423
+ ],
+ "elevation": 4
+ },
+ {
+ "coord": [
+ 120.13736793627,
+ 30.256619020869
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.13735805224,
+ 30.256825603015
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.13736776759,
+ 30.257054234068
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.1373920975,
+ 30.257200231755
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.13740731487,
+ 30.257505862686
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.13747603221,
+ 30.257720591913
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.13755504544,
+ 30.257888542245
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.13765306479,
+ 30.258016404245
+ ],
+ "elevation": 2
+ },
+ {
+ "coord": [
+ 120.13763660024,
+ 30.258169603834
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.13763944607,
+ 30.258323144682
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.13757075824,
+ 30.258474443891
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.13735878129,
+ 30.258674688785
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.13700425459,
+ 30.258805770284
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.13674275794,
+ 30.258942091048
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.13562272113,
+ 30.259178131124
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.13534296487,
+ 30.259159371187
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.13503895982,
+ 30.259048491721
+ ],
+ "elevation": 6
+ },
+ {
+ "coord": [
+ 120.13488503635,
+ 30.258960749326
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.13467175425,
+ 30.258737250116
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.13453787294,
+ 30.258547283931
+ ],
+ "elevation": 6
+ },
+ {
+ "coord": [
+ 120.13425642113,
+ 30.258366015518
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.13382299338,
+ 30.258089174728
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.13357456533,
+ 30.258028236784
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.13290861434,
+ 30.25806761817
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.13264211119,
+ 30.258096931401
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.13237721659,
+ 30.258080043832
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.13203679771,
+ 30.25803447344
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.1314283166,
+ 30.257977383738
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.13125470925,
+ 30.2579087572
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.13110221238,
+ 30.257744499026
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.13099319365,
+ 30.257606072559
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.13088874654,
+ 30.25741172142
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.13076907678,
+ 30.257197617534
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.13071163589,
+ 30.257031265314
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.13065792408,
+ 30.256780782751
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.13059121645,
+ 30.256575661887
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.13055957654,
+ 30.25641462157
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.13050619328,
+ 30.256231418344
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.13042643717,
+ 30.256010329874
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.13029074933,
+ 30.255792704496
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.13015911466,
+ 30.255549541255
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.13002673453,
+ 30.255379894037
+ ],
+ "elevation": 5
+ },
+ {
+ "coord": [
+ 120.12990245925,
+ 30.255161905269
+ ],
+ "elevation": 6
+ },
+ {
+ "coord": [
+ 120.12984201957,
+ 30.254978419242
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.12978697858,
+ 30.254760723969
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.12970183444,
+ 30.254578396004
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.12972069964,
+ 30.254427474819
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.129640719,
+ 30.254250822717
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.12940538298,
+ 30.253995674262
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.12926871115,
+ 30.253861485503
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.12917503964,
+ 30.253551882075
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.12931616543,
+ 30.253229960484
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.12941686554,
+ 30.252929574162
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.12948497372,
+ 30.252612724858
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.1295884883,
+ 30.25241487661
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.12967441998,
+ 30.252281109011
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.12974990295,
+ 30.252009259113
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.12985616948,
+ 30.251844477196
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.12989939785,
+ 30.251626719829
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.1299330897,
+ 30.251374533822
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.12990331882,
+ 30.25119365541
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.12999781554,
+ 30.250930132334
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.13008284139,
+ 30.250697838066
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.13006709527,
+ 30.250424659189
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.13012040431,
+ 30.250243485719
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.13022144773,
+ 30.250008136512
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.13019681158,
+ 30.249807981744
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.13014938631,
+ 30.249626632204
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.13011226421,
+ 30.249430590949
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.13010118761,
+ 30.249214646892
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.13003419008,
+ 30.249009756117
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.12999599727,
+ 30.248828909164
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.12996779684,
+ 30.248594843887
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.1299285277,
+ 30.248423494897
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.12989577998,
+ 30.248257277535
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.12995120673,
+ 30.248027535286
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.12999393801,
+ 30.247862141617
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.13005239616,
+ 30.247675797147
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.13001216669,
+ 30.247361731035
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.13011872077,
+ 30.246944303456
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.13014297084,
+ 30.24675997677
+ ],
+ "elevation": 20
+ },
+ {
+ "coord": [
+ 120.13017996375,
+ 30.246557151552
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.13026208791,
+ 30.246411407987
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.13031267422,
+ 30.246224264206
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.13046152539,
+ 30.246005529127
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.13054852791,
+ 30.245844819874
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.13065989392,
+ 30.245606942412
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.13061383372,
+ 30.245440802777
+ ],
+ "elevation": 5
+ },
+ {
+ "coord": [
+ 120.13031488156,
+ 30.245453927959
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.13006515577,
+ 30.245527300005
+ ],
+ "elevation": 2
+ },
+ {
+ "coord": [
+ 120.12968183242,
+ 30.245562519445
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.12977568432,
+ 30.245479455828
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.12959055699,
+ 30.245506641651
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.12937991844,
+ 30.245532240876
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.12884541644,
+ 30.245515210128
+ ],
+ "elevation": 5
+ },
+ {
+ "coord": [
+ 120.12857695866,
+ 30.24549492511
+ ],
+ "elevation": 5
+ },
+ {
+ "coord": [
+ 120.12821823723,
+ 30.245565903526
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.12806938122,
+ 30.245698570277
+ ],
+ "elevation": 6
+ },
+ {
+ "coord": [
+ 120.12786500541,
+ 30.245398513732
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.12768234406,
+ 30.245362671429
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.12764449285,
+ 30.245230848447
+ ],
+ "elevation": 12
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.12552047716,
+ 30.245866134596
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.12517121639,
+ 30.245904567931
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.12497460984,
+ 30.245901323247
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.1245830249,
+ 30.245867588869
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.12417231484,
+ 30.245918860985
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.12355701441,
+ 30.246004143291
+ ],
+ "elevation": 2
+ },
+ {
+ "coord": [
+ 120.12335484127,
+ 30.246047239666
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.12314111786,
+ 30.246183869809
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.12294341044,
+ 30.246334076894
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.122776454,
+ 30.246331051557
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.12262699059,
+ 30.246199993891
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.1225912015,
+ 30.245916857019
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.12262134484,
+ 30.245709397976
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.12267743362,
+ 30.245430401011
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.12270436837,
+ 30.245265256132
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.12276942761,
+ 30.245011249712
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.12283971513,
+ 30.24483404553
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.12292001964,
+ 30.244644389559
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.12299191524,
+ 30.244446287674
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.12299167926,
+ 30.244211853098
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.12401293169,
+ 30.239365498716
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.12410115621,
+ 30.239199105581
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.12401056378,
+ 30.238865429807
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.12396785716,
+ 30.238712026219
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.12394545938,
+ 30.238532080051
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.1238932224,
+ 30.238331439038
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.12386321457,
+ 30.238128409551
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.12379715966,
+ 30.237933155971
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.12379620882,
+ 30.237782565771
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.12386214348,
+ 30.237549118866
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.12385982037,
+ 30.237378447301
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.12394586658,
+ 30.237197140762
+ ],
+ "elevation": 38
+ },
+ {
+ "coord": [
+ 120.1241632707,
+ 30.236865538893
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.12439408904,
+ 30.236663340972
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.12466505816,
+ 30.236468486319
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.12478860228,
+ 30.236352020085
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.12496365132,
+ 30.236211193956
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.12531056509,
+ 30.235982085194
+ ],
+ "elevation": 18
+ },
+ {
+ "coord": [
+ 120.12545448367,
+ 30.235880482791
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.12572201642,
+ 30.235701622666
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.12582412686,
+ 30.235536448676
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.12600791058,
+ 30.235403316037
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.12643430965,
+ 30.235065320928
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.12619108919,
+ 30.234862077417
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.12597508381,
+ 30.234749681237
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.12574095256,
+ 30.234678468668
+ ],
+ "elevation": 37
+ },
+ {
+ "coord": [
+ 120.12553964523,
+ 30.234599904743
+ ],
+ "elevation": 38
+ },
+ {
+ "coord": [
+ 120.12527107695,
+ 30.234502778028
+ ],
+ "elevation": 42
+ },
+ {
+ "coord": [
+ 120.125005148,
+ 30.234294884051
+ ],
+ "elevation": 46
+ },
+ {
+ "coord": [
+ 120.12484257484,
+ 30.234118287129
+ ],
+ "elevation": 43
+ },
+ {
+ "coord": [
+ 120.12471042797,
+ 30.23400330582
+ ],
+ "elevation": 43
+ },
+ {
+ "coord": [
+ 120.12454543345,
+ 30.233833440784
+ ],
+ "elevation": 43
+ },
+ {
+ "coord": [
+ 120.12427142684,
+ 30.23363022486
+ ],
+ "elevation": 43
+ },
+ {
+ "coord": [
+ 120.12412544997,
+ 30.233485293557
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.12400767851,
+ 30.233346106198
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.12388854927,
+ 30.233198762435
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.12379247502,
+ 30.233061774638
+ ],
+ "elevation": 44
+ },
+ {
+ "coord": [
+ 120.12366167327,
+ 30.232883715584
+ ],
+ "elevation": 44
+ },
+ {
+ "coord": [
+ 120.12354389672,
+ 30.232716529573
+ ],
+ "elevation": 42
+ },
+ {
+ "coord": [
+ 120.12325820114,
+ 30.232726267211
+ ],
+ "elevation": 46
+ },
+ {
+ "coord": [
+ 120.123074239,
+ 30.232831496151
+ ],
+ "elevation": 50
+ },
+ {
+ "coord": [
+ 120.12280711309,
+ 30.232979812819
+ ],
+ "elevation": 45
+ },
+ {
+ "coord": [
+ 120.12264731051,
+ 30.233108112664
+ ],
+ "elevation": 47
+ },
+ {
+ "coord": [
+ 120.12245038059,
+ 30.233227833503
+ ],
+ "elevation": 47
+ },
+ {
+ "coord": [
+ 120.1222009,
+ 30.233361410227
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.1220301701,
+ 30.233345498532
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.12183368725,
+ 30.233305838903
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.12165233667,
+ 30.23320190977
+ ],
+ "elevation": 38
+ },
+ {
+ "coord": [
+ 120.12145013723,
+ 30.233104360037
+ ],
+ "elevation": 47
+ },
+ {
+ "coord": [
+ 120.12137926704,
+ 30.232902424014
+ ],
+ "elevation": 44
+ },
+ {
+ "coord": [
+ 120.12143033546,
+ 30.232722789141
+ ],
+ "elevation": 44
+ },
+ {
+ "coord": [
+ 120.12148110324,
+ 30.232501638888
+ ],
+ "elevation": 41
+ },
+ {
+ "coord": [
+ 120.12142734418,
+ 30.232351068501
+ ],
+ "elevation": 41
+ },
+ {
+ "coord": [
+ 120.12124705424,
+ 30.232187927791
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.12107011018,
+ 30.232140897463
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.12091398907,
+ 30.232034530597
+ ],
+ "elevation": 42
+ },
+ {
+ "coord": [
+ 120.12076220387,
+ 30.231921924239
+ ],
+ "elevation": 43
+ },
+ {
+ "coord": [
+ 120.12060149184,
+ 30.231817927864
+ ],
+ "elevation": 45
+ },
+ {
+ "coord": [
+ 120.12043671239,
+ 30.231698961157
+ ],
+ "elevation": 45
+ },
+ {
+ "coord": [
+ 120.12031252511,
+ 30.231519164193
+ ],
+ "elevation": 51
+ },
+ {
+ "coord": [
+ 120.12014935767,
+ 30.231364349133
+ ],
+ "elevation": 59
+ },
+ {
+ "coord": [
+ 120.11978043754,
+ 30.231314562924
+ ],
+ "elevation": 55
+ },
+ {
+ "coord": [
+ 120.11963386968,
+ 30.23124144167
+ ],
+ "elevation": 70
+ },
+ {
+ "coord": [
+ 120.11952356726,
+ 30.231128116834
+ ],
+ "elevation": 67
+ },
+ {
+ "coord": [
+ 120.11933040903,
+ 30.231023984458
+ ],
+ "elevation": 70
+ },
+ {
+ "coord": [
+ 120.11925285731,
+ 30.230876127575
+ ],
+ "elevation": 78
+ },
+ {
+ "coord": [
+ 120.11907322059,
+ 30.230727547514
+ ],
+ "elevation": 69
+ },
+ {
+ "coord": [
+ 120.11887114932,
+ 30.230624355834
+ ],
+ "elevation": 78
+ },
+ {
+ "coord": [
+ 120.11879931237,
+ 30.230503097338
+ ],
+ "elevation": 81
+ },
+ {
+ "coord": [
+ 120.11875100663,
+ 30.230342125116
+ ],
+ "elevation": 85
+ },
+ {
+ "coord": [
+ 120.11867562213,
+ 30.23017470963
+ ],
+ "elevation": 81
+ },
+ {
+ "coord": [
+ 120.1185027694,
+ 30.23000709538
+ ],
+ "elevation": 78
+ },
+ {
+ "coord": [
+ 120.11838329177,
+ 30.229887346453
+ ],
+ "elevation": 69
+ },
+ {
+ "coord": [
+ 120.11827193097,
+ 30.229753811302
+ ],
+ "elevation": 78
+ },
+ {
+ "coord": [
+ 120.11820605669,
+ 30.229621166623
+ ],
+ "elevation": 82
+ },
+ {
+ "coord": [
+ 120.11820838546,
+ 30.229454057877
+ ],
+ "elevation": 72
+ },
+ {
+ "coord": [
+ 120.1182759531,
+ 30.229273081176
+ ],
+ "elevation": 62
+ },
+ {
+ "coord": [
+ 120.11835347396,
+ 30.22898555333
+ ],
+ "elevation": 42
+ },
+ {
+ "coord": [
+ 120.11863249364,
+ 30.228789078536
+ ],
+ "elevation": 53
+ },
+ {
+ "coord": [
+ 120.11875019136,
+ 30.228653213551
+ ],
+ "elevation": 65
+ },
+ {
+ "coord": [
+ 120.11890530208,
+ 30.228587604626
+ ],
+ "elevation": 78
+ },
+ {
+ "coord": [
+ 120.11891632525,
+ 30.228457185402
+ ],
+ "elevation": 67
+ },
+ {
+ "coord": [
+ 120.11900311722,
+ 30.228242933602
+ ],
+ "elevation": 67
+ },
+ {
+ "coord": [
+ 120.11881432812,
+ 30.228141456834
+ ],
+ "elevation": 112
+ },
+ {
+ "coord": [
+ 120.11866532663,
+ 30.228001447982
+ ],
+ "elevation": 106
+ },
+ {
+ "coord": [
+ 120.11850013213,
+ 30.227941331273
+ ],
+ "elevation": 111
+ },
+ {
+ "coord": [
+ 120.1183568682,
+ 30.227871321265
+ ],
+ "elevation": 111
+ },
+ {
+ "coord": [
+ 120.11816866073,
+ 30.227788458432
+ ],
+ "elevation": 113
+ },
+ {
+ "coord": [
+ 120.11797181294,
+ 30.227730725304
+ ],
+ "elevation": 119
+ },
+ {
+ "coord": [
+ 120.11782015827,
+ 30.227631277344
+ ],
+ "elevation": 119
+ },
+ {
+ "coord": [
+ 120.11761917728,
+ 30.227414735081
+ ],
+ "elevation": 121
+ },
+ {
+ "coord": [
+ 120.11752031135,
+ 30.227299681836
+ ],
+ "elevation": 126
+ },
+ {
+ "coord": [
+ 120.11738596558,
+ 30.227141720808
+ ],
+ "elevation": 129
+ },
+ {
+ "coord": [
+ 120.11721938371,
+ 30.226925132442
+ ],
+ "elevation": 121
+ },
+ {
+ "coord": [
+ 120.11705635512,
+ 30.226759013936
+ ],
+ "elevation": 110
+ },
+ {
+ "coord": [
+ 120.11675770197,
+ 30.226520286795
+ ],
+ "elevation": 111
+ },
+ {
+ "coord": [
+ 120.11650703484,
+ 30.226405917806
+ ],
+ "elevation": 117
+ },
+ {
+ "coord": [
+ 120.1160100609,
+ 30.226153457451
+ ],
+ "elevation": 115
+ },
+ {
+ "coord": [
+ 120.1157393517,
+ 30.225914472261
+ ],
+ "elevation": 100
+ },
+ {
+ "coord": [
+ 120.11554229591,
+ 30.225759467546
+ ],
+ "elevation": 108
+ },
+ {
+ "coord": [
+ 120.11529738024,
+ 30.225646527832
+ ],
+ "elevation": 104
+ },
+ {
+ "coord": [
+ 120.11486007831,
+ 30.225435444604
+ ],
+ "elevation": 112
+ },
+ {
+ "coord": [
+ 120.11469639457,
+ 30.225406543151
+ ],
+ "elevation": 106
+ },
+ {
+ "coord": [
+ 120.11439746975,
+ 30.225398096804
+ ],
+ "elevation": 103
+ },
+ {
+ "coord": [
+ 120.11415402405,
+ 30.225410826804
+ ],
+ "elevation": 95
+ },
+ {
+ "coord": [
+ 120.11397010756,
+ 30.225446982972
+ ],
+ "elevation": 87
+ },
+ {
+ "coord": [
+ 120.11374830616,
+ 30.22542895462
+ ],
+ "elevation": 85
+ },
+ {
+ "coord": [
+ 120.11343933854,
+ 30.225219674687
+ ],
+ "elevation": 94
+ },
+ {
+ "coord": [
+ 120.1134060846,
+ 30.224635449385
+ ],
+ "elevation": 89
+ },
+ {
+ "coord": [
+ 120.11340406702,
+ 30.224339985245
+ ],
+ "elevation": 90
+ },
+ {
+ "coord": [
+ 120.113452133,
+ 30.224156077161
+ ],
+ "elevation": 84
+ },
+ {
+ "coord": [
+ 120.11358754095,
+ 30.223922467214
+ ],
+ "elevation": 78
+ },
+ {
+ "coord": [
+ 120.11367053112,
+ 30.223811668995
+ ],
+ "elevation": 77
+ },
+ {
+ "coord": [
+ 120.11373563145,
+ 30.223594039251
+ ],
+ "elevation": 79
+ },
+ {
+ "coord": [
+ 120.11382044923,
+ 30.223292535174
+ ],
+ "elevation": 67
+ },
+ {
+ "coord": [
+ 120.11390316716,
+ 30.223156218132
+ ],
+ "elevation": 66
+ },
+ {
+ "coord": [
+ 120.11411647355,
+ 30.222843962168
+ ],
+ "elevation": 66
+ },
+ {
+ "coord": [
+ 120.11411994005,
+ 30.222695334955
+ ],
+ "elevation": 66
+ },
+ {
+ "coord": [
+ 120.11418667816,
+ 30.22246766579
+ ],
+ "elevation": 71
+ },
+ {
+ "coord": [
+ 120.11426995465,
+ 30.222349779873
+ ],
+ "elevation": 66
+ },
+ {
+ "coord": [
+ 120.11434753815,
+ 30.222184892232
+ ],
+ "elevation": 56
+ },
+ {
+ "coord": [
+ 120.11445030443,
+ 30.222095426098
+ ],
+ "elevation": 75
+ },
+ {
+ "coord": [
+ 120.11441131332,
+ 30.221969658539
+ ],
+ "elevation": 76
+ },
+ {
+ "coord": [
+ 120.11442878186,
+ 30.221567535414
+ ],
+ "elevation": 74
+ },
+ {
+ "coord": [
+ 120.11472789663,
+ 30.221270237538
+ ],
+ "elevation": 74
+ },
+ {
+ "coord": [
+ 120.114580977,
+ 30.221171241631
+ ],
+ "elevation": 89
+ },
+ {
+ "coord": [
+ 120.11453224531,
+ 30.221017701367
+ ],
+ "elevation": 83
+ },
+ {
+ "coord": [
+ 120.11449270558,
+ 30.220833877424
+ ],
+ "elevation": 81
+ },
+ {
+ "coord": [
+ 120.11456568733,
+ 30.220583474419
+ ],
+ "elevation": 74
+ },
+ {
+ "coord": [
+ 120.11449476814,
+ 30.220383300505
+ ],
+ "elevation": 74
+ },
+ {
+ "coord": [
+ 120.11432808816,
+ 30.220163608352
+ ],
+ "elevation": 78
+ },
+ {
+ "coord": [
+ 120.11421986298,
+ 30.220042758253
+ ],
+ "elevation": 76
+ },
+ {
+ "coord": [
+ 120.11409947926,
+ 30.219977101896
+ ],
+ "elevation": 77
+ },
+ {
+ "coord": [
+ 120.11394528179,
+ 30.219879034899
+ ],
+ "elevation": 76
+ },
+ {
+ "coord": [
+ 120.11389655846,
+ 30.21968044008
+ ],
+ "elevation": 75
+ },
+ {
+ "coord": [
+ 120.11391545959,
+ 30.219491034062
+ ],
+ "elevation": 68
+ },
+ {
+ "coord": [
+ 120.11393382816,
+ 30.219342313759
+ ],
+ "elevation": 63
+ },
+ {
+ "coord": [
+ 120.11405118238,
+ 30.219098151909
+ ],
+ "elevation": 60
+ },
+ {
+ "coord": [
+ 120.11408334652,
+ 30.218926800246
+ ],
+ "elevation": 60
+ },
+ {
+ "coord": [
+ 120.114083298,
+ 30.218547013566
+ ],
+ "elevation": 62
+ },
+ {
+ "coord": [
+ 120.11403645818,
+ 30.218127089273
+ ],
+ "elevation": 62
+ },
+ {
+ "coord": [
+ 120.11401099943,
+ 30.217744032016
+ ],
+ "elevation": 63
+ },
+ {
+ "coord": [
+ 120.11404831878,
+ 30.217629710257
+ ],
+ "elevation": 61
+ },
+ {
+ "coord": [
+ 120.11404830517,
+ 30.217415405523
+ ],
+ "elevation": 66
+ },
+ {
+ "coord": [
+ 120.114112659,
+ 30.216876310241
+ ],
+ "elevation": 51
+ },
+ {
+ "coord": [
+ 120.11404854779,
+ 30.21669600024
+ ],
+ "elevation": 56
+ },
+ {
+ "coord": [
+ 120.11393439866,
+ 30.216462215644
+ ],
+ "elevation": 51
+ },
+ {
+ "coord": [
+ 120.11381673899,
+ 30.216191488412
+ ],
+ "elevation": 45
+ },
+ {
+ "coord": [
+ 120.11388382031,
+ 30.216011600712
+ ],
+ "elevation": 42
+ },
+ {
+ "coord": [
+ 120.11401446849,
+ 30.215847358117
+ ],
+ "elevation": 36
+ },
+ {
+ "coord": [
+ 120.114160539,
+ 30.215708504687
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.11431635195,
+ 30.215597141349
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.11441022316,
+ 30.215483715077
+ ],
+ "elevation": 47
+ },
+ {
+ "coord": [
+ 120.11460771133,
+ 30.215264815221
+ ],
+ "elevation": 49
+ },
+ {
+ "coord": [
+ 120.11481196716,
+ 30.215139814462
+ ],
+ "elevation": 46
+ },
+ {
+ "coord": [
+ 120.11509035849,
+ 30.215068732897
+ ],
+ "elevation": 46
+ },
+ {
+ "coord": [
+ 120.1153298118,
+ 30.214906311368
+ ],
+ "elevation": 43
+ },
+ {
+ "coord": [
+ 120.11551218756,
+ 30.214741633208
+ ],
+ "elevation": 43
+ },
+ {
+ "coord": [
+ 120.11547378429,
+ 30.214543761884
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.11523055275,
+ 30.214490790244
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.11499003898,
+ 30.214438883525
+ ],
+ "elevation": 37
+ },
+ {
+ "coord": [
+ 120.11483177939,
+ 30.214383749645
+ ],
+ "elevation": 38
+ },
+ {
+ "coord": [
+ 120.11472738739,
+ 30.214086132619
+ ],
+ "elevation": 37
+ },
+ {
+ "coord": [
+ 120.11484049028,
+ 30.213919989051
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.11499282624,
+ 30.213751541101
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.11517710985,
+ 30.213475178266
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.11532566416,
+ 30.213359544871
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.11540795968,
+ 30.213093750184
+ ],
+ "elevation": 35
+ },
+ {
+ "coord": [
+ 120.11540583756,
+ 30.212855836961
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.11542615798,
+ 30.212707940849
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.11562645225,
+ 30.212361965204
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.1157904658,
+ 30.21217834749
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.11591199026,
+ 30.212050980314
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.11615179441,
+ 30.211835780336
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.11627715538,
+ 30.21156275115
+ ],
+ "elevation": 49
+ },
+ {
+ "coord": [
+ 120.11637460691,
+ 30.211451652777
+ ],
+ "elevation": 50
+ },
+ {
+ "coord": [
+ 120.11645177027,
+ 30.211317028018
+ ],
+ "elevation": 38
+ },
+ {
+ "coord": [
+ 120.11668591189,
+ 30.211157272916
+ ],
+ "elevation": 38
+ },
+ {
+ "coord": [
+ 120.11683777562,
+ 30.211043109881
+ ],
+ "elevation": 40
+ },
+ {
+ "coord": [
+ 120.11693798346,
+ 30.210811012858
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.11713561132,
+ 30.210659789282
+ ],
+ "elevation": 27
+ },
+ {
+ "coord": [
+ 120.11735571433,
+ 30.210512251977
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.11744778387,
+ 30.210392608751
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.11768411814,
+ 30.210333301634
+ ],
+ "elevation": 33
+ },
+ {
+ "coord": [
+ 120.11788365719,
+ 30.21024516436
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.11811652477,
+ 30.210096226518
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.11812121635,
+ 30.209829629564
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.11818112187,
+ 30.209615278044
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.11818468968,
+ 30.209479412931
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.11834452075,
+ 30.20921511452
+ ],
+ "elevation": 15
+ },
+ {
+ "coord": [
+ 120.11860125098,
+ 30.209055682613
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.11880214471,
+ 30.20908917906
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.11908162427,
+ 30.208993814229
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.11929805535,
+ 30.208821456281
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.11936048713,
+ 30.208454351822
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.11936163091,
+ 30.20830788997
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.1193836429,
+ 30.208125766657
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.11939265026,
+ 30.207961185704
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.11940056889,
+ 30.207812058202
+ ],
+ "elevation": 1
+ },
+ {
+ "coord": [
+ 120.11933322824,
+ 30.207610612671
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.11921009088,
+ 30.207442952937
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.11920152647,
+ 30.207225090263
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.11939888476,
+ 30.206776194168
+ ],
+ "elevation": 12
+ },
+ {
+ "coord": [
+ 120.11971400948,
+ 30.206445749703
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.11978350314,
+ 30.206131024688
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.11974144929,
+ 30.205760792969
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.11964543367,
+ 30.205525553418
+ ],
+ "elevation": 34
+ },
+ {
+ "coord": [
+ 120.11961707694,
+ 30.205381072532
+ ],
+ "elevation": 35
+ },
+ {
+ "coord": [
+ 120.11950128253,
+ 30.205174441232
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.11947646918,
+ 30.204995534673
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.11944531896,
+ 30.204541288098
+ ],
+ "elevation": 31
+ },
+ {
+ "coord": [
+ 120.11952923894,
+ 30.204142873913
+ ],
+ "elevation": 23
+ },
+ {
+ "coord": [
+ 120.11967776834,
+ 30.203946941525
+ ],
+ "elevation": 25
+ },
+ {
+ "coord": [
+ 120.11977916307,
+ 30.203777538679
+ ],
+ "elevation": 26
+ },
+ {
+ "coord": [
+ 120.11984776707,
+ 30.203644805223
+ ],
+ "elevation": 30
+ },
+ {
+ "coord": [
+ 120.11996815318,
+ 30.203434279417
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.12003417482,
+ 30.203114373477
+ ],
+ "elevation": 24
+ },
+ {
+ "coord": [
+ 120.120133438,
+ 30.202913192193
+ ],
+ "elevation": 21
+ },
+ {
+ "coord": [
+ 120.12023031333,
+ 30.202643368337
+ ],
+ "elevation": 22
+ },
+ {
+ "coord": [
+ 120.12023233236,
+ 30.2024608476
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.12016663848,
+ 30.202277918925
+ ],
+ "elevation": 32
+ },
+ {
+ "coord": [
+ 120.12017960898,
+ 30.201930562724
+ ],
+ "elevation": 17
+ },
+ {
+ "coord": [
+ 120.12026696425,
+ 30.201733367611
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.12037571362,
+ 30.20154714019
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.1206132275,
+ 30.201233349337
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.12079155544,
+ 30.201120428131
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.12110979597,
+ 30.200852801259
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.12131005758,
+ 30.200786012715
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.12130871753,
+ 30.20040467425
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.12135736409,
+ 30.200207198294
+ ],
+ "elevation": 3
+ },
+ {
+ "coord": [
+ 120.1214106352,
+ 30.199988045729
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.12142323752,
+ 30.199808019871
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.12167870359,
+ 30.199506556493
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.12204123399,
+ 30.199191391475
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.12219591067,
+ 30.19892109878
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.12242810706,
+ 30.19864403748
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.12255838369,
+ 30.198408040288
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.12280663868,
+ 30.198406506853
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.12296393252,
+ 30.198291514462
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.12307845215,
+ 30.19812265921
+ ],
+ "elevation": 11
+ },
+ {
+ "coord": [
+ 120.12312576542,
+ 30.197941643645
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.12325733869,
+ 30.197807538743
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.12342550868,
+ 30.197675965929
+ ],
+ "elevation": 5
+ },
+ {
+ "coord": [
+ 120.12344081148,
+ 30.197530913094
+ ],
+ "elevation": 4
+ },
+ {
+ "coord": [
+ 120.12353988429,
+ 30.197376878702
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.12364012452,
+ 30.197129813202
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.12364187018,
+ 30.196991772403
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.12366397119,
+ 30.196826665982
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.12378730673,
+ 30.196527577119
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.12387188032,
+ 30.196229462842
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.12371152428,
+ 30.196082055517
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.12356069991,
+ 30.195893155117
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.12356297356,
+ 30.195475231676
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.12362663387,
+ 30.195224542031
+ ],
+ "elevation": 13
+ },
+ {
+ "coord": [
+ 120.12363874331,
+ 30.195025509933
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.12365933351,
+ 30.194743783249
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.12382557602,
+ 30.194381347081
+ ],
+ "elevation": 9
+ },
+ {
+ "coord": [
+ 120.12391545155,
+ 30.194228883421
+ ],
+ "elevation": 10
+ },
+ {
+ "coord": [
+ 120.124158367,
+ 30.194227009854
+ ],
+ "elevation": 8
+ },
+ {
+ "coord": [
+ 120.12438800317,
+ 30.194234001706
+ ],
+ "elevation": 7
+ },
+ {
+ "coord": [
+ 120.12454001499,
+ 30.194047161934
+ ],
+ "elevation": 8
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.17310125845,
+ 30.245782189949
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.17253051327,
+ 30.245408040125
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.17241239097,
+ 30.245393798042
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.17218170069,
+ 30.245482220171
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.17192962095,
+ 30.244886910483
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.17215053051,
+ 30.244536729811
+ ],
+ "elevation": 4.5
+ },
+ {
+ "coord": [
+ 120.1723916748,
+ 30.24402135196
+ ],
+ "elevation": 7.8
+ },
+ {
+ "coord": [
+ 120.17207806675,
+ 30.243661780417
+ ],
+ "elevation": 12.2
+ },
+ {
+ "coord": [
+ 120.17195416606,
+ 30.243325300114
+ ],
+ "elevation": 24.7
+ },
+ {
+ "coord": [
+ 120.17188256162,
+ 30.243300457669
+ ],
+ "elevation": 24.2
+ },
+ {
+ "coord": [
+ 120.17197126526,
+ 30.243278678327
+ ],
+ "elevation": 33.3
+ },
+ {
+ "coord": [
+ 120.17222307347,
+ 30.242801664006
+ ],
+ "elevation": 44.4
+ },
+ {
+ "coord": [
+ 120.17221946383,
+ 30.242730348108
+ ],
+ "elevation": 45.8
+ },
+ {
+ "coord": [
+ 120.17167598313,
+ 30.241671069243
+ ],
+ "elevation": 48.7
+ },
+ {
+ "coord": [
+ 120.171625581,
+ 30.241347215746
+ ],
+ "elevation": 52
+ },
+ {
+ "coord": [
+ 120.17142531537,
+ 30.240858220043
+ ],
+ "elevation": 58.8
+ },
+ {
+ "coord": [
+ 120.17183739169,
+ 30.240021922931
+ ],
+ "elevation": 61.2
+ },
+ {
+ "coord": [
+ 120.17172913124,
+ 30.239242439612
+ ],
+ "elevation": 63.6
+ },
+ {
+ "coord": [
+ 120.17190558708,
+ 30.239052359402
+ ],
+ "elevation": 67.9
+ },
+ {
+ "coord": [
+ 120.17181578085,
+ 30.23877623018
+ ],
+ "elevation": 72.7
+ },
+ {
+ "coord": [
+ 120.17189796874,
+ 30.238482111797
+ ],
+ "elevation": 72.7
+ },
+ {
+ "coord": [
+ 120.17196430463,
+ 30.238405815445
+ ],
+ "elevation": 62.1
+ },
+ {
+ "coord": [
+ 120.17186747422,
+ 30.238469486496
+ ],
+ "elevation": 63.6
+ },
+ {
+ "coord": [
+ 120.17159174805,
+ 30.238454128304
+ ],
+ "elevation": 62.1
+ },
+ {
+ "coord": [
+ 120.17137368767,
+ 30.238411727663
+ ],
+ "elevation": 61.7
+ },
+ {
+ "coord": [
+ 120.17132865905,
+ 30.23828751903
+ ],
+ "elevation": 60.2
+ },
+ {
+ "coord": [
+ 120.17120341475,
+ 30.238250952102
+ ],
+ "elevation": 60.7
+ },
+ {
+ "coord": [
+ 120.17099240507,
+ 30.238484460376
+ ],
+ "elevation": 61.7
+ },
+ {
+ "coord": [
+ 120.17090966964,
+ 30.238501875347
+ ],
+ "elevation": 61.7
+ },
+ {
+ "coord": [
+ 120.17007527349,
+ 30.237913108089
+ ],
+ "elevation": 60.2
+ },
+ {
+ "coord": [
+ 120.17000993349,
+ 30.237620459321
+ ],
+ "elevation": 66.5
+ },
+ {
+ "coord": [
+ 120.16994589954,
+ 30.236968821035
+ ],
+ "elevation": 77
+ },
+ {
+ "coord": [
+ 120.17004025162,
+ 30.236232971486
+ ],
+ "elevation": 79.9
+ },
+ {
+ "coord": [
+ 120.17001897318,
+ 30.236184979075
+ ],
+ "elevation": 79
+ },
+ {
+ "coord": [
+ 120.16913691293,
+ 30.235987301091
+ ],
+ "elevation": 78
+ },
+ {
+ "coord": [
+ 120.17009487216,
+ 30.236119045607
+ ],
+ "elevation": 80.9
+ },
+ {
+ "coord": [
+ 120.17011551251,
+ 30.236062314186
+ ],
+ "elevation": 82.3
+ },
+ {
+ "coord": [
+ 120.17003536415,
+ 30.235941631511
+ ],
+ "elevation": 85.7
+ },
+ {
+ "coord": [
+ 120.16977910994,
+ 30.235872874335
+ ],
+ "elevation": 85.2
+ },
+ {
+ "coord": [
+ 120.16959850753,
+ 30.235770764621
+ ],
+ "elevation": 83.8
+ },
+ {
+ "coord": [
+ 120.16923195801,
+ 30.235698008657
+ ],
+ "elevation": 93.4
+ },
+ {
+ "coord": [
+ 120.1690006522,
+ 30.235547876859
+ ],
+ "elevation": 89.1
+ },
+ {
+ "coord": [
+ 120.1689428563,
+ 30.235468699235
+ ],
+ "elevation": 90.5
+ },
+ {
+ "coord": [
+ 120.16911760773,
+ 30.235398800456
+ ],
+ "elevation": 91.5
+ },
+ {
+ "coord": [
+ 120.16959498634,
+ 30.235481306265
+ ],
+ "elevation": 90
+ },
+ {
+ "coord": [
+ 120.1699701098,
+ 30.235420255318
+ ],
+ "elevation": 91.5
+ },
+ {
+ "coord": [
+ 120.17028390772,
+ 30.235302366745
+ ],
+ "elevation": 91.9
+ },
+ {
+ "coord": [
+ 120.17078672569,
+ 30.235315953719
+ ],
+ "elevation": 89.1
+ },
+ {
+ "coord": [
+ 120.17106868216,
+ 30.235254017826
+ ],
+ "elevation": 86.2
+ },
+ {
+ "coord": [
+ 120.17136709871,
+ 30.235041597883
+ ],
+ "elevation": 82.3
+ },
+ {
+ "coord": [
+ 120.17164574277,
+ 30.234958110855
+ ],
+ "elevation": 76.1
+ },
+ {
+ "coord": [
+ 120.17171098001,
+ 30.234859298834
+ ],
+ "elevation": 72.2
+ },
+ {
+ "coord": [
+ 120.17180478548,
+ 30.234749804003
+ ],
+ "elevation": 69.8
+ },
+ {
+ "coord": [
+ 120.17234401546,
+ 30.234534446913
+ ],
+ "elevation": 59.7
+ },
+ {
+ "coord": [
+ 120.17246693354,
+ 30.234429238361
+ ],
+ "elevation": 42
+ },
+ {
+ "coord": [
+ 120.17254347336,
+ 30.234188960835
+ ],
+ "elevation": 47.2
+ },
+ {
+ "coord": [
+ 120.17295413025,
+ 30.233226609001
+ ],
+ "elevation": 65.5
+ },
+ {
+ "coord": [
+ 120.17291984702,
+ 30.233230287016
+ ],
+ "elevation": 65
+ },
+ {
+ "coord": [
+ 120.17305714494,
+ 30.233084256957
+ ],
+ "elevation": 62.6
+ },
+ {
+ "coord": [
+ 120.17312222214,
+ 30.232798843861
+ ],
+ "elevation": 56.4
+ },
+ {
+ "coord": [
+ 120.17335366162,
+ 30.232653329936
+ ],
+ "elevation": 47.2
+ },
+ {
+ "coord": [
+ 120.17343545224,
+ 30.232515875222
+ ],
+ "elevation": 43.4
+ },
+ {
+ "coord": [
+ 120.17366657394,
+ 30.232327822551
+ ],
+ "elevation": 35.7
+ },
+ {
+ "coord": [
+ 120.17402532027,
+ 30.232189076084
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.17412971432,
+ 30.232092918404
+ ],
+ "elevation": 26.6
+ },
+ {
+ "coord": [
+ 120.17414105725,
+ 30.231626929987
+ ],
+ "elevation": 28.5
+ },
+ {
+ "coord": [
+ 120.17411001967,
+ 30.231595268203
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.17420919944,
+ 30.231438129988
+ ],
+ "elevation": 43.9
+ },
+ {
+ "coord": [
+ 120.1737548658,
+ 30.231442007036
+ ],
+ "elevation": 35.2
+ },
+ {
+ "coord": [
+ 120.173444291,
+ 30.231626375671
+ ],
+ "elevation": 29.5
+ },
+ {
+ "coord": [
+ 120.17309839627,
+ 30.231903768567
+ ],
+ "elevation": 28
+ },
+ {
+ "coord": [
+ 120.17369758217,
+ 30.231606555952
+ ],
+ "elevation": 21.8
+ },
+ {
+ "coord": [
+ 120.17386678501,
+ 30.231575006714
+ ],
+ "elevation": 21.3
+ },
+ {
+ "coord": [
+ 120.17415873373,
+ 30.231618046394
+ ],
+ "elevation": 22.2
+ },
+ {
+ "coord": [
+ 120.17422918438,
+ 30.231605579637
+ ],
+ "elevation": 22.2
+ },
+ {
+ "coord": [
+ 120.17416195111,
+ 30.23155533466
+ ],
+ "elevation": 18.4
+ },
+ {
+ "coord": [
+ 120.17442772583,
+ 30.23154284162
+ ],
+ "elevation": 17.9
+ },
+ {
+ "coord": [
+ 120.17471315032,
+ 30.231634647569
+ ],
+ "elevation": 18.4
+ },
+ {
+ "coord": [
+ 120.17497648621,
+ 30.23167330519
+ ],
+ "elevation": 21.3
+ },
+ {
+ "coord": [
+ 120.17494869854,
+ 30.231616083744
+ ],
+ "elevation": 19.8
+ },
+ {
+ "coord": [
+ 120.17504015987,
+ 30.231344325502
+ ],
+ "elevation": 19.4
+ },
+ {
+ "coord": [
+ 120.17494884986,
+ 30.231088635756
+ ],
+ "elevation": 18.4
+ },
+ {
+ "coord": [
+ 120.17495759008,
+ 30.231137650611
+ ],
+ "elevation": 18.4
+ },
+ {
+ "coord": [
+ 120.17483658728,
+ 30.231192949758
+ ],
+ "elevation": 18.4
+ },
+ {
+ "coord": [
+ 120.17482641008,
+ 30.231407403004
+ ],
+ "elevation": 20.3
+ },
+ {
+ "coord": [
+ 120.17471466472,
+ 30.231478078949
+ ],
+ "elevation": 20.8
+ },
+ {
+ "coord": [
+ 120.17441655175,
+ 30.23151529179
+ ],
+ "elevation": 19.4
+ },
+ {
+ "coord": [
+ 120.17445791533,
+ 30.231534636423
+ ],
+ "elevation": 19.4
+ },
+ {
+ "coord": [
+ 120.17402045269,
+ 30.231513541369
+ ],
+ "elevation": 17.4
+ },
+ {
+ "coord": [
+ 120.17375031279,
+ 30.231538379124
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.17367325302,
+ 30.23145381686
+ ],
+ "elevation": 21.3
+ },
+ {
+ "coord": [
+ 120.17371140044,
+ 30.231530152652
+ ],
+ "elevation": 22.7
+ },
+ {
+ "coord": [
+ 120.17355348922,
+ 30.231387128996
+ ],
+ "elevation": 22.2
+ },
+ {
+ "coord": [
+ 120.17342748385,
+ 30.231346030726
+ ],
+ "elevation": 20.3
+ },
+ {
+ "coord": [
+ 120.1730547254,
+ 30.231364915334
+ ],
+ "elevation": 20.8
+ },
+ {
+ "coord": [
+ 120.1725726854,
+ 30.231205659642
+ ],
+ "elevation": 29
+ },
+ {
+ "coord": [
+ 120.17244661508,
+ 30.2311074055
+ ],
+ "elevation": 26.6
+ },
+ {
+ "coord": [
+ 120.1721583668,
+ 30.231042443721
+ ],
+ "elevation": 25.6
+ },
+ {
+ "coord": [
+ 120.17173632305,
+ 30.23077635096
+ ],
+ "elevation": 35.7
+ },
+ {
+ "coord": [
+ 120.17201382144,
+ 30.230999816106
+ ],
+ "elevation": 37.6
+ },
+ {
+ "coord": [
+ 120.17183694416,
+ 30.231038751199
+ ],
+ "elevation": 38.6
+ },
+ {
+ "coord": [
+ 120.17154214863,
+ 30.230996249148
+ ],
+ "elevation": 42.9
+ },
+ {
+ "coord": [
+ 120.17119705965,
+ 30.231060573624
+ ],
+ "elevation": 47.2
+ },
+ {
+ "coord": [
+ 120.1710544794,
+ 30.231132783852
+ ],
+ "elevation": 51.6
+ },
+ {
+ "coord": [
+ 120.17037941758,
+ 30.231190711568
+ ],
+ "elevation": 66.9
+ },
+ {
+ "coord": [
+ 120.17030811457,
+ 30.231221834354
+ ],
+ "elevation": 70.3
+ },
+ {
+ "coord": [
+ 120.16998737683,
+ 30.231543846304
+ ],
+ "elevation": 95.8
+ },
+ {
+ "coord": [
+ 120.16974401607,
+ 30.231593750701
+ ],
+ "elevation": 101.1
+ },
+ {
+ "coord": [
+ 120.16955351467,
+ 30.231707222053
+ ],
+ "elevation": 106.8
+ },
+ {
+ "coord": [
+ 120.16911458032,
+ 30.231682220652
+ ],
+ "elevation": 109.2
+ },
+ {
+ "coord": [
+ 120.16903673628,
+ 30.231723536161
+ ],
+ "elevation": 110.7
+ },
+ {
+ "coord": [
+ 120.16854427282,
+ 30.231536147801
+ ],
+ "elevation": 114.1
+ },
+ {
+ "coord": [
+ 120.16772414141,
+ 30.231332569257
+ ],
+ "elevation": 115.5
+ },
+ {
+ "coord": [
+ 120.16743743589,
+ 30.231067933393
+ ],
+ "elevation": 114.5
+ },
+ {
+ "coord": [
+ 120.1667139841,
+ 30.230628038383
+ ],
+ "elevation": 130.4
+ },
+ {
+ "coord": [
+ 120.1667611642,
+ 30.230710027379
+ ],
+ "elevation": 129.9
+ },
+ {
+ "coord": [
+ 120.16685050461,
+ 30.230711298168
+ ],
+ "elevation": 129.9
+ },
+ {
+ "coord": [
+ 120.16664497719,
+ 30.230494854026
+ ],
+ "elevation": 131.8
+ },
+ {
+ "coord": [
+ 120.16665352494,
+ 30.230255141315
+ ],
+ "elevation": 133.3
+ },
+ {
+ "coord": [
+ 120.16658179658,
+ 30.230123360346
+ ],
+ "elevation": 133.3
+ },
+ {
+ "coord": [
+ 120.16658334505,
+ 30.229999071805
+ ],
+ "elevation": 133.8
+ },
+ {
+ "coord": [
+ 120.16665018747,
+ 30.229759498846
+ ],
+ "elevation": 133.8
+ },
+ {
+ "coord": [
+ 120.16660351868,
+ 30.229624326954
+ ],
+ "elevation": 132.3
+ },
+ {
+ "coord": [
+ 120.1665385937,
+ 30.229478872079
+ ],
+ "elevation": 131.8
+ },
+ {
+ "coord": [
+ 120.1661229088,
+ 30.229043436045
+ ],
+ "elevation": 132.8
+ },
+ {
+ "coord": [
+ 120.16595517392,
+ 30.228720086738
+ ],
+ "elevation": 135.7
+ },
+ {
+ "coord": [
+ 120.16589550951,
+ 30.228708052176
+ ],
+ "elevation": 136.2
+ },
+ {
+ "coord": [
+ 120.16579519167,
+ 30.228594681028
+ ],
+ "elevation": 138.6
+ },
+ {
+ "coord": [
+ 120.16545822281,
+ 30.2281691938
+ ],
+ "elevation": 131.4
+ },
+ {
+ "coord": [
+ 120.16483174896,
+ 30.227905764366
+ ],
+ "elevation": 134.2
+ },
+ {
+ "coord": [
+ 120.16478892341,
+ 30.227817776002
+ ],
+ "elevation": 132.3
+ },
+ {
+ "coord": [
+ 120.16440917885,
+ 30.227427628655
+ ],
+ "elevation": 136.6
+ },
+ {
+ "coord": [
+ 120.16431041501,
+ 30.22718976465
+ ],
+ "elevation": 137.6
+ },
+ {
+ "coord": [
+ 120.16442798771,
+ 30.226966622671
+ ],
+ "elevation": 136.6
+ },
+ {
+ "coord": [
+ 120.1643969927,
+ 30.226588682315
+ ],
+ "elevation": 141.9
+ },
+ {
+ "coord": [
+ 120.16429789669,
+ 30.226221142727
+ ],
+ "elevation": 144.3
+ },
+ {
+ "coord": [
+ 120.16419020405,
+ 30.226080568029
+ ],
+ "elevation": 143.4
+ },
+ {
+ "coord": [
+ 120.16424087898,
+ 30.226077521522
+ ],
+ "elevation": 136.2
+ },
+ {
+ "coord": [
+ 120.16398531802,
+ 30.225547208946
+ ],
+ "elevation": 149.6
+ },
+ {
+ "coord": [
+ 120.16379590569,
+ 30.225443884387
+ ],
+ "elevation": 150.1
+ },
+ {
+ "coord": [
+ 120.1634861261,
+ 30.22547942001
+ ],
+ "elevation": 144.3
+ },
+ {
+ "coord": [
+ 120.1632280781,
+ 30.225451676202
+ ],
+ "elevation": 135.7
+ },
+ {
+ "coord": [
+ 120.16301218937,
+ 30.225279145962
+ ],
+ "elevation": 130.4
+ },
+ {
+ "coord": [
+ 120.16288347645,
+ 30.225068999115
+ ],
+ "elevation": 133.8
+ },
+ {
+ "coord": [
+ 120.16268446591,
+ 30.224867435002
+ ],
+ "elevation": 141
+ },
+ {
+ "coord": [
+ 120.16243186077,
+ 30.224858923089
+ ],
+ "elevation": 138.1
+ },
+ {
+ "coord": [
+ 120.16239369377,
+ 30.224820810245
+ ],
+ "elevation": 137.1
+ },
+ {
+ "coord": [
+ 120.16196803181,
+ 30.224786677711
+ ],
+ "elevation": 139
+ },
+ {
+ "coord": [
+ 120.16185628091,
+ 30.224735247701
+ ],
+ "elevation": 139.5
+ },
+ {
+ "coord": [
+ 120.1617771654,
+ 30.224538899332
+ ],
+ "elevation": 137.6
+ },
+ {
+ "coord": [
+ 120.16163538804,
+ 30.224374887155
+ ],
+ "elevation": 139.5
+ },
+ {
+ "coord": [
+ 120.16132367446,
+ 30.22383062468
+ ],
+ "elevation": 128
+ },
+ {
+ "coord": [
+ 120.16094011305,
+ 30.223515591173
+ ],
+ "elevation": 118.9
+ },
+ {
+ "coord": [
+ 120.16049444617,
+ 30.223290446474
+ ],
+ "elevation": 118.4
+ },
+ {
+ "coord": [
+ 120.16043916191,
+ 30.223392113416
+ ],
+ "elevation": 116.9
+ },
+ {
+ "coord": [
+ 120.16048884872,
+ 30.223612034973
+ ],
+ "elevation": 107.3
+ },
+ {
+ "coord": [
+ 120.16041499594,
+ 30.223618818792
+ ],
+ "elevation": 105.4
+ },
+ {
+ "coord": [
+ 120.16013288409,
+ 30.223514411892
+ ],
+ "elevation": 99.2
+ },
+ {
+ "coord": [
+ 120.16012531474,
+ 30.223669461764
+ ],
+ "elevation": 102.5
+ },
+ {
+ "coord": [
+ 120.15993317538,
+ 30.2236640571
+ ],
+ "elevation": 101.1
+ },
+ {
+ "coord": [
+ 120.15982930363,
+ 30.223575636213
+ ],
+ "elevation": 99.2
+ },
+ {
+ "coord": [
+ 120.1593599138,
+ 30.223381408871
+ ],
+ "elevation": 96.7
+ },
+ {
+ "coord": [
+ 120.1591319744,
+ 30.223136597575
+ ],
+ "elevation": 85.7
+ },
+ {
+ "coord": [
+ 120.15912372694,
+ 30.222943860767
+ ],
+ "elevation": 81.8
+ },
+ {
+ "coord": [
+ 120.15908388681,
+ 30.222809226636
+ ],
+ "elevation": 78
+ },
+ {
+ "coord": [
+ 120.15895657731,
+ 30.222722613097
+ ],
+ "elevation": 70.3
+ },
+ {
+ "coord": [
+ 120.15889064241,
+ 30.222782712336
+ ],
+ "elevation": 75.1
+ },
+ {
+ "coord": [
+ 120.1586870363,
+ 30.222745544218
+ ],
+ "elevation": 85.2
+ },
+ {
+ "coord": [
+ 120.15859517807,
+ 30.222719044383
+ ],
+ "elevation": 86.2
+ },
+ {
+ "coord": [
+ 120.1586521355,
+ 30.22270414514
+ ],
+ "elevation": 84.3
+ },
+ {
+ "coord": [
+ 120.15847330131,
+ 30.222583775269
+ ],
+ "elevation": 84.3
+ },
+ {
+ "coord": [
+ 120.15830159497,
+ 30.22258481452
+ ],
+ "elevation": 82.3
+ },
+ {
+ "coord": [
+ 120.15794015042,
+ 30.222465970935
+ ],
+ "elevation": 79
+ },
+ {
+ "coord": [
+ 120.15747017729,
+ 30.222194536705
+ ],
+ "elevation": 85.2
+ },
+ {
+ "coord": [
+ 120.15742105698,
+ 30.222005825975
+ ],
+ "elevation": 88.6
+ },
+ {
+ "coord": [
+ 120.15725341525,
+ 30.221941149287
+ ],
+ "elevation": 83.8
+ },
+ {
+ "coord": [
+ 120.15709414075,
+ 30.221604755946
+ ],
+ "elevation": 91.9
+ },
+ {
+ "coord": [
+ 120.15721961814,
+ 30.221940427197
+ ],
+ "elevation": 86.7
+ },
+ {
+ "coord": [
+ 120.15735754964,
+ 30.22199942145
+ ],
+ "elevation": 88.1
+ },
+ {
+ "coord": [
+ 120.15746036793,
+ 30.222202588169
+ ],
+ "elevation": 89.1
+ },
+ {
+ "coord": [
+ 120.15748084547,
+ 30.222312077026
+ ],
+ "elevation": 91.5
+ },
+ {
+ "coord": [
+ 120.15744709982,
+ 30.222464904814
+ ],
+ "elevation": 98.7
+ },
+ {
+ "coord": [
+ 120.15722574641,
+ 30.222350232773
+ ],
+ "elevation": 101.1
+ },
+ {
+ "coord": [
+ 120.15699482841,
+ 30.222157339225
+ ],
+ "elevation": 102.5
+ },
+ {
+ "coord": [
+ 120.15684459552,
+ 30.221986263167
+ ],
+ "elevation": 107.3
+ },
+ {
+ "coord": [
+ 120.15665731725,
+ 30.221883163626
+ ],
+ "elevation": 106.8
+ },
+ {
+ "coord": [
+ 120.15617538211,
+ 30.221700414235
+ ],
+ "elevation": 113.6
+ },
+ {
+ "coord": [
+ 120.15609718125,
+ 30.22177621619
+ ],
+ "elevation": 115.5
+ },
+ {
+ "coord": [
+ 120.15594620452,
+ 30.221839820157
+ ],
+ "elevation": 116.5
+ },
+ {
+ "coord": [
+ 120.15551879273,
+ 30.221690765702
+ ],
+ "elevation": 118.4
+ },
+ {
+ "coord": [
+ 120.15524862552,
+ 30.22146442285
+ ],
+ "elevation": 122.2
+ },
+ {
+ "coord": [
+ 120.15510548309,
+ 30.221279374149
+ ],
+ "elevation": 128
+ },
+ {
+ "coord": [
+ 120.15468732641,
+ 30.221048740394
+ ],
+ "elevation": 132.8
+ },
+ {
+ "coord": [
+ 120.1546783148,
+ 30.220982172435
+ ],
+ "elevation": 138.6
+ },
+ {
+ "coord": [
+ 120.15453137687,
+ 30.220851717788
+ ],
+ "elevation": 143.4
+ },
+ {
+ "coord": [
+ 120.15441665888,
+ 30.220950167406
+ ],
+ "elevation": 150.6
+ },
+ {
+ "coord": [
+ 120.15399118478,
+ 30.220839822351
+ ],
+ "elevation": 153.5
+ },
+ {
+ "coord": [
+ 120.15371015228,
+ 30.220679838805
+ ],
+ "elevation": 165.5
+ },
+ {
+ "coord": [
+ 120.15367712391,
+ 30.220466680264
+ ],
+ "elevation": 168.4
+ },
+ {
+ "coord": [
+ 120.15358254352,
+ 30.220430457482
+ ],
+ "elevation": 171.3
+ },
+ {
+ "coord": [
+ 120.15357461955,
+ 30.220341623452
+ ],
+ "elevation": 176.1
+ },
+ {
+ "coord": [
+ 120.15361659561,
+ 30.220362275302
+ ],
+ "elevation": 177
+ },
+ {
+ "coord": [
+ 120.15360134113,
+ 30.220396740428
+ ],
+ "elevation": 177
+ },
+ {
+ "coord": [
+ 120.15333096852,
+ 30.220340175062
+ ],
+ "elevation": 176.1
+ },
+ {
+ "coord": [
+ 120.15316145692,
+ 30.22037044244
+ ],
+ "elevation": 183.3
+ },
+ {
+ "coord": [
+ 120.15290415422,
+ 30.220238470827
+ ],
+ "elevation": 188.6
+ },
+ {
+ "coord": [
+ 120.15279759541,
+ 30.220245591138
+ ],
+ "elevation": 194.8
+ },
+ {
+ "coord": [
+ 120.15264958556,
+ 30.22012868237
+ ],
+ "elevation": 198.2
+ },
+ {
+ "coord": [
+ 120.15260080894,
+ 30.220157793617
+ ],
+ "elevation": 206.8
+ },
+ {
+ "coord": [
+ 120.15260082289,
+ 30.220222087489
+ ],
+ "elevation": 213.6
+ },
+ {
+ "coord": [
+ 120.15262915491,
+ 30.220171107363
+ ],
+ "elevation": 214.5
+ },
+ {
+ "coord": [
+ 120.15262291374,
+ 30.220294384909
+ ],
+ "elevation": 217.9
+ },
+ {
+ "coord": [
+ 120.15252644099,
+ 30.220306197175
+ ],
+ "elevation": 216.4
+ },
+ {
+ "coord": [
+ 120.15248391156,
+ 30.220238344247
+ ],
+ "elevation": 213.6
+ },
+ {
+ "coord": [
+ 120.15237325545,
+ 30.220192359545
+ ],
+ "elevation": 213.6
+ },
+ {
+ "coord": [
+ 120.15189823295,
+ 30.220122653907
+ ],
+ "elevation": 215.5
+ },
+ {
+ "coord": [
+ 120.15152782849,
+ 30.219855674253
+ ],
+ "elevation": 215.5
+ },
+ {
+ "coord": [
+ 120.15124875657,
+ 30.219748151242
+ ],
+ "elevation": 213.1
+ },
+ {
+ "coord": [
+ 120.1510743327,
+ 30.219644417979
+ ],
+ "elevation": 205.9
+ },
+ {
+ "coord": [
+ 120.15096479466,
+ 30.219689797922
+ ],
+ "elevation": 203.5
+ },
+ {
+ "coord": [
+ 120.15089478541,
+ 30.219813677657
+ ],
+ "elevation": 201.5
+ },
+ {
+ "coord": [
+ 120.15068445346,
+ 30.22000192816
+ ],
+ "elevation": 196.2
+ },
+ {
+ "coord": [
+ 120.15061716499,
+ 30.220089944755
+ ],
+ "elevation": 197.7
+ },
+ {
+ "coord": [
+ 120.15039783375,
+ 30.220214045421
+ ],
+ "elevation": 195.8
+ },
+ {
+ "coord": [
+ 120.15033052256,
+ 30.220186490238
+ ],
+ "elevation": 189
+ },
+ {
+ "coord": [
+ 120.15006068622,
+ 30.219825601364
+ ],
+ "elevation": 174.1
+ },
+ {
+ "coord": [
+ 120.14995386551,
+ 30.219787887938
+ ],
+ "elevation": 168.8
+ },
+ {
+ "coord": [
+ 120.1497581926,
+ 30.219615556901
+ ],
+ "elevation": 156.8
+ },
+ {
+ "coord": [
+ 120.14967750939,
+ 30.219447429217
+ ],
+ "elevation": 151.5
+ },
+ {
+ "coord": [
+ 120.14892571217,
+ 30.219068305685
+ ],
+ "elevation": 130.9
+ },
+ {
+ "coord": [
+ 120.14896274739,
+ 30.218942603503
+ ],
+ "elevation": 128
+ },
+ {
+ "coord": [
+ 120.14893712882,
+ 30.218890962839
+ ],
+ "elevation": 124.6
+ },
+ {
+ "coord": [
+ 120.14846770655,
+ 30.218965259385
+ ],
+ "elevation": 113.1
+ },
+ {
+ "coord": [
+ 120.14810213285,
+ 30.219226241627
+ ],
+ "elevation": 108.3
+ },
+ {
+ "coord": [
+ 120.14802643243,
+ 30.21944211149
+ ],
+ "elevation": 99.2
+ },
+ {
+ "coord": [
+ 120.14805757521,
+ 30.219903573372
+ ],
+ "elevation": 90.5
+ },
+ {
+ "coord": [
+ 120.14786227816,
+ 30.220081321338
+ ],
+ "elevation": 86.7
+ },
+ {
+ "coord": [
+ 120.14769120459,
+ 30.220127887129
+ ],
+ "elevation": 79
+ },
+ {
+ "coord": [
+ 120.14751225434,
+ 30.220268978908
+ ],
+ "elevation": 76.6
+ },
+ {
+ "coord": [
+ 120.14737033845,
+ 30.220326968089
+ ],
+ "elevation": 71.3
+ },
+ {
+ "coord": [
+ 120.14675769673,
+ 30.220300768889
+ ],
+ "elevation": 60.2
+ },
+ {
+ "coord": [
+ 120.14636707218,
+ 30.220202977481
+ ],
+ "elevation": 56.9
+ },
+ {
+ "coord": [
+ 120.14617990815,
+ 30.220006073488
+ ],
+ "elevation": 49.2
+ },
+ {
+ "coord": [
+ 120.14587808661,
+ 30.21981994223
+ ],
+ "elevation": 41.5
+ },
+ {
+ "coord": [
+ 120.14602239057,
+ 30.219546076642
+ ],
+ "elevation": 34.3
+ },
+ {
+ "coord": [
+ 120.1458979721,
+ 30.21983508708
+ ],
+ "elevation": 39.6
+ },
+ {
+ "coord": [
+ 120.14583313978,
+ 30.219783495146
+ ],
+ "elevation": 39.1
+ },
+ {
+ "coord": [
+ 120.14574077131,
+ 30.219574997039
+ ],
+ "elevation": 47.2
+ },
+ {
+ "coord": [
+ 120.14579713117,
+ 30.219468299445
+ ],
+ "elevation": 47.7
+ },
+ {
+ "coord": [
+ 120.14571135654,
+ 30.219574651402
+ ],
+ "elevation": 51.1
+ },
+ {
+ "coord": [
+ 120.14554001923,
+ 30.21942436772
+ ],
+ "elevation": 51.1
+ },
+ {
+ "coord": [
+ 120.14547707024,
+ 30.219204541168
+ ],
+ "elevation": 52.5
+ },
+ {
+ "coord": [
+ 120.14548358099,
+ 30.219037602055
+ ],
+ "elevation": 55.9
+ },
+ {
+ "coord": [
+ 120.14504781382,
+ 30.218895229108
+ ],
+ "elevation": 58.8
+ },
+ {
+ "coord": [
+ 120.14508185854,
+ 30.218916130157
+ ],
+ "elevation": 61.2
+ },
+ {
+ "coord": [
+ 120.14502195805,
+ 30.21900522738
+ ],
+ "elevation": 60.7
+ },
+ {
+ "coord": [
+ 120.14490568495,
+ 30.219085158787
+ ],
+ "elevation": 63.1
+ },
+ {
+ "coord": [
+ 120.14491986045,
+ 30.219179073001
+ ],
+ "elevation": 58.8
+ },
+ {
+ "coord": [
+ 120.14471865767,
+ 30.219456169343
+ ],
+ "elevation": 45.8
+ },
+ {
+ "coord": [
+ 120.14465167022,
+ 30.219474831022
+ ],
+ "elevation": 45.8
+ },
+ {
+ "coord": [
+ 120.14460291425,
+ 30.219409114473
+ ],
+ "elevation": 45.3
+ },
+ {
+ "coord": [
+ 120.1443243435,
+ 30.219429361901
+ ],
+ "elevation": 37.6
+ },
+ {
+ "coord": [
+ 120.14418195051,
+ 30.219553317562
+ ],
+ "elevation": 34.7
+ },
+ {
+ "coord": [
+ 120.14403300987,
+ 30.219585938162
+ ],
+ "elevation": 32.8
+ },
+ {
+ "coord": [
+ 120.1437138787,
+ 30.219526122854
+ ],
+ "elevation": 29.5
+ },
+ {
+ "coord": [
+ 120.14311108309,
+ 30.219559611449
+ ],
+ "elevation": 24.7
+ },
+ {
+ "coord": [
+ 120.14248737074,
+ 30.219519648455
+ ],
+ "elevation": 27.1
+ },
+ {
+ "coord": [
+ 120.14238070547,
+ 30.219783196584
+ ],
+ "elevation": 23.7
+ },
+ {
+ "coord": [
+ 120.14236937331,
+ 30.220292279186
+ ],
+ "elevation": 22.2
+ },
+ {
+ "coord": [
+ 120.14239092224,
+ 30.220491643022
+ ],
+ "elevation": 21.3
+ },
+ {
+ "coord": [
+ 120.14237243272,
+ 30.22058793531
+ ],
+ "elevation": 20.3
+ },
+ {
+ "coord": [
+ 120.1422039783,
+ 30.220799163237
+ ],
+ "elevation": 21.3
+ },
+ {
+ "coord": [
+ 120.1421648402,
+ 30.221047658548
+ ],
+ "elevation": 22.2
+ },
+ {
+ "coord": [
+ 120.14206556278,
+ 30.221355578956
+ ],
+ "elevation": 22.7
+ },
+ {
+ "coord": [
+ 120.14204890528,
+ 30.222122196459
+ ],
+ "elevation": 27.5
+ },
+ {
+ "coord": [
+ 120.14198309766,
+ 30.222335789551
+ ],
+ "elevation": 21.3
+ },
+ {
+ "coord": [
+ 120.14201197635,
+ 30.222413797062
+ ],
+ "elevation": 20.8
+ },
+ {
+ "coord": [
+ 120.14199623896,
+ 30.222569733525
+ ],
+ "elevation": 22.2
+ },
+ {
+ "coord": [
+ 120.14189779717,
+ 30.222855934212
+ ],
+ "elevation": 27.5
+ },
+ {
+ "coord": [
+ 120.14172006264,
+ 30.222886288221
+ ],
+ "elevation": 25.6
+ },
+ {
+ "coord": [
+ 120.14153659146,
+ 30.222840193109
+ ],
+ "elevation": 24.7
+ },
+ {
+ "coord": [
+ 120.14123451919,
+ 30.222970082549
+ ],
+ "elevation": 24.7
+ },
+ {
+ "coord": [
+ 120.14101084962,
+ 30.223112455058
+ ],
+ "elevation": 25.6
+ },
+ {
+ "coord": [
+ 120.140920802,
+ 30.223214544949
+ ],
+ "elevation": 26.1
+ },
+ {
+ "coord": [
+ 120.14007683692,
+ 30.22373986171
+ ],
+ "elevation": 29.5
+ },
+ {
+ "coord": [
+ 120.13813180947,
+ 30.225525584048
+ ],
+ "elevation": 31.9
+ },
+ {
+ "coord": [
+ 120.13822776921,
+ 30.225395130004
+ ],
+ "elevation": 31.4
+ },
+ {
+ "coord": [
+ 120.13844366989,
+ 30.225211255301
+ ],
+ "elevation": 30.9
+ },
+ {
+ "coord": [
+ 120.13857558383,
+ 30.22516475031
+ ],
+ "elevation": 27.5
+ },
+ {
+ "coord": [
+ 120.13861144895,
+ 30.22506803712
+ ],
+ "elevation": 42.9
+ },
+ {
+ "coord": [
+ 120.13857007068,
+ 30.225003388789
+ ],
+ "elevation": 42
+ },
+ {
+ "coord": [
+ 120.13867102975,
+ 30.225077948025
+ ],
+ "elevation": 33.8
+ },
+ {
+ "coord": [
+ 120.13861881573,
+ 30.225116517074
+ ],
+ "elevation": 31.9
+ },
+ {
+ "coord": [
+ 120.13858560969,
+ 30.225077279605
+ ],
+ "elevation": 35.7
+ },
+ {
+ "coord": [
+ 120.13871015934,
+ 30.224978753683
+ ],
+ "elevation": 37.1
+ },
+ {
+ "coord": [
+ 120.1383911653,
+ 30.225203425954
+ ],
+ "elevation": 37.6
+ },
+ {
+ "coord": [
+ 120.13805728478,
+ 30.225537512785
+ ],
+ "elevation": 38.1
+ },
+ {
+ "coord": [
+ 120.13763692544,
+ 30.226387621051
+ ],
+ "elevation": 39.1
+ },
+ {
+ "coord": [
+ 120.12690020125,
+ 30.234853836645
+ ],
+ "elevation": 24.7
+ },
+ {
+ "coord": [
+ 120.12680231093,
+ 30.234911672283
+ ],
+ "elevation": 23.2
+ },
+ {
+ "coord": [
+ 120.12654622923,
+ 30.234926392829
+ ],
+ "elevation": 24.2
+ },
+ {
+ "coord": [
+ 120.12517226735,
+ 30.234384365943
+ ],
+ "elevation": 29.5
+ },
+ {
+ "coord": [
+ 120.12365307336,
+ 30.233671064306
+ ],
+ "elevation": 31.4
+ },
+ {
+ "coord": [
+ 120.12331610814,
+ 30.233297844153
+ ],
+ "elevation": 31.4
+ },
+ {
+ "coord": [
+ 120.12309187155,
+ 30.233200277246
+ ],
+ "elevation": 31.4
+ },
+ {
+ "coord": [
+ 120.12275691721,
+ 30.233255566599
+ ],
+ "elevation": 31.4
+ },
+ {
+ "coord": [
+ 120.12219640046,
+ 30.233497323249
+ ],
+ "elevation": 34.3
+ },
+ {
+ "coord": [
+ 120.12133768644,
+ 30.233773427899
+ ],
+ "elevation": 34.7
+ },
+ {
+ "coord": [
+ 120.12110837325,
+ 30.233630908926
+ ],
+ "elevation": 35.7
+ },
+ {
+ "coord": [
+ 120.12110023083,
+ 30.232920551153
+ ],
+ "elevation": 36.2
+ },
+ {
+ "coord": [
+ 120.12046486988,
+ 30.232411874035
+ ],
+ "elevation": 36.7
+ },
+ {
+ "coord": [
+ 120.11869144606,
+ 30.2307475684
+ ],
+ "elevation": 37.1
+ },
+ {
+ "coord": [
+ 120.11808245947,
+ 30.229812275041
+ ],
+ "elevation": 37.1
+ },
+ {
+ "coord": [
+ 120.11800501446,
+ 30.229364534912
+ ],
+ "elevation": 37.1
+ },
+ {
+ "coord": [
+ 120.11836885519,
+ 30.228903465707
+ ],
+ "elevation": 41.5
+ },
+ {
+ "coord": [
+ 120.11883325214,
+ 30.228546656359
+ ],
+ "elevation": 42
+ },
+ {
+ "coord": [
+ 120.11967879578,
+ 30.228293399197
+ ],
+ "elevation": 49.6
+ },
+ {
+ "coord": [
+ 120.11975940388,
+ 30.22812733914
+ ],
+ "elevation": 51.6
+ },
+ {
+ "coord": [
+ 120.11968897585,
+ 30.228104364763
+ ],
+ "elevation": 51.6
+ },
+ {
+ "coord": [
+ 120.11936563369,
+ 30.228118761916
+ ],
+ "elevation": 53
+ },
+ {
+ "coord": [
+ 120.11765926516,
+ 30.227459564773
+ ],
+ "elevation": 58.8
+ },
+ {
+ "coord": [
+ 120.11657244258,
+ 30.226238322381
+ ],
+ "elevation": 69.4
+ },
+ {
+ "coord": [
+ 120.11607870733,
+ 30.225978868179
+ ],
+ "elevation": 81.4
+ },
+ {
+ "coord": [
+ 120.11567187729,
+ 30.225708149135
+ ],
+ "elevation": 88.6
+ },
+ {
+ "coord": [
+ 120.11458648895,
+ 30.225246360955
+ ],
+ "elevation": 90
+ },
+ {
+ "coord": [
+ 120.11365246063,
+ 30.225214323416
+ ],
+ "elevation": 90.5
+ },
+ {
+ "coord": [
+ 120.11342335709,
+ 30.225165767753
+ ],
+ "elevation": 91
+ },
+ {
+ "coord": [
+ 120.11323236644,
+ 30.225050078379
+ ],
+ "elevation": 92.4
+ },
+ {
+ "coord": [
+ 120.11322961782,
+ 30.224951022053
+ ],
+ "elevation": 91.5
+ },
+ {
+ "coord": [
+ 120.11329287487,
+ 30.224888299559
+ ],
+ "elevation": 91.9
+ },
+ {
+ "coord": [
+ 120.11325042096,
+ 30.224902981873
+ ],
+ "elevation": 91.5
+ },
+ {
+ "coord": [
+ 120.11328047569,
+ 30.224982019174
+ ],
+ "elevation": 92.4
+ },
+ {
+ "coord": [
+ 120.11305836947,
+ 30.22481736838
+ ],
+ "elevation": 93.4
+ },
+ {
+ "coord": [
+ 120.11299438298,
+ 30.225058312236
+ ],
+ "elevation": 95.8
+ },
+ {
+ "coord": [
+ 120.11290976258,
+ 30.225113161591
+ ],
+ "elevation": 96.3
+ },
+ {
+ "coord": [
+ 120.11288437779,
+ 30.225191525319
+ ],
+ "elevation": 98.7
+ },
+ {
+ "coord": [
+ 120.11289707641,
+ 30.225166179727
+ ],
+ "elevation": 99.2
+ },
+ {
+ "coord": [
+ 120.11242453672,
+ 30.224894139073
+ ],
+ "elevation": 91.9
+ },
+ {
+ "coord": [
+ 120.11237501923,
+ 30.22481754843
+ ],
+ "elevation": 91.5
+ },
+ {
+ "coord": [
+ 120.11239092998,
+ 30.224718727418
+ ],
+ "elevation": 91.5
+ },
+ {
+ "coord": [
+ 120.11218580651,
+ 30.224336839744
+ ],
+ "elevation": 93.4
+ },
+ {
+ "coord": [
+ 120.11184400664,
+ 30.224254548632
+ ],
+ "elevation": 99.2
+ },
+ {
+ "coord": [
+ 120.11171369784,
+ 30.224281052185
+ ],
+ "elevation": 103.5
+ },
+ {
+ "coord": [
+ 120.11146436433,
+ 30.224138570695
+ ],
+ "elevation": 114.5
+ },
+ {
+ "coord": [
+ 120.11130646179,
+ 30.224099285932
+ ],
+ "elevation": 116.9
+ },
+ {
+ "coord": [
+ 120.1112228741,
+ 30.223974176844
+ ],
+ "elevation": 122.2
+ },
+ {
+ "coord": [
+ 120.11115067614,
+ 30.223933861098
+ ],
+ "elevation": 121.7
+ },
+ {
+ "coord": [
+ 120.11097873316,
+ 30.223914696615
+ ],
+ "elevation": 124.1
+ },
+ {
+ "coord": [
+ 120.11026443873,
+ 30.223621512492
+ ],
+ "elevation": 137.1
+ },
+ {
+ "coord": [
+ 120.10981087176,
+ 30.22357622049
+ ],
+ "elevation": 145.8
+ },
+ {
+ "coord": [
+ 120.10910567964,
+ 30.223399555378
+ ],
+ "elevation": 153.9
+ },
+ {
+ "coord": [
+ 120.10873248983,
+ 30.223445762979
+ ],
+ "elevation": 162.1
+ },
+ {
+ "coord": [
+ 120.10831090319,
+ 30.223362008136
+ ],
+ "elevation": 175.6
+ },
+ {
+ "coord": [
+ 120.10802413264,
+ 30.223160341956
+ ],
+ "elevation": 181.8
+ },
+ {
+ "coord": [
+ 120.10771012316,
+ 30.223064275423
+ ],
+ "elevation": 194.3
+ },
+ {
+ "coord": [
+ 120.1070626302,
+ 30.222685833177
+ ],
+ "elevation": 205.9
+ },
+ {
+ "coord": [
+ 120.10692510397,
+ 30.222657301073
+ ],
+ "elevation": 206.3
+ },
+ {
+ "coord": [
+ 120.10675483171,
+ 30.222450533437
+ ],
+ "elevation": 213.6
+ },
+ {
+ "coord": [
+ 120.10662512668,
+ 30.222362694996
+ ],
+ "elevation": 222.2
+ },
+ {
+ "coord": [
+ 120.10642863146,
+ 30.22206594705
+ ],
+ "elevation": 233.7
+ },
+ {
+ "coord": [
+ 120.10632486639,
+ 30.221974445582
+ ],
+ "elevation": 237.6
+ },
+ {
+ "coord": [
+ 120.10631352961,
+ 30.222005456899
+ ],
+ "elevation": 236.6
+ },
+ {
+ "coord": [
+ 120.10637782292,
+ 30.221999189896
+ ],
+ "elevation": 239.5
+ },
+ {
+ "coord": [
+ 120.10589640751,
+ 30.221919329707
+ ],
+ "elevation": 240
+ },
+ {
+ "coord": [
+ 120.10581669469,
+ 30.221839055058
+ ],
+ "elevation": 242.4
+ },
+ {
+ "coord": [
+ 120.10554763852,
+ 30.221804158814
+ ],
+ "elevation": 247.2
+ },
+ {
+ "coord": [
+ 120.1053892892,
+ 30.221599650985
+ ],
+ "elevation": 251
+ },
+ {
+ "coord": [
+ 120.1053427516,
+ 30.221319711478
+ ],
+ "elevation": 259.2
+ },
+ {
+ "coord": [
+ 120.10513525946,
+ 30.221148536221
+ ],
+ "elevation": 266.4
+ },
+ {
+ "coord": [
+ 120.10496108575,
+ 30.221319458767
+ ],
+ "elevation": 272.7
+ },
+ {
+ "coord": [
+ 120.10469984568,
+ 30.221121281637
+ ],
+ "elevation": 282.3
+ },
+ {
+ "coord": [
+ 120.10457263063,
+ 30.221120717254
+ ],
+ "elevation": 282.8
+ },
+ {
+ "coord": [
+ 120.10446272055,
+ 30.221186910272
+ ],
+ "elevation": 284.7
+ },
+ {
+ "coord": [
+ 120.10436008174,
+ 30.22116804129
+ ],
+ "elevation": 281.8
+ },
+ {
+ "coord": [
+ 120.10425963063,
+ 30.221247139705
+ ],
+ "elevation": 289.5
+ },
+ {
+ "coord": [
+ 120.10416914769,
+ 30.22122874544
+ ],
+ "elevation": 292.4
+ },
+ {
+ "coord": [
+ 120.10413139649,
+ 30.221450269673
+ ],
+ "elevation": 293.8
+ },
+ {
+ "coord": [
+ 120.10391415291,
+ 30.22202973767
+ ],
+ "elevation": 290.9
+ },
+ {
+ "coord": [
+ 120.10364255585,
+ 30.222332334219
+ ],
+ "elevation": 286.6
+ },
+ {
+ "coord": [
+ 120.10351572339,
+ 30.222631769032
+ ],
+ "elevation": 288.5
+ },
+ {
+ "coord": [
+ 120.10333618219,
+ 30.222780241834
+ ],
+ "elevation": 283.7
+ },
+ {
+ "coord": [
+ 120.10327332156,
+ 30.22296116186
+ ],
+ "elevation": 286.6
+ },
+ {
+ "coord": [
+ 120.10339361424,
+ 30.223279890858
+ ],
+ "elevation": 278.9
+ },
+ {
+ "coord": [
+ 120.10332993467,
+ 30.223426615966
+ ],
+ "elevation": 278.4
+ },
+ {
+ "coord": [
+ 120.10309674152,
+ 30.223780305126
+ ],
+ "elevation": 277
+ },
+ {
+ "coord": [
+ 120.10285216554,
+ 30.224007893359
+ ],
+ "elevation": 279.9
+ },
+ {
+ "coord": [
+ 120.10290082795,
+ 30.224138170813
+ ],
+ "elevation": 282.3
+ },
+ {
+ "coord": [
+ 120.10316269673,
+ 30.224579625463
+ ],
+ "elevation": 274.6
+ },
+ {
+ "coord": [
+ 120.10314561465,
+ 30.225032385179
+ ],
+ "elevation": 281.3
+ },
+ {
+ "coord": [
+ 120.10338447216,
+ 30.225304396369
+ ],
+ "elevation": 287.1
+ },
+ {
+ "coord": [
+ 120.10337261843,
+ 30.225366042123
+ ],
+ "elevation": 288.5
+ },
+ {
+ "coord": [
+ 120.10351350276,
+ 30.225744282472
+ ],
+ "elevation": 279.4
+ },
+ {
+ "coord": [
+ 120.10390378349,
+ 30.225806766381
+ ],
+ "elevation": 265
+ },
+ {
+ "coord": [
+ 120.10398699561,
+ 30.225865467281
+ ],
+ "elevation": 265.5
+ },
+ {
+ "coord": [
+ 120.10420727004,
+ 30.226184289353
+ ],
+ "elevation": 263.1
+ },
+ {
+ "coord": [
+ 120.10426712905,
+ 30.226514960317
+ ],
+ "elevation": 257.8
+ },
+ {
+ "coord": [
+ 120.10425575877,
+ 30.226970548909
+ ],
+ "elevation": 256.8
+ },
+ {
+ "coord": [
+ 120.10435823198,
+ 30.227173092222
+ ],
+ "elevation": 258.3
+ },
+ {
+ "coord": [
+ 120.10493352425,
+ 30.227638792686
+ ],
+ "elevation": 270.7
+ },
+ {
+ "coord": [
+ 120.10497816305,
+ 30.227763541845
+ ],
+ "elevation": 266.9
+ },
+ {
+ "coord": [
+ 120.10546945765,
+ 30.228161206234
+ ],
+ "elevation": 289
+ },
+ {
+ "coord": [
+ 120.10620972033,
+ 30.228340148113
+ ],
+ "elevation": 292.9
+ },
+ {
+ "coord": [
+ 120.1063778671,
+ 30.228532833275
+ ],
+ "elevation": 290.9
+ },
+ {
+ "coord": [
+ 120.1070348989,
+ 30.22897870021
+ ],
+ "elevation": 292.4
+ },
+ {
+ "coord": [
+ 120.10749627504,
+ 30.229264976821
+ ],
+ "elevation": 293.8
+ },
+ {
+ "coord": [
+ 120.10774163878,
+ 30.22931171691
+ ],
+ "elevation": 290.9
+ },
+ {
+ "coord": [
+ 120.10797253042,
+ 30.22952912253
+ ],
+ "elevation": 286.6
+ },
+ {
+ "coord": [
+ 120.10805155971,
+ 30.229726238071
+ ],
+ "elevation": 282.8
+ },
+ {
+ "coord": [
+ 120.10810531022,
+ 30.229694244253
+ ],
+ "elevation": 287.6
+ },
+ {
+ "coord": [
+ 120.10805713275,
+ 30.229571678305
+ ],
+ "elevation": 275.1
+ },
+ {
+ "coord": [
+ 120.1081060052,
+ 30.22951736135
+ ],
+ "elevation": 279.9
+ },
+ {
+ "coord": [
+ 120.10835060202,
+ 30.229597918857
+ ],
+ "elevation": 267.9
+ },
+ {
+ "coord": [
+ 120.10890095318,
+ 30.229843684612
+ ],
+ "elevation": 251.5
+ },
+ {
+ "coord": [
+ 120.10972558216,
+ 30.230347765969
+ ],
+ "elevation": 259.7
+ },
+ {
+ "coord": [
+ 120.10993321726,
+ 30.230434332829
+ ],
+ "elevation": 258.7
+ },
+ {
+ "coord": [
+ 120.11026683622,
+ 30.230546809874
+ ],
+ "elevation": 256.3
+ },
+ {
+ "coord": [
+ 120.11067662534,
+ 30.230546051964
+ ],
+ "elevation": 258.7
+ },
+ {
+ "coord": [
+ 120.11082507845,
+ 30.230612680627
+ ],
+ "elevation": 259.7
+ },
+ {
+ "coord": [
+ 120.11086624574,
+ 30.230724486251
+ ],
+ "elevation": 256.3
+ },
+ {
+ "coord": [
+ 120.11129575864,
+ 30.230646502998
+ ],
+ "elevation": 259.2
+ },
+ {
+ "coord": [
+ 120.11169873314,
+ 30.230459244614
+ ],
+ "elevation": 260.2
+ },
+ {
+ "coord": [
+ 120.11219128345,
+ 30.230732896645
+ ],
+ "elevation": 257.3
+ },
+ {
+ "coord": [
+ 120.11239530135,
+ 30.230931116238
+ ],
+ "elevation": 258.3
+ },
+ {
+ "coord": [
+ 120.11254757462,
+ 30.230980518834
+ ],
+ "elevation": 254.4
+ },
+ {
+ "coord": [
+ 120.11293560261,
+ 30.230946271056
+ ],
+ "elevation": 251
+ },
+ {
+ "coord": [
+ 120.1130437222,
+ 30.23087026997
+ ],
+ "elevation": 251
+ },
+ {
+ "coord": [
+ 120.11324690036,
+ 30.230592466286
+ ],
+ "elevation": 250.6
+ },
+ {
+ "coord": [
+ 120.11343426918,
+ 30.230514671732
+ ],
+ "elevation": 247.7
+ },
+ {
+ "coord": [
+ 120.11316935535,
+ 30.230697070803
+ ],
+ "elevation": 245.8
+ },
+ {
+ "coord": [
+ 120.11306751183,
+ 30.230857808196
+ ],
+ "elevation": 246.2
+ },
+ {
+ "coord": [
+ 120.11284312469,
+ 30.230957884013
+ ],
+ "elevation": 244.8
+ },
+ {
+ "coord": [
+ 120.11286438913,
+ 30.231199615439
+ ],
+ "elevation": 245.3
+ },
+ {
+ "coord": [
+ 120.11291911046,
+ 30.231332419076
+ ],
+ "elevation": 244.3
+ },
+ {
+ "coord": [
+ 120.11314299524,
+ 30.2316577449
+ ],
+ "elevation": 244.3
+ },
+ {
+ "coord": [
+ 120.1131407888,
+ 30.232328681938
+ ],
+ "elevation": 242.4
+ },
+ {
+ "coord": [
+ 120.11317909599,
+ 30.232559493729
+ ],
+ "elevation": 240.9
+ },
+ {
+ "coord": [
+ 120.11316237705,
+ 30.232973864573
+ ],
+ "elevation": 228.5
+ },
+ {
+ "coord": [
+ 120.11329437571,
+ 30.23334716222
+ ],
+ "elevation": 223.6
+ },
+ {
+ "coord": [
+ 120.11341561548,
+ 30.233445473004
+ ],
+ "elevation": 224.1
+ },
+ {
+ "coord": [
+ 120.11351969114,
+ 30.23372182641
+ ],
+ "elevation": 222.2
+ },
+ {
+ "coord": [
+ 120.11374848992,
+ 30.234038430334
+ ],
+ "elevation": 217.4
+ },
+ {
+ "coord": [
+ 120.11383236253,
+ 30.234070064155
+ ],
+ "elevation": 217.4
+ },
+ {
+ "coord": [
+ 120.11378788882,
+ 30.234259743794
+ ],
+ "elevation": 216
+ },
+ {
+ "coord": [
+ 120.11381397419,
+ 30.234405746051
+ ],
+ "elevation": 213.6
+ },
+ {
+ "coord": [
+ 120.11402801965,
+ 30.234846395656
+ ],
+ "elevation": 209.7
+ },
+ {
+ "coord": [
+ 120.11408648744,
+ 30.234896986022
+ ],
+ "elevation": 210.2
+ },
+ {
+ "coord": [
+ 120.11427637895,
+ 30.234901847079
+ ],
+ "elevation": 209.7
+ },
+ {
+ "coord": [
+ 120.1143273634,
+ 30.235056801243
+ ],
+ "elevation": 215.5
+ },
+ {
+ "coord": [
+ 120.11431661645,
+ 30.235143504109
+ ],
+ "elevation": 216
+ },
+ {
+ "coord": [
+ 120.11418989455,
+ 30.235311112115
+ ],
+ "elevation": 219.8
+ },
+ {
+ "coord": [
+ 120.11415360421,
+ 30.235576326733
+ ],
+ "elevation": 224.6
+ },
+ {
+ "coord": [
+ 120.11416884897,
+ 30.235689370005
+ ],
+ "elevation": 219.3
+ },
+ {
+ "coord": [
+ 120.11390410933,
+ 30.235767199332
+ ],
+ "elevation": 246.2
+ },
+ {
+ "coord": [
+ 120.11394943601,
+ 30.235947880285
+ ],
+ "elevation": 264
+ },
+ {
+ "coord": [
+ 120.11406556523,
+ 30.236052584479
+ ],
+ "elevation": 269.3
+ },
+ {
+ "coord": [
+ 120.11391900941,
+ 30.236106254788
+ ],
+ "elevation": 277
+ },
+ {
+ "coord": [
+ 120.11400094199,
+ 30.236388016972
+ ],
+ "elevation": 279.9
+ },
+ {
+ "coord": [
+ 120.1140261005,
+ 30.236391832149
+ ],
+ "elevation": 279.9
+ },
+ {
+ "coord": [
+ 120.11405647591,
+ 30.236483615647
+ ],
+ "elevation": 279.9
+ },
+ {
+ "coord": [
+ 120.11453872558,
+ 30.236728606122
+ ],
+ "elevation": 272.2
+ },
+ {
+ "coord": [
+ 120.11512408001,
+ 30.237251253419
+ ],
+ "elevation": 274.1
+ },
+ {
+ "coord": [
+ 120.11529806815,
+ 30.237277223901
+ ],
+ "elevation": 273.6
+ },
+ {
+ "coord": [
+ 120.11525756087,
+ 30.237361455753
+ ],
+ "elevation": 275.1
+ },
+ {
+ "coord": [
+ 120.11540213813,
+ 30.23747094392
+ ],
+ "elevation": 281.3
+ },
+ {
+ "coord": [
+ 120.11547448469,
+ 30.237587544656
+ ],
+ "elevation": 280.8
+ },
+ {
+ "coord": [
+ 120.11551167352,
+ 30.238016080086
+ ],
+ "elevation": 228.9
+ },
+ {
+ "coord": [
+ 120.11607445668,
+ 30.238565442604
+ ],
+ "elevation": 221.7
+ },
+ {
+ "coord": [
+ 120.11611548596,
+ 30.238746004175
+ ],
+ "elevation": 212.6
+ },
+ {
+ "coord": [
+ 120.11608474486,
+ 30.238861019934
+ ],
+ "elevation": 215
+ },
+ {
+ "coord": [
+ 120.11618759027,
+ 30.238877754299
+ ],
+ "elevation": 214
+ },
+ {
+ "coord": [
+ 120.11624174116,
+ 30.239196544995
+ ],
+ "elevation": 212.6
+ },
+ {
+ "coord": [
+ 120.11670780745,
+ 30.239536563855
+ ],
+ "elevation": 201.1
+ },
+ {
+ "coord": [
+ 120.11664793435,
+ 30.240320156158
+ ],
+ "elevation": 178
+ },
+ {
+ "coord": [
+ 120.11679873357,
+ 30.240934479586
+ ],
+ "elevation": 175.6
+ },
+ {
+ "coord": [
+ 120.11667820245,
+ 30.241390295836
+ ],
+ "elevation": 166.4
+ },
+ {
+ "coord": [
+ 120.11653210589,
+ 30.241711551617
+ ],
+ "elevation": 167.9
+ },
+ {
+ "coord": [
+ 120.11665893367,
+ 30.241886655641
+ ],
+ "elevation": 169.8
+ },
+ {
+ "coord": [
+ 120.11664890872,
+ 30.242149212707
+ ],
+ "elevation": 181.8
+ },
+ {
+ "coord": [
+ 120.11645906437,
+ 30.242013943904
+ ],
+ "elevation": 182.3
+ },
+ {
+ "coord": [
+ 120.11634077838,
+ 30.241988403432
+ ],
+ "elevation": 182.8
+ },
+ {
+ "coord": [
+ 120.11654434947,
+ 30.24205245956
+ ],
+ "elevation": 180.9
+ },
+ {
+ "coord": [
+ 120.11662244435,
+ 30.24220757523
+ ],
+ "elevation": 179.4
+ },
+ {
+ "coord": [
+ 120.1167467968,
+ 30.242339233688
+ ],
+ "elevation": 179.4
+ },
+ {
+ "coord": [
+ 120.11677067671,
+ 30.242675905249
+ ],
+ "elevation": 176.1
+ },
+ {
+ "coord": [
+ 120.11670944514,
+ 30.243151804123
+ ],
+ "elevation": 160.2
+ },
+ {
+ "coord": [
+ 120.11658897609,
+ 30.243385663359
+ ],
+ "elevation": 155.9
+ },
+ {
+ "coord": [
+ 120.11620311547,
+ 30.243698109669
+ ],
+ "elevation": 156.8
+ },
+ {
+ "coord": [
+ 120.11612179204,
+ 30.243826477304
+ ],
+ "elevation": 151.1
+ },
+ {
+ "coord": [
+ 120.11622388216,
+ 30.244166902784
+ ],
+ "elevation": 143.4
+ },
+ {
+ "coord": [
+ 120.1162348525,
+ 30.244311900519
+ ],
+ "elevation": 141
+ },
+ {
+ "coord": [
+ 120.11608026715,
+ 30.244511190585
+ ],
+ "elevation": 132.8
+ },
+ {
+ "coord": [
+ 120.11600451141,
+ 30.244522930923
+ ],
+ "elevation": 132.3
+ },
+ {
+ "coord": [
+ 120.11572664287,
+ 30.24481646762
+ ],
+ "elevation": 127
+ },
+ {
+ "coord": [
+ 120.11541617648,
+ 30.244964439972
+ ],
+ "elevation": 116
+ },
+ {
+ "coord": [
+ 120.1151362966,
+ 30.244839150346
+ ],
+ "elevation": 90
+ },
+ {
+ "coord": [
+ 120.1148970491,
+ 30.245017584011
+ ],
+ "elevation": 88.1
+ },
+ {
+ "coord": [
+ 120.11470634604,
+ 30.245036413764
+ ],
+ "elevation": 84.7
+ },
+ {
+ "coord": [
+ 120.11455962737,
+ 30.245207374613
+ ],
+ "elevation": 80.9
+ },
+ {
+ "coord": [
+ 120.11446821201,
+ 30.245224815012
+ ],
+ "elevation": 75.6
+ },
+ {
+ "coord": [
+ 120.11435359432,
+ 30.245300868838
+ ],
+ "elevation": 64.5
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.13066404048,
+ 30.26802291489
+ ],
+ "elevation": 111.6
+ },
+ {
+ "coord": [
+ 120.13072952994,
+ 30.268129261261
+ ],
+ "elevation": 89.6
+ },
+ {
+ "coord": [
+ 120.13009290265,
+ 30.268423115794
+ ],
+ "elevation": 71.2
+ },
+ {
+ "coord": [
+ 120.12923591874,
+ 30.26865915172
+ ],
+ "elevation": 67.6
+ },
+ {
+ "coord": [
+ 120.12987705187,
+ 30.268415458384
+ ],
+ "elevation": 61.9
+ },
+ {
+ "coord": [
+ 120.13070735748,
+ 30.268358057195
+ ],
+ "elevation": 31.8
+ },
+ {
+ "coord": [
+ 120.12763218182,
+ 30.269327258383
+ ],
+ "elevation": 37.4
+ },
+ {
+ "coord": [
+ 120.12737314621,
+ 30.269591499711
+ ],
+ "elevation": 35.7
+ },
+ {
+ "coord": [
+ 120.12752568882,
+ 30.269740556513
+ ],
+ "elevation": 35.8
+ },
+ {
+ "coord": [
+ 120.12743077681,
+ 30.269907498513
+ ],
+ "elevation": 38.6
+ },
+ {
+ "coord": [
+ 120.12654403314,
+ 30.270383014264
+ ],
+ "elevation": 50.4
+ },
+ {
+ "coord": [
+ 120.12630474485,
+ 30.270284806183
+ ],
+ "elevation": 51.7
+ },
+ {
+ "coord": [
+ 120.1252175262,
+ 30.270650055141
+ ],
+ "elevation": 54.1
+ },
+ {
+ "coord": [
+ 120.1245907444,
+ 30.271182188885
+ ],
+ "elevation": 72.4
+ },
+ {
+ "coord": [
+ 120.12401942486,
+ 30.270960163625
+ ],
+ "elevation": 86.7
+ },
+ {
+ "coord": [
+ 120.12365075601,
+ 30.271021344821
+ ],
+ "elevation": 93.8
+ },
+ {
+ "coord": [
+ 120.12333040562,
+ 30.27121899829
+ ],
+ "elevation": 103.2
+ },
+ {
+ "coord": [
+ 120.1235291387,
+ 30.271379101541
+ ],
+ "elevation": 108.7
+ },
+ {
+ "coord": [
+ 120.12336326723,
+ 30.271461898365
+ ],
+ "elevation": 112.2
+ },
+ {
+ "coord": [
+ 120.12345275113,
+ 30.271592381386
+ ],
+ "elevation": 115.9
+ },
+ {
+ "coord": [
+ 120.12293998613,
+ 30.271846840706
+ ],
+ "elevation": 144.7
+ },
+ {
+ "coord": [
+ 120.12256189431,
+ 30.271768428222
+ ],
+ "elevation": 149.1
+ },
+ {
+ "coord": [
+ 120.12161495823,
+ 30.271198223664
+ ],
+ "elevation": 162.7
+ },
+ {
+ "coord": [
+ 120.12073169988,
+ 30.270940304353
+ ],
+ "elevation": 170.1
+ },
+ {
+ "coord": [
+ 120.12028001294,
+ 30.270457790168
+ ],
+ "elevation": 185.2
+ },
+ {
+ "coord": [
+ 120.11986799824,
+ 30.269459611656
+ ],
+ "elevation": 179.6
+ },
+ {
+ "coord": [
+ 120.11936198125,
+ 30.269095721613
+ ],
+ "elevation": 173.9
+ },
+ {
+ "coord": [
+ 120.11813186388,
+ 30.267652005126
+ ],
+ "elevation": 171.3
+ },
+ {
+ "coord": [
+ 120.11774637369,
+ 30.267065848917
+ ],
+ "elevation": 178.2
+ },
+ {
+ "coord": [
+ 120.11754804858,
+ 30.266154785321
+ ],
+ "elevation": 178.4
+ },
+ {
+ "coord": [
+ 120.11740259837,
+ 30.265974211065
+ ],
+ "elevation": 182.9
+ },
+ {
+ "coord": [
+ 120.11688611353,
+ 30.265860851431
+ ],
+ "elevation": 179.2
+ },
+ {
+ "coord": [
+ 120.11652973018,
+ 30.265441114043
+ ],
+ "elevation": 178.9
+ },
+ {
+ "coord": [
+ 120.11611571643,
+ 30.264529914345
+ ],
+ "elevation": 157.5
+ },
+ {
+ "coord": [
+ 120.11587325837,
+ 30.263198392189
+ ],
+ "elevation": 151.1
+ },
+ {
+ "coord": [
+ 120.11558223252,
+ 30.262551644065
+ ],
+ "elevation": 146.6
+ },
+ {
+ "coord": [
+ 120.11521993468,
+ 30.262126823531
+ ],
+ "elevation": 134.4
+ },
+ {
+ "coord": [
+ 120.11559619753,
+ 30.260856076959
+ ],
+ "elevation": 138.1
+ },
+ {
+ "coord": [
+ 120.11605811871,
+ 30.260171812957
+ ],
+ "elevation": 138.9
+ },
+ {
+ "coord": [
+ 120.11605154481,
+ 30.259714035501
+ ],
+ "elevation": 141.9
+ },
+ {
+ "coord": [
+ 120.11570888564,
+ 30.259246948635
+ ],
+ "elevation": 143.7
+ },
+ {
+ "coord": [
+ 120.11504608515,
+ 30.258995085202
+ ],
+ "elevation": 148.7
+ },
+ {
+ "coord": [
+ 120.11464299257,
+ 30.258653755142
+ ],
+ "elevation": 153.7
+ },
+ {
+ "coord": [
+ 120.1139502311,
+ 30.257332232213
+ ],
+ "elevation": 193
+ },
+ {
+ "coord": [
+ 120.11283595522,
+ 30.25636983191
+ ],
+ "elevation": 194.1
+ },
+ {
+ "coord": [
+ 120.11123529221,
+ 30.25605876851
+ ],
+ "elevation": 224.3
+ },
+ {
+ "coord": [
+ 120.11051702465,
+ 30.255438116809
+ ],
+ "elevation": 238.2
+ },
+ {
+ "coord": [
+ 120.10944418825,
+ 30.255355402987
+ ],
+ "elevation": 252.5
+ },
+ {
+ "coord": [
+ 120.1088283832,
+ 30.255157648161
+ ],
+ "elevation": 252.1
+ },
+ {
+ "coord": [
+ 120.10826672415,
+ 30.254714951187
+ ],
+ "elevation": 250.4
+ },
+ {
+ "coord": [
+ 120.10709798698,
+ 30.254245856948
+ ],
+ "elevation": 247.6
+ },
+ {
+ "coord": [
+ 120.10492119754,
+ 30.25447259507
+ ],
+ "elevation": 270.6
+ },
+ {
+ "coord": [
+ 120.1043335582,
+ 30.254262493569
+ ],
+ "elevation": 272.8
+ },
+ {
+ "coord": [
+ 120.10391685016,
+ 30.253702530713
+ ],
+ "elevation": 271.9
+ },
+ {
+ "coord": [
+ 120.10385344892,
+ 30.253197563938
+ ],
+ "elevation": 292.3
+ },
+ {
+ "coord": [
+ 120.10348160858,
+ 30.252953057391
+ ],
+ "elevation": 303.3
+ },
+ {
+ "coord": [
+ 120.10344398352,
+ 30.252578772906
+ ],
+ "elevation": 298.2
+ },
+ {
+ "coord": [
+ 120.10320893543,
+ 30.252475024846
+ ],
+ "elevation": 301.8
+ },
+ {
+ "coord": [
+ 120.1028741974,
+ 30.251762784107
+ ],
+ "elevation": 319.2
+ },
+ {
+ "coord": [
+ 120.10192833012,
+ 30.251001188067
+ ],
+ "elevation": 322.3
+ },
+ {
+ "coord": [
+ 120.10097541935,
+ 30.25098102491
+ ],
+ "elevation": 312.5
+ },
+ {
+ "coord": [
+ 120.10041455654,
+ 30.249014361357
+ ],
+ "elevation": 305.6
+ },
+ {
+ "coord": [
+ 120.0998438561,
+ 30.248549804681
+ ],
+ "elevation": 331.2
+ },
+ {
+ "coord": [
+ 120.09898117364,
+ 30.248214018357
+ ],
+ "elevation": 359.1
+ },
+ {
+ "coord": [
+ 120.09841906514,
+ 30.247407078533
+ ],
+ "elevation": 344.2
+ },
+ {
+ "coord": [
+ 120.09836716528,
+ 30.246811341196
+ ],
+ "elevation": 337.9
+ },
+ {
+ "coord": [
+ 120.09744176509,
+ 30.246093815513
+ ],
+ "elevation": 334.2
+ },
+ {
+ "coord": [
+ 120.09704000762,
+ 30.245261087502
+ ],
+ "elevation": 314.1
+ },
+ {
+ "coord": [
+ 120.09623807603,
+ 30.244620470543
+ ],
+ "elevation": 303.8
+ },
+ {
+ "coord": [
+ 120.09590472661,
+ 30.244154518882
+ ],
+ "elevation": 299.7
+ },
+ {
+ "coord": [
+ 120.09526661479,
+ 30.243995920198
+ ],
+ "elevation": 314.9
+ },
+ {
+ "coord": [
+ 120.09504171472,
+ 30.243719251882
+ ],
+ "elevation": 321.8
+ },
+ {
+ "coord": [
+ 120.09460665216,
+ 30.243593551983
+ ],
+ "elevation": 330
+ },
+ {
+ "coord": [
+ 120.09421121561,
+ 30.242873859252
+ ],
+ "elevation": 310.4
+ },
+ {
+ "coord": [
+ 120.09345763872,
+ 30.242559897912
+ ],
+ "elevation": 323
+ },
+ {
+ "coord": [
+ 120.09302637765,
+ 30.242206712252
+ ],
+ "elevation": 331.9
+ },
+ {
+ "coord": [
+ 120.09310632421,
+ 30.241418632209
+ ],
+ "elevation": 343.3
+ },
+ {
+ "coord": [
+ 120.09266750591,
+ 30.240795633009
+ ],
+ "elevation": 356.7
+ },
+ {
+ "coord": [
+ 120.09274225908,
+ 30.240204167692
+ ],
+ "elevation": 337.7
+ },
+ {
+ "coord": [
+ 120.09251440487,
+ 30.239672747534
+ ],
+ "elevation": 302.9
+ },
+ {
+ "coord": [
+ 120.09270103536,
+ 30.239453721626
+ ],
+ "elevation": 291.3
+ },
+ {
+ "coord": [
+ 120.0919058874,
+ 30.238044940269
+ ],
+ "elevation": 248.8
+ },
+ {
+ "coord": [
+ 120.09198033844,
+ 30.237382376694
+ ],
+ "elevation": 240.2
+ },
+ {
+ "coord": [
+ 120.09250108309,
+ 30.236978228242
+ ],
+ "elevation": 229.1
+ },
+ {
+ "coord": [
+ 120.09299370314,
+ 30.23623228819
+ ],
+ "elevation": 248.9
+ },
+ {
+ "coord": [
+ 120.09267535716,
+ 30.234332268942
+ ],
+ "elevation": 274.7
+ },
+ {
+ "coord": [
+ 120.09197754348,
+ 30.233863273349
+ ],
+ "elevation": 252.1
+ },
+ {
+ "coord": [
+ 120.09161762052,
+ 30.233204409832
+ ],
+ "elevation": 235.7
+ },
+ {
+ "coord": [
+ 120.09097322607,
+ 30.232713234761
+ ],
+ "elevation": 246.1
+ },
+ {
+ "coord": [
+ 120.09014548094,
+ 30.231549557984
+ ],
+ "elevation": 288.1
+ },
+ {
+ "coord": [
+ 120.09073231328,
+ 30.231229929245
+ ],
+ "elevation": 285.5
+ },
+ {
+ "coord": [
+ 120.09148116804,
+ 30.231324676266
+ ],
+ "elevation": 285.5
+ },
+ {
+ "coord": [
+ 120.09295409208,
+ 30.23099184777
+ ],
+ "elevation": 282.2
+ },
+ {
+ "coord": [
+ 120.09389399784,
+ 30.231076984916
+ ],
+ "elevation": 279.3
+ },
+ {
+ "coord": [
+ 120.09418436937,
+ 30.230890895674
+ ],
+ "elevation": 275.8
+ },
+ {
+ "coord": [
+ 120.09470923923,
+ 30.230153050917
+ ],
+ "elevation": 289.9
+ },
+ {
+ "coord": [
+ 120.09511619588,
+ 30.229898108929
+ ],
+ "elevation": 298.1
+ },
+ {
+ "coord": [
+ 120.0962581312,
+ 30.229795741476
+ ],
+ "elevation": 316.7
+ },
+ {
+ "coord": [
+ 120.09643648595,
+ 30.228814543385
+ ],
+ "elevation": 332.6
+ },
+ {
+ "coord": [
+ 120.09659923031,
+ 30.228732980168
+ ],
+ "elevation": 346.9
+ },
+ {
+ "coord": [
+ 120.09647990332,
+ 30.228300969144
+ ],
+ "elevation": 366.9
+ },
+ {
+ "coord": [
+ 120.09691048985,
+ 30.228258124218
+ ],
+ "elevation": 371.7
+ },
+ {
+ "coord": [
+ 120.09735387911,
+ 30.227952894184
+ ],
+ "elevation": 352.1
+ },
+ {
+ "coord": [
+ 120.09798584774,
+ 30.227864194557
+ ],
+ "elevation": 343.2
+ },
+ {
+ "coord": [
+ 120.09929179754,
+ 30.226970964378
+ ],
+ "elevation": 354.6
+ },
+ {
+ "coord": [
+ 120.09892292213,
+ 30.226335163374
+ ],
+ "elevation": 356.6
+ },
+ {
+ "coord": [
+ 120.09902124277,
+ 30.225894521299
+ ],
+ "elevation": 372.2
+ },
+ {
+ "coord": [
+ 120.09892585497,
+ 30.225166735676
+ ],
+ "elevation": 408.9
+ },
+ {
+ "coord": [
+ 120.10043465941,
+ 30.22472123857
+ ],
+ "elevation": 426.5
+ },
+ {
+ "coord": [
+ 120.10090915656,
+ 30.224310320826
+ ],
+ "elevation": 409.2
+ },
+ {
+ "coord": [
+ 120.10182494822,
+ 30.224030581599
+ ],
+ "elevation": 378.6
+ },
+ {
+ "coord": [
+ 120.1023580713,
+ 30.223544054086
+ ],
+ "elevation": 346.3
+ },
+ {
+ "coord": [
+ 120.10313005871,
+ 30.223339235435
+ ],
+ "elevation": 314.9
+ },
+ {
+ "coord": [
+ 120.10412195426,
+ 30.221488356227
+ ],
+ "elevation": 305.2
+ },
+ {
+ "coord": [
+ 120.10417442679,
+ 30.220746223992
+ ],
+ "elevation": 321.1
+ },
+ {
+ "coord": [
+ 120.10464479596,
+ 30.220189835151
+ ],
+ "elevation": 332.2
+ },
+ {
+ "coord": [
+ 120.10500293329,
+ 30.220111067098
+ ],
+ "elevation": 333.2
+ },
+ {
+ "coord": [
+ 120.10511607569,
+ 30.219949956788
+ ],
+ "elevation": 330.3
+ },
+ {
+ "coord": [
+ 120.10500527119,
+ 30.219634739628
+ ],
+ "elevation": 327.6
+ },
+ {
+ "coord": [
+ 120.10423403319,
+ 30.218934841513
+ ],
+ "elevation": 310.9
+ },
+ {
+ "coord": [
+ 120.10388744125,
+ 30.218334966596
+ ],
+ "elevation": 303.8
+ },
+ {
+ "coord": [
+ 120.10394646829,
+ 30.216651402043
+ ],
+ "elevation": 267.6
+ },
+ {
+ "coord": [
+ 120.10445045469,
+ 30.215417230197
+ ],
+ "elevation": 259.9
+ },
+ {
+ "coord": [
+ 120.10490557961,
+ 30.215208866571
+ ],
+ "elevation": 275.9
+ },
+ {
+ "coord": [
+ 120.10566141234,
+ 30.214522633906
+ ],
+ "elevation": 276.2
+ },
+ {
+ "coord": [
+ 120.10619042036,
+ 30.213774898948
+ ],
+ "elevation": 287.5
+ },
+ {
+ "coord": [
+ 120.10658244854,
+ 30.21349434858
+ ],
+ "elevation": 281.4
+ },
+ {
+ "coord": [
+ 120.10667841377,
+ 30.213114254165
+ ],
+ "elevation": 283
+ },
+ {
+ "coord": [
+ 120.10613073972,
+ 30.212088595642
+ ],
+ "elevation": 291.7
+ },
+ {
+ "coord": [
+ 120.10534929354,
+ 30.211895400308
+ ],
+ "elevation": 271.9
+ },
+ {
+ "coord": [
+ 120.10520535477,
+ 30.211750009626
+ ],
+ "elevation": 284.4
+ },
+ {
+ "coord": [
+ 120.1054315685,
+ 30.211243345151
+ ],
+ "elevation": 295.5
+ },
+ {
+ "coord": [
+ 120.10535115201,
+ 30.21094659413
+ ],
+ "elevation": 301.1
+ },
+ {
+ "coord": [
+ 120.10435664371,
+ 30.209986148474
+ ],
+ "elevation": 321.5
+ },
+ {
+ "coord": [
+ 120.10461443879,
+ 30.209609776875
+ ],
+ "elevation": 324.5
+ },
+ {
+ "coord": [
+ 120.10464247214,
+ 30.209012436648
+ ],
+ "elevation": 324.6
+ },
+ {
+ "coord": [
+ 120.10352573274,
+ 30.208175694133
+ ],
+ "elevation": 346.5
+ },
+ {
+ "coord": [
+ 120.1033477446,
+ 30.20757391698
+ ],
+ "elevation": 353.5
+ },
+ {
+ "coord": [
+ 120.10381418326,
+ 30.206926292016
+ ],
+ "elevation": 331.6
+ },
+ {
+ "coord": [
+ 120.1037656154,
+ 30.20627745484
+ ],
+ "elevation": 323.3
+ },
+ {
+ "coord": [
+ 120.104934257,
+ 30.20533403198
+ ],
+ "elevation": 326
+ },
+ {
+ "coord": [
+ 120.104826096,
+ 30.205059319537
+ ],
+ "elevation": 329.3
+ },
+ {
+ "coord": [
+ 120.10501777875,
+ 30.204283895846
+ ],
+ "elevation": 321.5
+ },
+ {
+ "coord": [
+ 120.10565787049,
+ 30.203123839822
+ ],
+ "elevation": 342.2
+ },
+ {
+ "coord": [
+ 120.10610549428,
+ 30.202700056068
+ ],
+ "elevation": 342.1
+ },
+ {
+ "coord": [
+ 120.10610285547,
+ 30.201810396766
+ ],
+ "elevation": 345.8
+ },
+ {
+ "coord": [
+ 120.10657734484,
+ 30.201284439309
+ ],
+ "elevation": 343.7
+ },
+ {
+ "coord": [
+ 120.10666510981,
+ 30.200962575359
+ ],
+ "elevation": 344.2
+ },
+ {
+ "coord": [
+ 120.10698477609,
+ 30.201259320525
+ ],
+ "elevation": 347.6
+ },
+ {
+ "coord": [
+ 120.10751241985,
+ 30.201296505938
+ ],
+ "elevation": 342
+ },
+ {
+ "coord": [
+ 120.10905171652,
+ 30.201154505761
+ ],
+ "elevation": 296
+ },
+ {
+ "coord": [
+ 120.11012810191,
+ 30.200593621934
+ ],
+ "elevation": 269.3
+ },
+ {
+ "coord": [
+ 120.11076211189,
+ 30.200431124475
+ ],
+ "elevation": 263.6
+ },
+ {
+ "coord": [
+ 120.11153613038,
+ 30.2007757765
+ ],
+ "elevation": 236.9
+ },
+ {
+ "coord": [
+ 120.11276169129,
+ 30.200603586175
+ ],
+ "elevation": 223.3
+ },
+ {
+ "coord": [
+ 120.11393707435,
+ 30.200272654652
+ ],
+ "elevation": 198.1
+ },
+ {
+ "coord": [
+ 120.11444772628,
+ 30.199640250592
+ ],
+ "elevation": 169.7
+ },
+ {
+ "coord": [
+ 120.11541850404,
+ 30.199204487272
+ ],
+ "elevation": 130
+ },
+ {
+ "coord": [
+ 120.11575530218,
+ 30.19929578232
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.11603456576,
+ 30.199629429975
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.11600963633,
+ 30.200022721465
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.11619964626,
+ 30.20032155142
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.11684146072,
+ 30.200852096057
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.11837724764,
+ 30.201429952448
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.11876911479,
+ 30.201693277559
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.11896546528,
+ 30.20202369587
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.12023038701,
+ 30.202136996865
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.1200956896,
+ 30.202256331222
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.12013949853,
+ 30.203171705564
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.11901055456,
+ 30.204773428521
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.11960092493,
+ 30.205698577982
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.11958323106,
+ 30.205867709995
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.11879547655,
+ 30.206417434286
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.1193811371,
+ 30.207076873905
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.11974964665,
+ 30.20846479774
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.11970478854,
+ 30.208894695763
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.11913665557,
+ 30.209561370934
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.11925530623,
+ 30.211142479579
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.12001106712,
+ 30.212732630315
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.12103721842,
+ 30.214025612606
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.12141127929,
+ 30.214832875546
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.12203202459,
+ 30.215016377211
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.12275366427,
+ 30.215577472702
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.12347085722,
+ 30.215548321835
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.12376008164,
+ 30.216254133064
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.12508674543,
+ 30.216248030894
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.12595379918,
+ 30.216456026676
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.12676108455,
+ 30.216305772945
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.12749336892,
+ 30.216424057221
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.12867199667,
+ 30.217252719871
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.12884953456,
+ 30.217691494425
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.12910198402,
+ 30.217820249824
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.12939736915,
+ 30.218251558852
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.13038184818,
+ 30.218381106312
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.13107575867,
+ 30.219046588412
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.13228205163,
+ 30.219264728789
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.13281376227,
+ 30.219529853027
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.13311821861,
+ 30.218688043901
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.13283914784,
+ 30.218406879277
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.1324570771,
+ 30.217289921072
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.13318247876,
+ 30.216812859987
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.13435997629,
+ 30.216529987976
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.13655929126,
+ 30.216919077599
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.13906949018,
+ 30.215953944739
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14105726802,
+ 30.215604745732
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14130928971,
+ 30.215734898005
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.1414508145,
+ 30.216046603175
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14171598971,
+ 30.217885512946
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14229572171,
+ 30.219497907476
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14342252575,
+ 30.21941375488
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14402620765,
+ 30.219614795734
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14449411717,
+ 30.220101186339
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14466266032,
+ 30.220000676005
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14507853461,
+ 30.220153490476
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14562126753,
+ 30.219902162246
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14591534452,
+ 30.219513070024
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.1462564595,
+ 30.218366582718
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14827530421,
+ 30.218540751876
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14860008483,
+ 30.218750029382
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14905889282,
+ 30.218712516436
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14952177859,
+ 30.218449694668
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14977572244,
+ 30.218429760286
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14967982443,
+ 30.218539690817
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.14988010707,
+ 30.21862893191
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.1515357824,
+ 30.218494521668
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.1538788177,
+ 30.219153451537
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.15479623181,
+ 30.220592570709
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.15480203296,
+ 30.220904983098
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.15512229538,
+ 30.220958126684
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.1550932167,
+ 30.221273906921
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.15547698995,
+ 30.221337247146
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.15532960052,
+ 30.221556499285
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.15555751664,
+ 30.221761388277
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.15584748264,
+ 30.221651228534
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.15660552723,
+ 30.221869215474
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.15699590059,
+ 30.222101161884
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.15718978914,
+ 30.222410320624
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.15745525475,
+ 30.222400455617
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.15813902408,
+ 30.222985300613
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.15860703174,
+ 30.223089681705
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.15904458364,
+ 30.223389714732
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16041102074,
+ 30.222450698332
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.1616322872,
+ 30.221933018425
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16228031359,
+ 30.221967997269
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16344895303,
+ 30.223358782742
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16374992176,
+ 30.225006262535
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16447278834,
+ 30.225648662284
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.1648746687,
+ 30.226741116906
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16565952,
+ 30.227217867212
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16624164203,
+ 30.228994274465
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16660692974,
+ 30.229430280701
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16639190108,
+ 30.230063239042
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16651081721,
+ 30.230285949498
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16647498246,
+ 30.230839209997
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16616070345,
+ 30.231665104165
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16621032862,
+ 30.232441899111
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16637095667,
+ 30.232682100284
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16701146794,
+ 30.232864363123
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16718815495,
+ 30.233107085833
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.1665850174,
+ 30.233986400408
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16654336678,
+ 30.23466512699
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16664065286,
+ 30.234717811646
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16701340195,
+ 30.234235344288
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16729818375,
+ 30.23410110203
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16818764118,
+ 30.233752086347
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.169000135,
+ 30.233653197527
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.1688759028,
+ 30.233905222144
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16844406394,
+ 30.233955717417
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16813625956,
+ 30.234187274024
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16752194796,
+ 30.235564363881
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16769824839,
+ 30.235667952171
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.16900449016,
+ 30.235577394524
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.17014839851,
+ 30.235999439347
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.17003909144,
+ 30.2361532166
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.17024095675,
+ 30.236299573324
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.17009379027,
+ 30.23673308538
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.17022340334,
+ 30.237943016103
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.17129919406,
+ 30.238503898649
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.17201638559,
+ 30.239082120164
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.1720263005,
+ 30.23948763897
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.17126023198,
+ 30.240443394736
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.17106680589,
+ 30.241107542429
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.17139119716,
+ 30.241861815755
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.17351198792,
+ 30.243506128405
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.1729929983,
+ 30.243677374434
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.17230228639,
+ 30.244166301892
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.17208031004,
+ 30.24533564832
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.17134900278,
+ 30.245629394103
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.1717134546,
+ 30.245627250499
+ ],
+ "elevation": 125.1
+ },
+ {
+ "coord": [
+ 120.17097046357,
+ 30.245720549904
+ ],
+ "elevation": 125.1
+ }
+ ],
+ [
+ {
+ "coord": [
+ 120.16351582453,
+ 30.269678961728
+ ],
+ "elevation": 172.2
+ },
+ {
+ "coord": [
+ 120.16337901853,
+ 30.269607304238
+ ],
+ "elevation": 168.7
+ },
+ {
+ "coord": [
+ 120.16361674996,
+ 30.269198361372
+ ],
+ "elevation": 168
+ },
+ {
+ "coord": [
+ 120.16411732764,
+ 30.267282423508
+ ],
+ "elevation": 153.8
+ },
+ {
+ "coord": [
+ 120.16365091644,
+ 30.266790272173
+ ],
+ "elevation": 152.1
+ },
+ {
+ "coord": [
+ 120.16360391305,
+ 30.266497818178
+ ],
+ "elevation": 111.8
+ },
+ {
+ "coord": [
+ 120.16323680087,
+ 30.266319517922
+ ],
+ "elevation": 55.5
+ },
+ {
+ "coord": [
+ 120.16309919767,
+ 30.265257892308
+ ],
+ "elevation": 39.1
+ },
+ {
+ "coord": [
+ 120.16326755724,
+ 30.265193873674
+ ],
+ "elevation": 32.1
+ },
+ {
+ "coord": [
+ 120.16370731959,
+ 30.264201571189
+ ],
+ "elevation": 24.9
+ },
+ {
+ "coord": [
+ 120.1639320084,
+ 30.264037035333
+ ],
+ "elevation": 26.5
+ },
+ {
+ "coord": [
+ 120.1638756824,
+ 30.264163361689
+ ],
+ "elevation": 51.7
+ },
+ {
+ "coord": [
+ 120.16460300546,
+ 30.264883319984
+ ],
+ "elevation": 42.1
+ },
+ {
+ "coord": [
+ 120.1643786051,
+ 30.264571918171
+ ],
+ "elevation": 32.7
+ },
+ {
+ "coord": [
+ 120.16444375739,
+ 30.264161932722
+ ],
+ "elevation": 20.3
+ },
+ {
+ "coord": [
+ 120.16561379593,
+ 30.263152058431
+ ],
+ "elevation": 30.2
+ },
+ {
+ "coord": [
+ 120.16538154874,
+ 30.262923167192
+ ],
+ "elevation": 29.5
+ },
+ {
+ "coord": [
+ 120.16527937614,
+ 30.262481560726
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16583931439,
+ 30.262246449766
+ ],
+ "elevation": 14.8
+ },
+ {
+ "coord": [
+ 120.16627299241,
+ 30.261858628644
+ ],
+ "elevation": 18.6
+ },
+ {
+ "coord": [
+ 120.16786072142,
+ 30.259357393554
+ ],
+ "elevation": 19
+ },
+ {
+ "coord": [
+ 120.16787136417,
+ 30.259741420528
+ ],
+ "elevation": 14.2
+ },
+ {
+ "coord": [
+ 120.16785281399,
+ 30.259345036119
+ ],
+ "elevation": 14
+ },
+ {
+ "coord": [
+ 120.16757976294,
+ 30.259848552949
+ ],
+ "elevation": 18.4
+ },
+ {
+ "coord": [
+ 120.168707167,
+ 30.258398002321
+ ],
+ "elevation": 15.1
+ },
+ {
+ "coord": [
+ 120.16916914465,
+ 30.257592561015
+ ],
+ "elevation": 22.1
+ },
+ {
+ "coord": [
+ 120.16916695707,
+ 30.257255061976
+ ],
+ "elevation": 19.2
+ },
+ {
+ "coord": [
+ 120.16900446822,
+ 30.256695020261
+ ],
+ "elevation": 14.5
+ },
+ {
+ "coord": [
+ 120.16825638007,
+ 30.256321083759
+ ],
+ "elevation": 25.7
+ },
+ {
+ "coord": [
+ 120.16803061176,
+ 30.256000874856
+ ],
+ "elevation": 20.7
+ },
+ {
+ "coord": [
+ 120.16735043362,
+ 30.255856079394
+ ],
+ "elevation": 30.7
+ },
+ {
+ "coord": [
+ 120.16690077929,
+ 30.255575931431
+ ],
+ "elevation": 30.2
+ },
+ {
+ "coord": [
+ 120.16695174653,
+ 30.255307306372
+ ],
+ "elevation": 30.8
+ },
+ {
+ "coord": [
+ 120.16665170816,
+ 30.255445649943
+ ],
+ "elevation": 31.2
+ },
+ {
+ "coord": [
+ 120.16608401868,
+ 30.255117948331
+ ],
+ "elevation": 19.7
+ },
+ {
+ "coord": [
+ 120.16572036827,
+ 30.254533831031
+ ],
+ "elevation": 14.9
+ },
+ {
+ "coord": [
+ 120.16574396605,
+ 30.25412562255
+ ],
+ "elevation": 21.6
+ },
+ {
+ "coord": [
+ 120.16591356916,
+ 30.25400748618
+ ],
+ "elevation": 24.9
+ },
+ {
+ "coord": [
+ 120.16599441789,
+ 30.253653682895
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.16587031619,
+ 30.253486697939
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.16520235301,
+ 30.253498973314
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.16456900202,
+ 30.252423057481
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.16464203226,
+ 30.252153995513
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.16483154271,
+ 30.252039236761
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.16574771104,
+ 30.252032745387
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.16604906052,
+ 30.251536896248
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.16474989637,
+ 30.250177348212
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.16347535906,
+ 30.249116791271
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.16304422478,
+ 30.248506281513
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.1626244877,
+ 30.248406563301
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.16201183073,
+ 30.247795093177
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.16136417855,
+ 30.247100246275
+ ],
+ "elevation": 25.4
+ },
+ {
+ "coord": [
+ 120.16103819709,
+ 30.246519275966
+ ],
+ "elevation": 12.4
+ },
+ {
+ "coord": [
+ 120.16084806977,
+ 30.245004053106
+ ],
+ "elevation": 17.4
+ },
+ {
+ "coord": [
+ 120.1612336087,
+ 30.244652679274
+ ],
+ "elevation": 26.6
+ },
+ {
+ "coord": [
+ 120.16236984007,
+ 30.244511939539
+ ],
+ "elevation": 43.2
+ },
+ {
+ "coord": [
+ 120.16269518127,
+ 30.24422230311
+ ],
+ "elevation": 40.5
+ },
+ {
+ "coord": [
+ 120.16279626713,
+ 30.243674293605
+ ],
+ "elevation": 20.4
+ },
+ {
+ "coord": [
+ 120.16262386146,
+ 30.243486340759
+ ],
+ "elevation": 26.6
+ },
+ {
+ "coord": [
+ 120.16303967374,
+ 30.242664113096
+ ],
+ "elevation": 16.9
+ },
+ {
+ "coord": [
+ 120.16296967275,
+ 30.242147093499
+ ],
+ "elevation": 20.6
+ },
+ {
+ "coord": [
+ 120.16283904397,
+ 30.242040333767
+ ],
+ "elevation": 20.6
+ },
+ {
+ "coord": [
+ 120.16231252707,
+ 30.241986240795
+ ],
+ "elevation": 22.3
+ },
+ {
+ "coord": [
+ 120.16128764731,
+ 30.242296183437
+ ],
+ "elevation": 28.4
+ },
+ {
+ "coord": [
+ 120.16076184669,
+ 30.24192211283
+ ],
+ "elevation": 24.9
+ },
+ {
+ "coord": [
+ 120.16076388203,
+ 30.241225003575
+ ],
+ "elevation": 22.7
+ },
+ {
+ "coord": [
+ 120.1609691158,
+ 30.24041184292
+ ],
+ "elevation": 22.5
+ },
+ {
+ "coord": [
+ 120.16172197427,
+ 30.239449550747
+ ],
+ "elevation": 27.1
+ },
+ {
+ "coord": [
+ 120.16145452536,
+ 30.239333111806
+ ],
+ "elevation": 15.6
+ },
+ {
+ "coord": [
+ 120.16155389325,
+ 30.238363993007
+ ],
+ "elevation": 22.3
+ },
+ {
+ "coord": [
+ 120.16081912599,
+ 30.237430425999
+ ],
+ "elevation": 13.8
+ },
+ {
+ "coord": [
+ 120.16076898993,
+ 30.235925174013
+ ],
+ "elevation": 15.2
+ },
+ {
+ "coord": [
+ 120.16066829764,
+ 30.235778058957
+ ],
+ "elevation": 18.8
+ },
+ {
+ "coord": [
+ 120.15864065525,
+ 30.23554428503
+ ],
+ "elevation": 13.8
+ },
+ {
+ "coord": [
+ 120.15848398022,
+ 30.235278322273
+ ],
+ "elevation": 16.1
+ },
+ {
+ "coord": [
+ 120.15799304035,
+ 30.235197695616
+ ],
+ "elevation": 31.8
+ },
+ {
+ "coord": [
+ 120.15788277295,
+ 30.234695630381
+ ],
+ "elevation": 51
+ },
+ {
+ "coord": [
+ 120.15709136392,
+ 30.234161577557
+ ],
+ "elevation": 65.6
+ },
+ {
+ "coord": [
+ 120.15653019396,
+ 30.233190456156
+ ],
+ "elevation": 81.5
+ },
+ {
+ "coord": [
+ 120.15570548995,
+ 30.232571856857
+ ],
+ "elevation": 103.2
+ },
+ {
+ "coord": [
+ 120.15486599136,
+ 30.232184949375
+ ],
+ "elevation": 113.7
+ },
+ {
+ "coord": [
+ 120.15443437883,
+ 30.231606691887
+ ],
+ "elevation": 115
+ },
+ {
+ "coord": [
+ 120.15344262335,
+ 30.230917279559
+ ],
+ "elevation": 119
+ },
+ {
+ "coord": [
+ 120.15050519346,
+ 30.22813537162
+ ],
+ "elevation": 136.2
+ },
+ {
+ "coord": [
+ 120.14803575238,
+ 30.227057989926
+ ],
+ "elevation": 178.1
+ },
+ {
+ "coord": [
+ 120.14752872599,
+ 30.226986518014
+ ],
+ "elevation": 189.3
+ },
+ {
+ "coord": [
+ 120.14761694742,
+ 30.226907170816
+ ],
+ "elevation": 190.8
+ },
+ {
+ "coord": [
+ 120.14780581908,
+ 30.227055918363
+ ],
+ "elevation": 190.4
+ },
+ {
+ "coord": [
+ 120.14767953432,
+ 30.227275095336
+ ],
+ "elevation": 188.2
+ },
+ {
+ "coord": [
+ 120.1481102573,
+ 30.227771891523
+ ],
+ "elevation": 175.7
+ },
+ {
+ "coord": [
+ 120.14773627785,
+ 30.228349610374
+ ],
+ "elevation": 166.6
+ },
+ {
+ "coord": [
+ 120.14831003429,
+ 30.22880787498
+ ],
+ "elevation": 152
+ },
+ {
+ "coord": [
+ 120.14824237204,
+ 30.229087127848
+ ],
+ "elevation": 140.1
+ },
+ {
+ "coord": [
+ 120.14834790788,
+ 30.229244584131
+ ],
+ "elevation": 135.8
+ },
+ {
+ "coord": [
+ 120.14781058694,
+ 30.229125394838
+ ],
+ "elevation": 129
+ },
+ {
+ "coord": [
+ 120.14753084833,
+ 30.229190337834
+ ],
+ "elevation": 127.3
+ },
+ {
+ "coord": [
+ 120.14747512765,
+ 30.229385261873
+ ],
+ "elevation": 124.1
+ },
+ {
+ "coord": [
+ 120.14704474932,
+ 30.229435842274
+ ],
+ "elevation": 115.4
+ },
+ {
+ "coord": [
+ 120.14677276127,
+ 30.22923114643
+ ],
+ "elevation": 109.1
+ },
+ {
+ "coord": [
+ 120.14668212376,
+ 30.228911670264
+ ],
+ "elevation": 107.3
+ },
+ {
+ "coord": [
+ 120.14670760869,
+ 30.229152721249
+ ],
+ "elevation": 105.9
+ },
+ {
+ "coord": [
+ 120.14625088753,
+ 30.229264618772
+ ],
+ "elevation": 93.5
+ },
+ {
+ "coord": [
+ 120.14659477956,
+ 30.230301961934
+ ],
+ "elevation": 67.6
+ },
+ {
+ "coord": [
+ 120.14692697727,
+ 30.230515186159
+ ],
+ "elevation": 60.8
+ },
+ {
+ "coord": [
+ 120.14681109366,
+ 30.231505511374
+ ],
+ "elevation": 49.6
+ },
+ {
+ "coord": [
+ 120.14641044721,
+ 30.231562530218
+ ],
+ "elevation": 43.8
+ },
+ {
+ "coord": [
+ 120.14574410223,
+ 30.231398252382
+ ],
+ "elevation": 37.7
+ },
+ {
+ "coord": [
+ 120.14528463184,
+ 30.231003960695
+ ],
+ "elevation": 27.2
+ },
+ {
+ "coord": [
+ 120.14464698389,
+ 30.23083857655
+ ],
+ "elevation": 25.7
+ },
+ {
+ "coord": [
+ 120.14278840818,
+ 30.232004774669
+ ],
+ "elevation": 49.6
+ },
+ {
+ "coord": [
+ 120.14159454076,
+ 30.232104292909
+ ],
+ "elevation": 34.8
+ },
+ {
+ "coord": [
+ 120.14126395371,
+ 30.232254932303
+ ],
+ "elevation": 36.5
+ },
+ {
+ "coord": [
+ 120.14086549485,
+ 30.23295200278
+ ],
+ "elevation": 41.4
+ },
+ {
+ "coord": [
+ 120.13942547854,
+ 30.234682163115
+ ],
+ "elevation": 38.5
+ },
+ {
+ "coord": [
+ 120.13861394636,
+ 30.235032850342
+ ],
+ "elevation": 37.3
+ },
+ {
+ "coord": [
+ 120.13778661835,
+ 30.235201125796
+ ],
+ "elevation": 40.9
+ },
+ {
+ "coord": [
+ 120.13707570595,
+ 30.234905348947
+ ],
+ "elevation": 53.1
+ },
+ {
+ "coord": [
+ 120.13686402709,
+ 30.235104152717
+ ],
+ "elevation": 58.3
+ },
+ {
+ "coord": [
+ 120.13645401653,
+ 30.234847894463
+ ],
+ "elevation": 64.4
+ },
+ {
+ "coord": [
+ 120.13613114839,
+ 30.23503513112
+ ],
+ "elevation": 71.3
+ },
+ {
+ "coord": [
+ 120.1356484589,
+ 30.234918988698
+ ],
+ "elevation": 70.6
+ },
+ {
+ "coord": [
+ 120.13477131858,
+ 30.235031063138
+ ],
+ "elevation": 71.1
+ },
+ {
+ "coord": [
+ 120.13446915996,
+ 30.234813660327
+ ],
+ "elevation": 73.5
+ },
+ {
+ "coord": [
+ 120.13363636704,
+ 30.235035204672
+ ],
+ "elevation": 77.9
+ },
+ {
+ "coord": [
+ 120.13332599243,
+ 30.234972202527
+ ],
+ "elevation": 82.4
+ },
+ {
+ "coord": [
+ 120.1328893835,
+ 30.235332095112
+ ],
+ "elevation": 95.5
+ },
+ {
+ "coord": [
+ 120.13231937929,
+ 30.23530811524
+ ],
+ "elevation": 98.9
+ },
+ {
+ "coord": [
+ 120.13224456656,
+ 30.235502269539
+ ],
+ "elevation": 99
+ },
+ {
+ "coord": [
+ 120.13234922867,
+ 30.235268601083
+ ],
+ "elevation": 99.2
+ },
+ {
+ "coord": [
+ 120.1317217277,
+ 30.235261997066
+ ],
+ "elevation": 100.4
+ },
+ {
+ "coord": [
+ 120.13166053027,
+ 30.234840128846
+ ],
+ "elevation": 101.3
+ },
+ {
+ "coord": [
+ 120.13115911188,
+ 30.234130892264
+ ],
+ "elevation": 109.1
+ },
+ {
+ "coord": [
+ 120.13007715791,
+ 30.233672478821
+ ],
+ "elevation": 122
+ },
+ {
+ "coord": [
+ 120.12964128109,
+ 30.232826620739
+ ],
+ "elevation": 122.5
+ },
+ {
+ "coord": [
+ 120.12957730801,
+ 30.232598370655
+ ],
+ "elevation": 123.4
+ },
+ {
+ "coord": [
+ 120.1296598832,
+ 30.232656172113
+ ],
+ "elevation": 130.5
+ },
+ {
+ "coord": [
+ 120.12979347547,
+ 30.232321740996
+ ],
+ "elevation": 156.4
+ },
+ {
+ "coord": [
+ 120.12978307386,
+ 30.231841541224
+ ],
+ "elevation": 172.4
+ },
+ {
+ "coord": [
+ 120.1294789656,
+ 30.23102258609
+ ],
+ "elevation": 197
+ },
+ {
+ "coord": [
+ 120.12970627842,
+ 30.230354166182
+ ],
+ "elevation": 208.9
+ },
+ {
+ "coord": [
+ 120.12926033632,
+ 30.229673436399
+ ],
+ "elevation": 226.6
+ },
+ {
+ "coord": [
+ 120.1292365554,
+ 30.22898789924
+ ],
+ "elevation": 231.6
+ },
+ {
+ "coord": [
+ 120.12935525808,
+ 30.228665516061
+ ],
+ "elevation": 230
+ },
+ {
+ "coord": [
+ 120.12918307719,
+ 30.228542013973
+ ],
+ "elevation": 230.5
+ },
+ {
+ "coord": [
+ 120.12915606686,
+ 30.22831364568
+ ],
+ "elevation": 234.3
+ },
+ {
+ "coord": [
+ 120.12847905709,
+ 30.228209177555
+ ],
+ "elevation": 244.3
+ },
+ {
+ "coord": [
+ 120.12911373281,
+ 30.228334650445
+ ],
+ "elevation": 251.9
+ },
+ {
+ "coord": [
+ 120.12912418137,
+ 30.228099940963
+ ],
+ "elevation": 253.8
+ },
+ {
+ "coord": [
+ 120.12883528022,
+ 30.227949285734
+ ],
+ "elevation": 251.6
+ },
+ {
+ "coord": [
+ 120.12850995587,
+ 30.228137759723
+ ],
+ "elevation": 249.4
+ },
+ {
+ "coord": [
+ 120.12832942104,
+ 30.22804994465
+ ],
+ "elevation": 248.6
+ },
+ {
+ "coord": [
+ 120.12749132881,
+ 30.228337696973
+ ],
+ "elevation": 244.3
+ },
+ {
+ "coord": [
+ 120.12717319528,
+ 30.228110092242
+ ],
+ "elevation": 238.3
+ },
+ {
+ "coord": [
+ 120.12723784751,
+ 30.227773619959
+ ],
+ "elevation": 222
+ },
+ {
+ "coord": [
+ 120.12700332206,
+ 30.227582245534
+ ],
+ "elevation": 211.1
+ },
+ {
+ "coord": [
+ 120.12647702682,
+ 30.227598160043
+ ],
+ "elevation": 207.3
+ },
+ {
+ "coord": [
+ 120.12591998392,
+ 30.227313180624
+ ],
+ "elevation": 189.8
+ },
+ {
+ "coord": [
+ 120.12525984247,
+ 30.227297190478
+ ],
+ "elevation": 190.1
+ },
+ {
+ "coord": [
+ 120.12504046811,
+ 30.226816169886
+ ],
+ "elevation": 191.5
+ },
+ {
+ "coord": [
+ 120.12429478606,
+ 30.226254658558
+ ],
+ "elevation": 201.6
+ },
+ {
+ "coord": [
+ 120.12426590038,
+ 30.225957795069
+ ],
+ "elevation": 199.9
+ },
+ {
+ "coord": [
+ 120.12398464582,
+ 30.225731714899
+ ],
+ "elevation": 203.2
+ },
+ {
+ "coord": [
+ 120.12395277642,
+ 30.225410962996
+ ],
+ "elevation": 206.2
+ },
+ {
+ "coord": [
+ 120.12421486963,
+ 30.225253664817
+ ],
+ "elevation": 210.3
+ },
+ {
+ "coord": [
+ 120.12396105712,
+ 30.22513914207
+ ],
+ "elevation": 213.1
+ },
+ {
+ "coord": [
+ 120.12411086293,
+ 30.22487361918
+ ],
+ "elevation": 205.6
+ },
+ {
+ "coord": [
+ 120.1232605994,
+ 30.224544979497
+ ],
+ "elevation": 168.2
+ },
+ {
+ "coord": [
+ 120.12330963908,
+ 30.225120007455
+ ],
+ "elevation": 184.5
+ },
+ {
+ "coord": [
+ 120.1229678523,
+ 30.226274376384
+ ],
+ "elevation": 186.2
+ },
+ {
+ "coord": [
+ 120.12238066687,
+ 30.226491168794
+ ],
+ "elevation": 180.7
+ },
+ {
+ "coord": [
+ 120.12182296283,
+ 30.226957087436
+ ],
+ "elevation": 172.5
+ },
+ {
+ "coord": [
+ 120.1205494473,
+ 30.226589770448
+ ],
+ "elevation": 160.6
+ },
+ {
+ "coord": [
+ 120.1189534749,
+ 30.227127242889
+ ],
+ "elevation": 132.7
+ },
+ {
+ "coord": [
+ 120.11809352484,
+ 30.227038791393
+ ],
+ "elevation": 139.8
+ },
+ {
+ "coord": [
+ 120.11690481243,
+ 30.226281251152
+ ],
+ "elevation": 124.8
+ },
+ {
+ "coord": [
+ 120.11680415994,
+ 30.226338396748
+ ],
+ "elevation": 123.1
+ },
+ {
+ "coord": [
+ 120.11679941036,
+ 30.22657682719
+ ],
+ "elevation": 124.2
+ },
+ {
+ "coord": [
+ 120.11717039615,
+ 30.226931756678
+ ],
+ "elevation": 125.8
+ },
+ {
+ "coord": [
+ 120.1170225525,
+ 30.226815686322
+ ],
+ "elevation": 120.5
+ },
+ {
+ "coord": [
+ 120.11723721448,
+ 30.226862074809
+ ],
+ "elevation": 120.1
+ },
+ {
+ "coord": [
+ 120.11765477118,
+ 30.227651882106
+ ],
+ "elevation": 119.3
+ },
+ {
+ "coord": [
+ 120.11657465522,
+ 30.2273550227
+ ],
+ "elevation": 122.4
+ },
+ {
+ "coord": [
+ 120.11656677309,
+ 30.227776556364
+ ],
+ "elevation": 143.2
+ },
+ {
+ "coord": [
+ 120.11570425886,
+ 30.228540336165
+ ],
+ "elevation": 175.4
+ },
+ {
+ "coord": [
+ 120.11556057598,
+ 30.228529658084
+ ],
+ "elevation": 177.4
+ },
+ {
+ "coord": [
+ 120.1154963647,
+ 30.228832053319
+ ],
+ "elevation": 182.1
+ },
+ {
+ "coord": [
+ 120.11510246654,
+ 30.228887646296
+ ],
+ "elevation": 190.2
+ },
+ {
+ "coord": [
+ 120.11477639459,
+ 30.229201590399
+ ],
+ "elevation": 206.3
+ },
+ {
+ "coord": [
+ 120.11445532673,
+ 30.229263186414
+ ],
+ "elevation": 216.1
+ },
+ {
+ "coord": [
+ 120.11433204842,
+ 30.229794665612
+ ],
+ "elevation": 234.5
+ },
+ {
+ "coord": [
+ 120.11380844445,
+ 30.230296050076
+ ],
+ "elevation": 249.2
+ },
+ {
+ "coord": [
+ 120.11324798739,
+ 30.23060007612
+ ],
+ "elevation": 258.9
+ },
+ {
+ "coord": [
+ 120.11310022704,
+ 30.230846811064
+ ],
+ "elevation": 264.4
+ },
+ {
+ "coord": [
+ 120.11277840412,
+ 30.230830380026
+ ],
+ "elevation": 270.7
+ },
+ {
+ "coord": [
+ 120.11287658184,
+ 30.231232594727
+ ],
+ "elevation": 269
+ },
+ {
+ "coord": [
+ 120.11324084181,
+ 30.231584044349
+ ],
+ "elevation": 258.3
+ },
+ {
+ "coord": [
+ 120.11335159284,
+ 30.233196994732
+ ],
+ "elevation": 231.9
+ },
+ {
+ "coord": [
+ 120.11385627666,
+ 30.233874447831
+ ],
+ "elevation": 226.9
+ },
+ {
+ "coord": [
+ 120.11425763277,
+ 30.235126291251
+ ],
+ "elevation": 217.3
+ },
+ {
+ "coord": [
+ 120.1142441248,
+ 30.235779756805
+ ],
+ "elevation": 240
+ },
+ {
+ "coord": [
+ 120.11396526005,
+ 30.235792593492
+ ],
+ "elevation": 262.9
+ },
+ {
+ "coord": [
+ 120.11408261565,
+ 30.236063631777
+ ],
+ "elevation": 262.2
+ },
+ {
+ "coord": [
+ 120.11392474309,
+ 30.236167640141
+ ],
+ "elevation": 270.1
+ },
+ {
+ "coord": [
+ 120.11406100803,
+ 30.236408510346
+ ],
+ "elevation": 275.9
+ },
+ {
+ "coord": [
+ 120.11509018039,
+ 30.237160815063
+ ],
+ "elevation": 277.5
+ },
+ {
+ "coord": [
+ 120.11554020027,
+ 30.237252585516
+ ],
+ "elevation": 273.1
+ },
+ {
+ "coord": [
+ 120.11570031972,
+ 30.2374845644
+ ],
+ "elevation": 269.7
+ },
+ {
+ "coord": [
+ 120.11563720451,
+ 30.238000263328
+ ],
+ "elevation": 250.8
+ },
+ {
+ "coord": [
+ 120.11616423509,
+ 30.238498753629
+ ],
+ "elevation": 224
+ },
+ {
+ "coord": [
+ 120.11603032859,
+ 30.238543576596
+ ],
+ "elevation": 206.7
+ },
+ {
+ "coord": [
+ 120.11624157742,
+ 30.239022621299
+ ],
+ "elevation": 206.4
+ },
+ {
+ "coord": [
+ 120.11778763785,
+ 30.240235171796
+ ],
+ "elevation": 194.4
+ },
+ {
+ "coord": [
+ 120.11884562342,
+ 30.240465348012
+ ],
+ "elevation": 179.1
+ },
+ {
+ "coord": [
+ 120.11995336645,
+ 30.239782324578
+ ],
+ "elevation": 151.9
+ },
+ {
+ "coord": [
+ 120.12101995606,
+ 30.240235628988
+ ],
+ "elevation": 131.5
+ },
+ {
+ "coord": [
+ 120.12169007671,
+ 30.240070443007
+ ],
+ "elevation": 126.5
+ },
+ {
+ "coord": [
+ 120.12214521259,
+ 30.24054293585
+ ],
+ "elevation": 112.5
+ },
+ {
+ "coord": [
+ 120.12356386954,
+ 30.240640686657
+ ],
+ "elevation": 101.1
+ },
+ {
+ "coord": [
+ 120.12379772216,
+ 30.240544991726
+ ],
+ "elevation": 99.3
+ },
+ {
+ "coord": [
+ 120.12410201088,
+ 30.240661588046
+ ],
+ "elevation": 100.6
+ },
+ {
+ "coord": [
+ 120.12512350434,
+ 30.24046939351
+ ],
+ "elevation": 99.8
+ },
+ {
+ "coord": [
+ 120.12633173743,
+ 30.240688898585
+ ],
+ "elevation": 88.6
+ },
+ {
+ "coord": [
+ 120.1267492181,
+ 30.240393361133
+ ],
+ "elevation": 70.8
+ },
+ {
+ "coord": [
+ 120.12675607376,
+ 30.239904145136
+ ],
+ "elevation": 43.1
+ },
+ {
+ "coord": [
+ 120.12869226251,
+ 30.237936912783
+ ],
+ "elevation": 18.4
+ },
+ {
+ "coord": [
+ 120.12944756398,
+ 30.237488593499
+ ],
+ "elevation": 11.8
+ },
+ {
+ "coord": [
+ 120.13023139179,
+ 30.238095902229
+ ],
+ "elevation": 16
+ },
+ {
+ "coord": [
+ 120.13056951173,
+ 30.239034744401
+ ],
+ "elevation": -2.8
+ },
+ {
+ "coord": [
+ 120.13160670947,
+ 30.240208947297
+ ],
+ "elevation": -13.4
+ },
+ {
+ "coord": [
+ 120.1318982034,
+ 30.240813864068
+ ],
+ "elevation": -11.8
+ },
+ {
+ "coord": [
+ 120.13231167432,
+ 30.242223879389
+ ],
+ "elevation": -1.7
+ },
+ {
+ "coord": [
+ 120.13113962982,
+ 30.243323974463
+ ],
+ "elevation": 5.8
+ },
+ {
+ "coord": [
+ 120.13098573821,
+ 30.243689079586
+ ],
+ "elevation": 6.8
+ },
+ {
+ "coord": [
+ 120.13077083765,
+ 30.245216834328
+ ],
+ "elevation": 5
+ },
+ {
+ "coord": [
+ 120.130317025,
+ 30.24623048834
+ ],
+ "elevation": 2.7
+ },
+ {
+ "coord": [
+ 120.12993091068,
+ 30.248093811839
+ ],
+ "elevation": -0.7
+ },
+ {
+ "coord": [
+ 120.13014878168,
+ 30.24929316149
+ ],
+ "elevation": 34.9
+ },
+ {
+ "coord": [
+ 120.13008921363,
+ 30.250551836388
+ ],
+ "elevation": 9.1
+ },
+ {
+ "coord": [
+ 120.12986535907,
+ 30.251522914236
+ ],
+ "elevation": 5.2
+ },
+ {
+ "coord": [
+ 120.12893718033,
+ 30.253474355337
+ ],
+ "elevation": 15.6
+ },
+ {
+ "coord": [
+ 120.12962197568,
+ 30.254828817413
+ ],
+ "elevation": 45.6
+ },
+ {
+ "coord": [
+ 120.13032048025,
+ 30.257191559035
+ ],
+ "elevation": 38.7
+ },
+ {
+ "coord": [
+ 120.13060028529,
+ 30.257654149566
+ ],
+ "elevation": 35.7
+ },
+ {
+ "coord": [
+ 120.13175596379,
+ 30.25807612442
+ ],
+ "elevation": 27.7
+ },
+ {
+ "coord": [
+ 120.13329086939,
+ 30.258017943117
+ ],
+ "elevation": 19.9
+ },
+ {
+ "coord": [
+ 120.1339966677,
+ 30.258443362245
+ ],
+ "elevation": 16.6
+ },
+ {
+ "coord": [
+ 120.13432540694,
+ 30.258980045634
+ ],
+ "elevation": 14.9
+ },
+ {
+ "coord": [
+ 120.13524874067,
+ 30.259294198935
+ ],
+ "elevation": 10.6
+ },
+ {
+ "coord": [
+ 120.13670781773,
+ 30.259116618488
+ ],
+ "elevation": -1
+ },
+ {
+ "coord": [
+ 120.13752471044,
+ 30.258707174386
+ ],
+ "elevation": -3.8
+ },
+ {
+ "coord": [
+ 120.13942947076,
+ 30.25838543238
+ ],
+ "elevation": 1.3
+ },
+ {
+ "coord": [
+ 120.13982464703,
+ 30.258175576064
+ ],
+ "elevation": 3.5
+ },
+ {
+ "coord": [
+ 120.14035645783,
+ 30.25896943201
+ ],
+ "elevation": 18.5
+ },
+ {
+ "coord": [
+ 120.1409491981,
+ 30.259329799302
+ ],
+ "elevation": 33.4
+ },
+ {
+ "coord": [
+ 120.14164552279,
+ 30.26053315407
+ ],
+ "elevation": 42.4
+ },
+ {
+ "coord": [
+ 120.14214975819,
+ 30.261062966485
+ ],
+ "elevation": 61.2
+ },
+ {
+ "coord": [
+ 120.14309301837,
+ 30.26101278512
+ ],
+ "elevation": 75.1
+ },
+ {
+ "coord": [
+ 120.14429218621,
+ 30.261446842322
+ ],
+ "elevation": 89
+ },
+ {
+ "coord": [
+ 120.14469473536,
+ 30.261934783572
+ ],
+ "elevation": 105.6
+ },
+ {
+ "coord": [
+ 120.14530173109,
+ 30.26353888089
+ ],
+ "elevation": 124.4
+ },
+ {
+ "coord": [
+ 120.14611353131,
+ 30.264262593732
+ ],
+ "elevation": 124.6
+ },
+ {
+ "coord": [
+ 120.14646470358,
+ 30.264860845108
+ ],
+ "elevation": 118.2
+ },
+ {
+ "coord": [
+ 120.14724778576,
+ 30.265232400258
+ ],
+ "elevation": 117.9
+ },
+ {
+ "coord": [
+ 120.14817386471,
+ 30.265423537325
+ ],
+ "elevation": 131.1
+ },
+ {
+ "coord": [
+ 120.14824124365,
+ 30.265584358223
+ ],
+ "elevation": 134.2
+ },
+ {
+ "coord": [
+ 120.14866616984,
+ 30.264919691155
+ ],
+ "elevation": 110.6
+ },
+ {
+ "coord": [
+ 120.14888141103,
+ 30.264921669393
+ ],
+ "elevation": 111.2
+ },
+ {
+ "coord": [
+ 120.14936176531,
+ 30.265414683311
+ ],
+ "elevation": 110.2
+ },
+ {
+ "coord": [
+ 120.14932950602,
+ 30.265723994212
+ ],
+ "elevation": 107.9
+ },
+ {
+ "coord": [
+ 120.14952246157,
+ 30.265810415979
+ ],
+ "elevation": 103.5
+ },
+ {
+ "coord": [
+ 120.14959564255,
+ 30.265592085747
+ ],
+ "elevation": 102
+ },
+ {
+ "coord": [
+ 120.15004604602,
+ 30.265575994966
+ ],
+ "elevation": 88.1
+ },
+ {
+ "coord": [
+ 120.1505535611,
+ 30.265319253754
+ ],
+ "elevation": 84.6
+ },
+ {
+ "coord": [
+ 120.15076805146,
+ 30.265380252902
+ ],
+ "elevation": 79.6
+ },
+ {
+ "coord": [
+ 120.15154402726,
+ 30.266174732695
+ ],
+ "elevation": 81.2
+ },
+ {
+ "coord": [
+ 120.15160121057,
+ 30.266636266487
+ ],
+ "elevation": 87.6
+ },
+ {
+ "coord": [
+ 120.15175446022,
+ 30.266833971222
+ ],
+ "elevation": 87.1
+ },
+ {
+ "coord": [
+ 120.1524362085,
+ 30.267186133037
+ ],
+ "elevation": 77
+ },
+ {
+ "coord": [
+ 120.15253153726,
+ 30.267061753677
+ ],
+ "elevation": 74.5
+ },
+ {
+ "coord": [
+ 120.15337447741,
+ 30.267635186094
+ ],
+ "elevation": 65.4
+ },
+ {
+ "coord": [
+ 120.15398057157,
+ 30.267530327893
+ ],
+ "elevation": 63.4
+ },
+ {
+ "coord": [
+ 120.1544237802,
+ 30.267628955416
+ ],
+ "elevation": 60.8
+ },
+ {
+ "coord": [
+ 120.15529756245,
+ 30.268924325393
+ ],
+ "elevation": 21.2
+ },
+ {
+ "coord": [
+ 120.15589149396,
+ 30.269004337429
+ ],
+ "elevation": 29.2
+ },
+ {
+ "coord": [
+ 120.15609194152,
+ 30.268589561924
+ ],
+ "elevation": 15.4
+ },
+ {
+ "coord": [
+ 120.15676133933,
+ 30.268572648111
+ ],
+ "elevation": 19.8
+ },
+ {
+ "coord": [
+ 120.15753165896,
+ 30.268758403006
+ ],
+ "elevation": 20.2
+ },
+ {
+ "coord": [
+ 120.15785586158,
+ 30.269122098642
+ ],
+ "elevation": 19.6
+ },
+ {
+ "coord": [
+ 120.15860972383,
+ 30.268341586602
+ ],
+ "elevation": 21.1
+ },
+ {
+ "coord": [
+ 120.15982652241,
+ 30.268741636566
+ ],
+ "elevation": 19.8
+ }
+ ]
+]
\ No newline at end of file
diff --git a/bigScreen/src/views/assessment/index.vue b/bigScreen/src/views/assessment/index.vue
new file mode 100644
index 0000000..b21fdbd
--- /dev/null
+++ b/bigScreen/src/views/assessment/index.vue
@@ -0,0 +1,717 @@
+<template>
+ <div v-loading="loading">
+ <div>
+ <div class="rightTableTitle">
+ <div>
+ <span style="width: 50px">鏃堕棿:</span>
+ <el-date-picker
+ v-model="leftList.time"
+ type="datetimerange"
+ range-separator="-"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ size="mini"
+ style="width: 200px; margin-left: 10px"
+ >
+ </el-date-picker>
+ </div>
+ <div style="margin-left: 20px">
+ <span style="width: 50px">棰戠巼:</span>
+ <el-input
+ v-model="leftList.frequency"
+ placeholder="棰戠巼"
+ style="width: 200px; margin-left: 10px"
+ size="mini"
+ ></el-input>
+ </div>
+
+ <div style="margin-left: 20px">
+ <span style="width: 50px">鎵ц浜�</span>
+ <el-input
+ v-model="selectionConditions.executor"
+ placeholder="鎵ц浜�"
+ style="width: 200px; margin-left: 10px"
+ size="mini"
+ ></el-input>
+ </div>
+
+ <div style="margin-left: 20px">
+ <span style="width: 50px">鐩戞祴鐐�</span>
+
+ <el-input
+ v-model="selectionConditions.monitoringPoint"
+ placeholder="鐩戞祴鐐�"
+ style="width: 200px; margin-left: 10px"
+ size="mini"
+ ></el-input>
+ </div>
+ </div>
+ <div class="rightTableTitle">
+ <div>
+ <span style="width: 50px">璇勪及鍊肩姸鎬�</span>
+ <el-radio-group
+ v-model="selectionConditions.assessmentRadio"
+ style="margin-left: 10px"
+ size="mini"
+ >
+ <el-radio :label="1">鏄剧ず鍏ㄩ儴</el-radio>
+ <el-radio :label="2">宸茶瘎浼�</el-radio>
+ <el-radio :label="3">鏈瘎浼�</el-radio>
+ </el-radio-group>
+ </div>
+
+ <div
+ style="margin-left: 50px"
+ v-if="selectionConditions.assessmentRadio == 2"
+ >
+ <span style="width: 50px">璇勪及鍒嗗��</span>
+ <el-slider
+ v-model="selectionConditions.assessmentValue"
+ range
+ show-stops
+ :max="5"
+ :min="1"
+ style="
+ width: 250px;
+ margin-left: 10px;
+ display: inline-block;
+ vertical-align: top;
+ margin-top: -10px;
+ "
+ size="mini"
+ >
+ </el-slider>
+ </div>
+ </div>
+ </div>
+ <div class="assessmentMain" :style="{ height: bHtight }">
+ <div class="leftSel" :style="{ height: bHtight }">
+ <v-tree
+ :data="allArrData"
+ show-line
+ @select="select"
+ ref="allTree"
+ ></v-tree>
+ </div>
+ <div class="rightTable" :style="{ height: bHtight }">
+ <div>
+ <el-table
+ :data="screenTableData"
+ style="width: 96%; margin-left: 2%"
+ :height="tHeight"
+ :key="key"
+ border
+ >
+ <el-table-column prop="frequency" label="棰戠巼"> </el-table-column>
+ <el-table-column prop="username" label="鎵ц浜�"> </el-table-column>
+ <el-table-column prop="wdate" label="鏃ユ湡" sortable>
+ <template slot-scope="scope">
+ <div>
+ {{ formatDate(scope.row.wdate) }}
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="whour" label="鏃堕挓"> </el-table-column>
+ <el-table-column
+ prop="assessvalue"
+ label="璇勪及鍒嗗��"
+ fixed="right"
+ sortable
+ >
+ <template slot-scope="scope">
+ <div style="display: flex">
+ <p
+ v-show="!scope.row.edit"
+ style="width: 30px; line-height: 48px"
+ >
+ {{ scope.row.assessvalue }}
+ </p>
+ <el-select
+ v-show="scope.row.edit"
+ v-model="scope.row.assessvalue"
+ placeholder="璇烽�夋嫨璇勫垎"
+ style="width: 90%"
+ >
+ <el-option
+ :label="item"
+ :value="item"
+ v-for="item in selScoreArr"
+ :key="item.id"
+ >
+ </el-option>
+ </el-select>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ :content="scope.row.edit ? '纭' : '璇勪及'"
+ placement="top"
+ style="margin-left: 10px"
+ >
+ <i
+ style="line-height: 48px"
+ :class="{
+ 'el-icon-edit': !scope.row.edit,
+ 'el-icon-check': scope.row.edit,
+ }"
+ @click="sureScore(scope)"
+ ></i>
+ </el-tooltip>
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="monitorpoint_name" label="鐩戞祴鐐�" sortable>
+ </el-table-column>
+ <el-table-column prop="taskstatus" label="浠诲姟鐘舵��">
+ <template slot-scope="scope">
+ <div>
+ {{ scope.row.taskstatus | formatStatus }}
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="update_time" label="浠诲姟瀹屾垚鏃堕棿" sortable>
+ <template slot-scope="scope">
+ <div>
+ {{ formatDateTime(scope.row.update_time) }}
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="update_time" label="鍥炴斁">
+ <template slot-scope="scope">
+ <div>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鐐瑰嚮鍥炴斁"
+ placement="top"
+ >
+ <i class="el-icon-refresh-right" @click="rePlay(scope)"></i>
+ </el-tooltip>
+ </div>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </div>
+
+ <div>
+ <el-dialog title="鎻愮ず" :visible.sync="loginDialogVisible" width="50%">
+ <el-form
+ :model="loginForm"
+ :rules="loginFormRule"
+ ref="loginForm"
+ label-width="80px"
+ >
+ <el-form-item label="鐢ㄦ埛鍚�" prop="username">
+ <el-input v-model="loginForm.username"></el-input>
+ </el-form-item>
+ <el-form-item label="瀵嗙爜" prop="password">
+ <el-input v-model="loginForm.password"></el-input>
+ </el-form-item>
+
+ <el-form-item>
+ <el-button type="primary" @click="submitForm('loginForm')"
+ >纭畾</el-button
+ >
+ <el-button @click="loginDialogVisible = false">鍙栨秷</el-button>
+ </el-form-item>
+ </el-form>
+ </el-dialog>
+ </div>
+ </div>
+
+ <el-dialog :visible.sync="socketPlay" width="50" @close="socketReplay">
+ <video
+ id="socketVidoPlay"
+ ref="socketVidoPlay"
+ src=""
+ controls
+ preload
+ width="100%"
+ height="300"
+ ></video>
+ </el-dialog>
+ </div>
+</template>
+<script>
+export default {
+ filters: {
+ formatStatus(status) {
+ if (status == 0) {
+ return "鏈畬鎴�";
+ } else if (status == 1) {
+ return "瀹屾垚";
+ } else {
+ return "--";
+ }
+ },
+ },
+ watch: {
+ selectionConditions: {
+ handler(n, o) {
+ this.loading = true;
+ let result;
+ var objIsEmpty =
+ this.selectionConditions.executor == "" &&
+ this.selectionConditions.monitoringPoint == "" &&
+ this.selectionConditions.state == "";
+ if (objIsEmpty) {
+ result = JSON.parse(JSON.stringify(this.showTableData));
+ } else {
+ let tempFilter = {};
+ if (this.selectionConditions.executor) {
+ tempFilter.username = this.selectionConditions.executor;
+ }
+ if (this.selectionConditions.monitoringPoint) {
+ tempFilter.monitorpoint_name =
+ this.selectionConditions.monitoringPoint;
+ }
+ if (this.selectionConditions.state) {
+ tempFilter.taskstatus = this.selectionConditions.state;
+ }
+
+ result = this.showTableData.filter(
+ //绛涢��
+ (item) => {
+ let flag = false;
+
+ for (const key in tempFilter) {
+ if (
+ item[key].toString().indexOf(tempFilter[key].toString()) >= 0
+ ) {
+ flag = true;
+ } else {
+ flag = false;
+ break;
+ }
+ }
+ if (flag) {
+ return item;
+ }
+ }
+ );
+ }
+
+ let tmpScreenTableData = [];
+
+ result.forEach((item) => {
+ if (this.selectionConditions.assessmentRadio == 1) {
+ tmpScreenTableData.push(item);
+ } else if (this.selectionConditions.assessmentRadio == 2) {
+ if (
+ Number(item.assessvalue) >=
+ this.selectionConditions.assessmentValue[0] &&
+ Number(item.assessvalue) <=
+ this.selectionConditions.assessmentValue[1]
+ ) {
+ tmpScreenTableData.push(item);
+ }
+ } else if (this.selectionConditions.assessmentRadio == 3) {
+ if (item.assessvalue) {
+ } else {
+ tmpScreenTableData.push(item);
+ }
+ } else {
+ }
+ });
+ tmpScreenTableData.forEach((item) => {
+ item.edit = false;
+ });
+ this.screenTableData = tmpScreenTableData;
+ this.loading = false
+ },
+ deep: true,
+ },
+ leftList: {
+ handler(n, o) {
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ this.timer = setTimeout(() => {
+ this.getInfo();
+ }, 1000);
+ },
+ deep: true,
+ },
+ },
+ data() {
+ return {
+ socketPlay: false,
+ playVideo: null,
+ timer: null,
+ leftList: {
+ frequency: "",
+ time: [new Date(new Date().getTime() - 86400 * 7 * 1000), new Date()],
+ },
+ edit: false,
+ searchInput: "",
+ tHeight: "",
+ bHtight: "",
+ key: false,
+ showTableData: [],
+ selectionConditions: {
+ executor: "",
+ monitoringPoint: "",
+ state: "",
+ assessmentRadio: 1,
+ assessmentValue: [1, 5],
+ },
+ allArrData: [],
+ screenTableData: [],
+ selScoreArr: [1, 2, 3, 4, 5, "鏃犳晥"],
+ assessmentDialog: false,
+ selScoreValue: "",
+ loading: false,
+ loginDialogVisible: false,
+ loginForm: {
+ username: "",
+ password: "",
+ },
+ loginFormRule: {
+ username: [
+ { required: true, message: "璇疯緭鍏ョ敤鎴峰悕", trigger: "blur" },
+ ],
+ password: [{ required: true, message: "璇疯緭鍏ュ瘑鐮�", trigger: "blur" }],
+ },
+ };
+ },
+ mounted() {
+ this.tHeight = window.innerHeight - 120 + "px";
+ this.bHtight = window.innerHeight - 100 + "px";
+ this.getInfo();
+ // let aaa = this.try()
+ // console.log(aaa)
+ },
+ methods: {
+ // try() {
+ // var p = new Promise(function (resolve, reject) {
+ // setTimeout(() => {
+ // resolve("qweqweqwe");
+ // }, 2000);
+ // });
+ // return p
+ // },
+
+ socketReplay() {
+ if (this.playVideo) {
+ this.playVideo.pause();
+ this.playVideo = null;
+ }
+ },
+ rePlay(scope) {
+ if (scope.row.update_time) {
+ let startTime = this.dateFormatter(
+ new Date(new Date(scope.row.update_time).getTime())
+ );
+ let endTime = this.dateFormatter(
+ new Date(new Date(scope.row.update_time).getTime() + 1000 * 60 * 180)
+ );
+
+ let param = new URLSearchParams();
+ param.append("method", "mutipleReview");
+ param.append("instruct", 1);
+ param.append("playType", 1);
+ param.append("hls", 1);
+ param.append("key", 123456);
+ param.append("monitorpointId", scope.row.monitorpoint_id);
+ param.append("frequencyValue", scope.row.frequency);
+ param.append("startTime", startTime);
+ param.append("endTime", endTime);
+
+ this.$post(window.equipmentURL + "FRP/NetRequest.do", param).then(
+ (res) => {
+ if (res.success == "true") {
+ this.socketPlay = true;
+
+ this.playVideo = this.$refs.socketVidoPlay;
+ if (Hls.isSupported()) {
+ var hls = new Hls();
+ hls.loadSource(res.url);
+ hls.attachMedia(this.playVideo);
+ hls.on(Hls.Events.MANIFEST_PARSED, function () {
+ this.playVideo.play();
+ });
+ } else if (
+ this.playVideo.canPlayType("application/vnd.apple.mpegurl")
+ ) {
+ this.playVideo.src = res.url;
+ this.playVideo.addEventListener("loadedmetadata", function () {
+ this.playVideo.play();
+ });
+ }
+ } else {
+ this.$message.error(res.msg);
+ }
+ }
+ );
+ } else {
+ this.$message.warning("灏氭湭鏈夊洖鏀�");
+ }
+ },
+ showLogin() {
+ window.location.href = window.backstageURL + "ammonitor/#/passport/login";
+ },
+ submitForm(formName) {
+ this.$refs[formName].validate((valid) => {
+ if (valid) {
+ let param = new URLSearchParams();
+ param.append("bid", "login");
+ param.append("userid", this.loginForm.username);
+ param.append("psw", this.loginForm.password);
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ if (res.data.data.length == 0) {
+ this.$message.error("鐢ㄦ埛鍚嶆垨鑰呭瘑鐮侀敊璇�");
+ } else {
+ sessionStorage.setItem(
+ "userName",
+ JSON.stringify(res.data.data[0])
+ );
+ this.loginDialogVisible = false;
+ this.isLogin = true;
+ }
+ });
+ } else {
+ return false;
+ }
+ });
+ },
+
+ sureScore(scope) {
+ this.loading = true;
+ if (scope.row.edit) {
+ if (localStorage.getItem("user") && localStorage.getItem("_token")) {
+ let time = "";
+ if (scope.row.update_time) {
+ time = this.formatDateTime(new Date(scope.row.update_time));
+ } else {
+ time = this.formatDateTime(new Date());
+ }
+
+ let userInfo = JSON.parse(localStorage.getItem("user"));
+ let userIdInfo = JSON.parse(localStorage.getItem("_token"));
+ let param = new URLSearchParams();
+ let ass = null;
+ if (scope.row.assessvalue == "鏃犳晥") {
+ ass = 0;
+ } else {
+ ass = scope.row.assessvalue;
+ }
+ param.append("bid", "assessPress");
+ param.append("frequency", scope.row.frequency);
+ param.append("monitorpointId", scope.row.monitorpoint_id);
+ param.append("assessvalue", ass);
+ param.append("taskid", scope.row.id);
+ param.append("userName", userInfo.name);
+ param.append("userid", userIdInfo.account);
+
+ param.append("recording_time", time);
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ if (res.code == 20000) {
+ this.$message.success(res.data.data[0][0].messg);
+ } else {
+ this.$message.error(res.data.data[0][0].messg);
+ }
+ });
+ } else {
+ this.showLogin();
+ }
+ }
+ scope.row.edit = !scope.row.edit;
+ this.key = !this.key;
+ this.loading = false;
+ },
+ formatDate(date) {
+ if (date) {
+ let time = new Date(date);
+ var year = time.getFullYear();
+ var month = time.getMonth() + 1;
+ var date = time.getDate();
+ return this.add0(year) + "-" + this.add0(month) + "-" + this.add0(date);
+ } else {
+ return "--";
+ }
+ },
+
+ formatDateTime(date) {
+ if (date) {
+ let time = new Date(date);
+ var year = time.getFullYear();
+ var month = time.getMonth() + 1;
+ var date = time.getDate();
+ var hour = time.getHours();
+ var minute = time.getMinutes();
+ var second = time.getSeconds();
+ return (
+ this.add0(year) +
+ "-" +
+ this.add0(month) +
+ "-" +
+ this.add0(date) +
+ " " +
+ this.add0(hour) +
+ ":" +
+ this.add0(minute) +
+ ":" +
+ this.add0(second)
+ );
+ } else {
+ return "--";
+ }
+ },
+
+ add0(val) {
+ return val < 10 ? "0" + val : val;
+ },
+
+ getInfo() {
+ if (localStorage.getItem("user") && localStorage.getItem("_token")) {
+ this.loading = true;
+ let userInfo = JSON.parse(localStorage.getItem("user"));
+ let userIdInfo = JSON.parse(localStorage.getItem("_token"));
+
+ let param = {
+ bid: "getTasklistA",
+ userid: "admin",
+ start_time: this.formatDateTime(this.leftList.time[0].getTime()),
+ end_time: this.formatDateTime(this.leftList.time[1].getTime()),
+ frequency: "",
+ username: "",
+ monitorpointname: "",
+ assessvalue: "",
+ };
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ let tmpArr = JSON.parse(JSON.stringify(res.data.data.schedules));
+
+ tmpArr.forEach((item) => {
+ item.title = item.name;
+ item.isFir = 1;
+ item.expanded = false;
+ item.selected = false;
+ item.disableCheckbox = false;
+ item.children = item.subschedules;
+
+ item.subschedules.forEach((secItem) => {
+ secItem.isFir = 2;
+ secItem.title = secItem.name;
+ secItem.disableCheckbox = true;
+ secItem.myThrArr = secItem.tasklist;
+ });
+ });
+ this.allArrData = tmpArr;
+ this.loading = false;
+ });
+ } else {
+ this.showLogin();
+ }
+ },
+
+ select(param) {
+ if (param.length == 0) {
+ this.screenTableData = [];
+ this.key = !this.key;
+ this.$message.warning("璇风偣鍑婚�変腑鑺傜偣");
+ } else {
+ this.loading = true;
+ if (param[0].isFir == 2) {
+ if (param[0].myThrArr.length == 0) {
+ this.$message.warning("娌℃湁鏁版嵁");
+ this.screenTableData = [];
+ this.key = !this.key;
+ this.loading = false;
+ } else {
+ this.showTableData = param[0].myThrArr;
+ this.screenTableData = JSON.parse(
+ JSON.stringify(this.showTableData)
+ );
+ this.key = !this.key;
+ this.loading = false;
+ }
+ } else {
+ this.$message.warning("璇烽�夋嫨瀛愯妭鐐�");
+ this.screenTableData = [];
+ this.key = !this.key;
+ this.loading = false;
+ }
+ // this.loading = false;
+ }
+ },
+
+ screenShowData(name) {
+ let screenData = [];
+ this.showTableData.forEach((item) => {});
+ },
+
+ dateFormatter(time) {
+ if (time) {
+ var year = time.getFullYear();
+ var month = time.getMonth() + 1;
+ var date = time.getDate();
+ var hour = time.getHours();
+ var minute = time.getMinutes();
+ var second = time.getSeconds();
+ return (
+ this.add0(year) +
+ "-" +
+ this.add0(month) +
+ "-" +
+ this.add0(date) +
+ " " +
+ this.add0(hour) +
+ ":" +
+ this.add0(minute) +
+ ":" +
+ this.add0(second)
+ );
+ } else {
+ return 0;
+ }
+ },
+
+ add0(val) {
+ return val < 10 ? "0" + val : val;
+ },
+ },
+};
+</script>
+<style lang="scss">
+.assessmentMain {
+ width: 96%;
+ margin-left: 2%;
+ overflow: hidden;
+ display: flex;
+ flex-wrap: nowrap;
+ flex-direction: row;
+ justify-content: space-between;
+}
+.leftSel {
+ width: 20%;
+ text-align: left;
+ overflow-y: scroll;
+ border-right: 1px dashed #cccccc;
+}
+.rightTable {
+ width: 80%;
+}
+
+.rightTableTitle {
+ width: 96%;
+ margin-left: 2%;
+ height: 50px;
+ margin-top: 20px;
+ display: flex;
+ flex-wrap: nowrap;
+ overflow-x: scroll;
+}
+
+/deep/ .el-form-item__content {
+ margin-left: 10px !important;
+}
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/collectionDetails/index.vue b/bigScreen/src/views/collectionDetails/index.vue
new file mode 100644
index 0000000..80b82e9
--- /dev/null
+++ b/bigScreen/src/views/collectionDetails/index.vue
@@ -0,0 +1,452 @@
+<template>
+ <div class="app-container">
+ <el-row>
+ <el-col
+ :span="24"
+ style="height: 45px; text-align: left; margin-top: 20px"
+ >
+ <el-radio-group v-model="type" style="margin-right: 15px">
+ <el-radio-button label="鏃堕棿娈�"></el-radio-button>
+ <el-radio-button label="鍗曟棩"></el-radio-button>
+ <el-radio-button label="鍗曟湀"></el-radio-button>
+ <el-radio-button label="骞村害"></el-radio-button>
+ </el-radio-group>
+ <span style="margin-right: 15px">
+ <el-date-picker
+ v-model="search.valueDay"
+ :type="
+ type == '鏃堕棿娈�'
+ ? 'date'
+ : type == '鍗曟湀'
+ ? 'month'
+ : type == '骞村害'
+ ? 'year'
+ : 'date'
+ "
+ :placeholder="
+ type == '鏃堕棿娈�'
+ ? '閫夋嫨鏃ユ湡'
+ : type == '鍗曟湀'
+ ? '閫夋嫨鏈堜唤'
+ : type == '骞村害'
+ ? '閫夋嫨骞翠唤'
+ : '閫夋嫨鏃ユ湡'
+ "
+ clearable
+ style="width: 130px"
+ ></el-date-picker>
+ </span>
+ <span v-show="type == '鏃堕棿娈�'" style="margin-right: 15px">
+ <el-time-select
+ v-model="search.valueTime"
+ :picker-options="{
+ start: '00:00',
+ step: '00:30',
+ end: '23:30',
+ }"
+ placeholder="閫夋嫨鏃堕棿"
+ clearable
+ style="width: 130px"
+ ></el-time-select>
+ </span>
+ <el-input
+ placeholder="鏌ヨ骞挎挱"
+ suffix-icon="el-icon-service"
+ v-model="search.search_fm"
+ style="margin-right: 15px; width: 130px"
+ ></el-input>
+ <el-select
+ v-model="determine"
+ placeholder="璇烽�夋嫨鍒ゅ畾缁撴灉"
+ @change="handleChange"
+ style="margin-right: 15px"
+ >
+ <el-option
+ v-for="item in options"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ ></el-option>
+ </el-select>
+ </el-col>
+
+ <el-col :span="24" class="Device" style="margin-top: 30px">
+ <el-table
+ :data="tableData"
+ :height="tableH"
+ v-loading="loading"
+ stripe
+ size="small"
+ class="detailTable"
+ >
+ <el-table-column type="index" label="#"></el-table-column>
+ <el-table-column label="棰戠巼" prop="frequencyValue"></el-table-column>
+ <el-table-column
+ label="鎬绘壂鎻忔鏁�"
+ prop="count_total"
+ ></el-table-column>
+ <el-table-column label="鍚堟硶棰戠巼" width="180">
+ <template slot-scope="scope">
+ <el-progress
+ :percentage="
+ percentage(scope.row.count_total, scope.row.count_status_0)
+ "
+ :text-inside="true"
+ :stroke-width="15"
+ :color="color"
+ style="width: 120px; display: inline-block"
+ ></el-progress>
+ <small>{{ scope.row.count_status_0 }}</small>
+ </template>
+ </el-table-column>
+ <el-table-column label="闈炴硶棰戠偣" width="180">
+ <template slot-scope="scope">
+ <el-progress
+ :percentage="
+ percentage(scope.row.count_total, scope.row.count_status_1)
+ "
+ :text-inside="true"
+ :stroke-width="15"
+ :color="color"
+ style="width: 120px; display: inline-block"
+ ></el-progress>
+ <small>{{ scope.row.count_status_1 }}</small>
+ </template>
+ </el-table-column>
+ <el-table-column label="璇姤" width="180">
+ <template slot-scope="scope">
+ <el-progress
+ :percentage="
+ percentage(scope.row.count_total, scope.row.count_status_2)
+ "
+ :text-inside="true"
+ :stroke-width="15"
+ :color="color"
+ style="width: 120px; display: inline-block"
+ ></el-progress>
+ <small>{{ scope.row.count_status_2 }}</small>
+ </template>
+ </el-table-column>
+ <el-table-column label="鐧藉悕鍗�" width="180">
+ <template slot-scope="scope">
+ <el-progress
+ :percentage="
+ percentage(scope.row.count_total, scope.row.count_status_3)
+ "
+ :text-inside="true"
+ :stroke-width="15"
+ :color="color"
+ style="width: 120px; display: inline-block"
+ ></el-progress>
+ <small>{{ scope.row.count_status_3 }}</small>
+ </template>
+ </el-table-column>
+ <el-table-column label="寮傚湴棰戠偣" width="180">
+ <template slot-scope="scope">
+ <el-progress
+ :percentage="
+ percentage(scope.row.count_total, scope.row.count_status_4)
+ "
+ :text-inside="true"
+ :stroke-width="15"
+ :color="color"
+ style="width: 120px; display: inline-block"
+ ></el-progress>
+ <small>{{ scope.row.count_status_4 }}</small>
+ </template>
+ </el-table-column>
+ <el-table-column label="鐤戜技闈炴硶棰戠偣" width="180">
+ <template slot-scope="scope">
+ <el-progress
+ :percentage="
+ percentage(scope.row.count_total, scope.row.count_status_5)
+ "
+ :text-inside="true"
+ :stroke-width="15"
+ :color="color"
+ style="width: 120px; display: inline-block"
+ ></el-progress>
+ <small>{{ scope.row.count_status_5 }}</small>
+ </template>
+ </el-table-column>
+ <el-table-column label="鍏朵粬" width="180">
+ <template slot-scope="scope">
+ <el-progress
+ :percentage="
+ percentage(scope.row.count_total, scope.row.count_status_6)
+ "
+ :text-inside="true"
+ :stroke-width="15"
+ :color="color"
+ style="width: 120px; display: inline-block"
+ ></el-progress>
+ <small>{{ scope.row.count_status_6 }}</small>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="骞冲潎鍦哄己鍊�" prop="avg_level">
+ </el-table-column>
+
+ <el-table-column label="鎿嶄綔" width="120">
+ <template slot-scope="scope">
+ <el-button size="mini" type="success" @click="lookAll(scope)"
+ >鏌ョ湅鍏ㄩ儴</el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-col>
+ <el-col :span="24" style="margin-top: 5px">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="pageNo"
+ :page-sizes="[10, 20, 30, 50]"
+ :page-size="pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="totalCount"
+ >
+ </el-pagination>
+ </el-col>
+ </el-row>
+ </div>
+</template>
+<script>
+import { originalColor } from "@/utils/chartCustomer.js";
+
+import data from "@/utils/other.js";
+
+export default {
+ watch: {
+ search: {
+ handler(n, o) {
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ this.timer = setTimeout(() => {
+ this.getInfo();
+ }, 300);
+ },
+ deep: true,
+ },
+ determine: {
+ handler(n, o) {
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ this.timer = setTimeout(() => {
+ this.getInfo();
+ }, 500);
+ },
+ deep: true,
+ },
+ type: {
+ handler(n, o) {
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ this.timer = setTimeout(() => {
+ this.getInfo();
+ }, 500);
+ },
+ deep: true,
+ },
+ },
+ data() {
+ return {
+ timer: null,
+ totalCount: 100,
+ pageNo: 1,
+ pageSize: 10,
+ tableData: [],
+ tableH: null,
+ otherAct: [{ item: "鏌ョ湅鎵�鏈�", id: "", type: "primary" }],
+ type: "骞村害",
+ options: [
+ {
+ value: "0",
+ label: "鍚堟硶棰戠巼",
+ },
+ {
+ value: "1",
+ label: "闈炴硶棰戠偣",
+ },
+ {
+ value: "2",
+ label: "璇姤",
+ },
+ {
+ value: "3",
+ label: "鐧藉悕鍗�",
+ },
+ {
+ value: "4",
+ label: "寮傚湴棰戠偣",
+ },
+ {
+ value: "5",
+ label: "鐤戜技闈炴硶棰戠偣",
+ },
+ {
+ value: "6",
+ label: "鍏朵粬",
+ },
+ ],
+
+ queryParams: {
+ page: 1,
+ size: 10,
+ VF: "",
+ table: "t_fm_scan_timestamp",
+ },
+ determine: "",
+ search: {
+ valueTime: new Date().getHours() + ":00",
+ valueDay: new Date(),
+ search_fm: "",
+ },
+ loading: false,
+ colors: originalColor,
+ color: [
+ { color: "#9D96F5", percentage: 10 },
+ { color: "#FF9F7F", percentage: 20 },
+ { color: "#FB7293", percentage: 30 },
+ { color: "#37A2DA", percentage: 40 },
+ { color: "#67E0E3", percentage: 50 },
+ { color: "#9FE6B8", percentage: 60 },
+ { color: "#E690D1", percentage: 80 },
+ { color: "#E7BCF3", percentage: 100 },
+ ],
+ };
+ },
+ mounted() {
+ this.tableH = window.innerHeight - 135 + "px";
+ this.tableData = data.data;
+ this.getInfo();
+ },
+ methods: {
+ lookAll(scope) {
+ this.$router.push({
+ path: "/lookAllDetails",
+ query: { frequency: scope.row.frequencyValue },
+ });
+ },
+ getInfo() {
+
+ this.loading = true;
+ let typeValue = this.formatType(this.type);
+
+ let dateValue =
+ this.search.valueDay == ""
+ ? "2021"
+ : this.formatDate(this.search.valueDay);
+
+ let tmeValue =
+ this.type == "鏃堕棿娈�" ? this.search.valueTime.split(":")[0] : "";
+ let param = {
+ bid: "getStatSepctrum",
+ querymode: typeValue,
+ timevalue1: dateValue,
+ timevalue2: tmeValue,
+ statuvalue_: this.determine == "" ? 5 : this.determine,
+ frequency: this.search.search_fm,
+ pageno: this.pageNo,
+ pagesize: this.pageSize,
+ };
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ this.tableData = res.data.data[0];
+ this.totalCount = Number(res.data.data[1][0].counter);
+ this.loading = false
+ });
+ },
+
+ handleSizeChange(size) {
+ this.pageSize = size;
+ this.getInfo();
+ },
+ handleCurrentChange(page) {
+ this.pageNo = page;
+ this.getInfo();
+ },
+ handleChange(value) {
+ this.queryParams.determine = value;
+ },
+ handleSearch() {
+ this.getInfo();
+ },
+
+ formatType(type) {
+ if (type == "鏃堕棿娈�") {
+ return "time";
+ } else if (type == "鍗曟棩") {
+ return "day";
+ } else if (type == "鍗曟湀") {
+ return "month";
+ } else if (type == "骞村害") {
+ return "year";
+ }
+ },
+
+ formatDate(date) {
+ if (date) {
+ let year = date.getFullYear();
+ let month = date.getMonth() + 1;
+ let day = date.getDate();
+
+ if (this.type == "骞村害") {
+ return year;
+ } else if (this.type == "鍗曟湀") {
+ return year + "-" + this.add0(month);
+ } else if (this.type == "鍗曟棩" || this.type == "鏃堕棿娈�") {
+ return year + "-" + this.add0(month) + "-" + this.add0(day);
+ } else {
+ return "";
+ }
+ }
+ },
+
+ add0(val) {
+ return val < 10 ? "0" + val : val;
+ },
+
+ percentage(total, item) {
+ item = parseFloat(Number(item));
+ total = parseFloat(Number(total));
+ if (isNaN(item) || isNaN(total)) {
+ return "-";
+ }
+ return Math.round((item / total) * 10000) / 100.0;
+ },
+ getTagType(text) {
+ let color = "";
+ for (let k in this.colors) {
+ if (this.colors[k].name == text) {
+ color = this.colors[k].color;
+ }
+ }
+ if (color == "") {
+ color = "#212121";
+ }
+ return color;
+ },
+ },
+};
+</script>
+<style lang="scss">
+.app-container {
+ width: 96%;
+ margin-left: 2%;
+}
+.detailTable .el-progress-bar__innerText {
+ color: #000000 !important;
+ font-size: 10px;
+ padding: 0 5px;
+}
+
+small {
+ margin-left: 5px;
+}
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/collectionDetails/lookAllDetails.vue b/bigScreen/src/views/collectionDetails/lookAllDetails.vue
new file mode 100644
index 0000000..98e9ce0
--- /dev/null
+++ b/bigScreen/src/views/collectionDetails/lookAllDetails.vue
@@ -0,0 +1,421 @@
+<template>
+ <div class="app-container">
+ <el-row>
+ <el-col
+ :span="24"
+ style="height: 45px; text-align: left; margin-top: 20px"
+ >
+ <el-radio-group v-model="type" style="margin-right: 15px">
+ <el-radio-button label="鏃堕棿娈�"></el-radio-button>
+ <el-radio-button label="鍗曟棩"></el-radio-button>
+ <el-radio-button label="鍗曟湀"></el-radio-button>
+ <el-radio-button label="骞村害"></el-radio-button>
+ </el-radio-group>
+ <span style="margin-right: 15px">
+ <el-date-picker
+ v-model="search.valueDay"
+ :type="
+ type == '鏃堕棿娈�'
+ ? 'date'
+ : type == '鍗曟湀'
+ ? 'month'
+ : type == '骞村害'
+ ? 'year'
+ : 'date'
+ "
+ :placeholder="
+ type == '鏃堕棿娈�'
+ ? '閫夋嫨鏃ユ湡'
+ : type == '鍗曟湀'
+ ? '閫夋嫨鏈堜唤'
+ : type == '骞村害'
+ ? '閫夋嫨骞翠唤'
+ : '閫夋嫨鏃ユ湡'
+ "
+ clearable
+ style="width: 130px"
+ ></el-date-picker>
+ </span>
+ <span v-show="type == '鏃堕棿娈�'" style="margin-right: 15px">
+ <el-time-select
+ v-model="search.valueTime"
+ :picker-options="{
+ start: '00:00',
+ step: '00:30',
+ end: '23:30',
+ }"
+ placeholder="閫夋嫨鏃堕棿"
+ clearable
+ style="width: 130px"
+ ></el-time-select>
+ </span>
+ <el-select
+ v-model="monitorpointName"
+ placeholder="鏌ヨ绔欑偣鍚嶅瓧"
+ @change="handleChange"
+ clearable
+ style="margin-right: 15px"
+ >
+ <el-option
+ v-for="item in selMonitorpointName"
+ :key="item"
+ :label="item"
+ :value="item"
+ ></el-option>
+ </el-select>
+ </el-col>
+
+ <el-col :span="24" class="Device" style="margin-top: 30px">
+ <el-table
+ :data="tableData"
+ :height="tableH"
+ v-loading="loading"
+ stripe
+ size="small"
+ class="detailTable"
+ >
+ <el-table-column label="棰戠巼" prop="frequencyValue"></el-table-column>
+ <el-table-column
+ label="绔欑偣鍚嶅瓧"
+ prop="monitorpointName"
+ ></el-table-column>
+ <el-table-column
+ label="骞冲潎鍦哄己鍊�"
+ prop="avg_level"
+ ></el-table-column>
+ <el-table-column label="鐘舵��" prop="status"></el-table-column>
+ <el-table-column label="鎿嶄綔">
+ <template slot-scope="scope">
+ <div>
+ <el-button
+ type="success"
+ @click="lookEcharts(scope)"
+ size="mini"
+ >淇″彿寮哄害</el-button
+ >
+ </div>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-col>
+ <el-col :span="24" style="margin-top: 5px">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="pageNo"
+ :page-sizes="[10, 20, 30, 50]"
+ :page-size="pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="totalCount"
+ >
+ </el-pagination>
+ </el-col>
+ </el-row>
+
+ <el-dialog
+ title="淇″彿寮哄害鍙樺寲瓒嬪娍"
+ :visible.sync="echartVisible"
+ width="80%"
+ :close-on-click-modal="false"
+ >
+ <div ref="myChart" style="width: 100%; height: 400px"></div>
+ </el-dialog>
+ </div>
+</template>
+<script>
+export default {
+ watch: {
+ search: {
+ handler(n, o) {
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ this.timer = setTimeout(() => {
+ this.handleSearch();
+ }, 300);
+ },
+ deep: true,
+ },
+ monitorpointName: {
+ handler(n, o) {
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ this.timer = setTimeout(() => {
+ this.handleSearch();
+ }, 500);
+ },
+ deep: true,
+ },
+ type: {
+ handler(n, o) {
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ this.timer = setTimeout(() => {
+ this.handleSearch();
+ }, 500);
+ },
+ deep: true,
+ },
+ },
+ data() {
+ return {
+ seriesData: [],
+ xAxisData: [],
+ echartVisible: false,
+ totalCount: 100,
+ pageNo: 1,
+ pageSize: 10,
+ tableData: [],
+ tableH: null,
+ otherAct: [{ item: "鏌ョ湅鎵�鏈�", id: "", type: "primary" }],
+ type: "鏃堕棿娈�",
+ queryParams: {
+ page: 1,
+ size: 10,
+ VF: "",
+ table: "t_fm_scan_timestamp",
+ },
+ determine: "",
+ search: {
+ valueTime: "15:00",
+ valueDay: "",
+ },
+ loading: false,
+ selMonitorpointName: [],
+ monitorpointName: "",
+ };
+ },
+ mounted() {
+ this.tableH = window.innerHeight - 135 + "px";
+ let time = new Date();
+ var hour = time.getHours();
+ this.search.valueDay = time;
+ this.search.valueTime = this.add0(hour) + ":00";
+ this.initInfo();
+ },
+ methods: {
+ add0(val) {
+ return val < 10 ? "0" + val : val;
+ },
+ initInfo() {
+ this.getData(1);
+ },
+ getData(isinit) {
+ this.loading = true;
+ let param = {};
+ if (isinit == 1) {
+ param = {
+ bid: "getDetailSepctrum",
+ pageno: 1,
+ pagesize: 10,
+ querymode: "day",
+ monitorPointName: "",
+ frequency: this.$route.query.frequency,
+ timevalue2: "",
+ timevalue1: "",
+ };
+ } else {
+ let typeValue = this.formatType(this.type);
+ let dateValue =
+ this.search.valueDay == ""
+ ? "2021"
+ : this.formatDate(this.search.valueDay);
+ let tmeValue =
+ this.type == "鏃堕棿娈�" ? this.search.valueTime.split(":")[0] : "";
+ param = {
+ bid: "getDetailSepctrum",
+ querymode: typeValue,
+ timevalue1: dateValue,
+ timevalue2: tmeValue,
+ monitorPointName: this.monitorpointName,
+ frequency: this.$route.query.frequency,
+ pageno: this.pageNo,
+ pagesize: this.pageSize,
+ };
+ }
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ this.tableData = res.data.data[0];
+
+ let selName = [];
+ this.tableData.forEach((item) => {
+ selName.push(item.monitorpointName);
+ });
+ this.selMonitorpointName = selName;
+ this.totalCount = res.data.data[1][0].counter;
+ this.loading = false;
+ });
+ },
+
+ handleSizeChange(size) {
+ this.pageSize = size;
+ this.getData(0);
+ },
+ handleCurrentChange(page) {
+ this.pageNo = page;
+ this.getData(0);
+ },
+ handleSearch() {
+ this.getData(0);
+ },
+
+ handleChange(value) {},
+
+ formatType(type) {
+ if (type == "鏃堕棿娈�") {
+ return "time";
+ } else if (type == "鍗曟棩") {
+ return "day";
+ } else if (type == "鍗曟湀") {
+ return "month";
+ } else if (type == "骞村害") {
+ return "year";
+ }
+ },
+
+ formatDate(date) {
+ if (date) {
+ let year = date.getFullYear();
+ let month = date.getMonth() + 1;
+ let day = date.getDate();
+
+ if (this.type == "骞村害") {
+ return year;
+ } else if (this.type == "鍗曟湀") {
+ return year + "-" + this.add0(month);
+ } else if (this.type == "鍗曟棩" || this.type == "鏃堕棿娈�") {
+ return year + "-" + this.add0(month) + "-" + this.add0(day);
+ } else {
+ return "";
+ }
+ }
+ },
+
+ add0(val) {
+ return val < 10 ? "0" + val : val;
+ },
+
+ lookEcharts(scope) {
+ this.loading = true
+ let param = {
+ bid: "getHistorySepctrum",
+ frequency: scope.row.frequencyValue,
+ monitorPointId: scope.row.monitorpointId,
+ };
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ res.data.data[0].forEach((item) => {
+ this.seriesData.push(item.level);
+ this.xAxisData.push(this.formatDateTime(item.time));
+ this.echartVisible = true;
+ });
+ this.getEchartData();
+ });
+ },
+
+ getEchartData() {
+ this.$nextTick(function () {
+ const chart = this.$refs.myChart;
+ if (chart) {
+ const myChart = this.$echarts.init(chart);
+ const option = {
+ grid: {
+ top: "20px",
+
+ left: "45px",
+
+ right: "20px",
+
+ bottom: "40px",
+
+ backgroundColor: "#fff",
+ },
+ dataZoom: [
+ {
+ type: "slider", //婊戝姩杞�
+ start: 0, //璺濈宸︿晶0鍒诲害鐨勮窛绂伙紝1%
+ end: 20, //璺濈宸︿晶0鍒诲害鐨勮窛绂伙紝35%锛岀浉褰撲簬瑙勫畾浜嗘粦鍔ㄧ殑鑼冨洿
+ bottom: -5,
+ },
+ ],
+ xAxis: {
+ type: "category",
+ data: this.xAxisData,
+ axisLabel: {
+ interval: 0,
+ rotate: 0,
+ color: "#FFFFFF",
+ fontSize: 10,
+ },
+ },
+ yAxis: {
+ type: "value",
+ min: 0,
+ max: 120,
+ splitLine: {
+ show: true,
+ lineStyle: {
+ color: "rgba(255,225,255,0.5)",
+ width: 1,
+ type: "solid",
+ },
+ },
+ },
+ series: [
+ {
+ data: this.seriesData,
+ type: "line",
+ color: "#5A82FC",
+ },
+ ],
+ };
+ myChart.setOption(option);
+ window.addEventListener("resize", function () {
+ myChart.resize();
+ });
+ this.loading = false;
+ }
+ });
+ },
+
+ formatDateTime(date) {
+ if (date) {
+ let time = new Date(date);
+ var year = time.getFullYear();
+ var month = time.getMonth() + 1;
+ var date = time.getDate();
+ var hour = time.getHours();
+ var minute = time.getMinutes();
+ var second = time.getSeconds();
+ return (
+ this.add0(year) +
+ "-" +
+ this.add0(month) +
+ "-" +
+ this.add0(date) +
+ " " +
+ this.add0(hour) +
+ ":" +
+ this.add0(minute) +
+ ":" +
+ this.add0(second)
+ );
+ } else {
+ return "--";
+ }
+ },
+ },
+};
+</script>
+<style lang="scss">
+.app-container {
+ width: 96%;
+ margin-left: 2%;
+}
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/components/bigScreenMap.vue b/bigScreen/src/views/components/bigScreenMap.vue
new file mode 100644
index 0000000..fdd4293
--- /dev/null
+++ b/bigScreen/src/views/components/bigScreenMap.vue
@@ -0,0 +1,805 @@
+<template>
+ <div
+ style="width: 100%; height: 100vh; position: relative"
+ v-loading="loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ element-loading-text="姝e湪鍔犺浇鍦板浘"
+ element-loading-spinner="el-icon-loading"
+ id="downMap"
+ >
+ <div id="allmap" ref="allmap" style="width: 100%; height: 100%"></div>
+ <div v-draw class="drawTip" v-if="colorTips">
+ <!-- <div style="display: flex; "> -->
+ <i
+ class="el-icon-close drawTipIcon"
+ style="font-size: 10px"
+ @click="closeTip"
+ ></i>
+
+ <div
+ style="
+ width: 40px;
+ margin-top: 20px;
+ padding-bottom: 20px;
+ margin-left: 10px;
+ "
+ >
+ <div
+ v-for="(item, index) in colors"
+ :key="index"
+ :style="{
+ height: '20px',
+ width: '40px',
+ backgroundColor: item.color,
+ }"
+ >
+ <p
+ v-if="index == 0"
+ style="line-height: 20px; font-size:10px; font-weight: 600"
+ >
+ 0鍒�
+ </p>
+ <p
+ v-if="index + 1 == colors.length"
+ style="line-height: 20px; font-size: 10px; font-weight: 600"
+ >
+ 5鍒�
+ </p>
+ </div>
+ </div>
+ <!-- </div> -->
+ </div>
+ </div>
+</template>
+<script>
+import { MP } from "@/utils/map.js";
+import styleJson from "@/utils/common_map.json";
+
+import district_boundary from "@/utils/district_boundary";
+import district_extent from "@/utils/district_extent";
+import kriging_default_params from "@/utils/kriging_default_params";
+import html2canvas from "html2canvas";
+
+var kriging = require("@/utils/kriging.js");
+
+export default {
+ data() {
+ return {
+ colors: [],
+ colorTips: false,
+ PreviousPoint: null,
+ launchPoint: null,
+ nowType: 0,
+ imgOverlay: null,
+ loading: true,
+ icon: [
+ require("@/assets/1.png"),
+ require("@/assets/2.png"),
+ require("@/assets/3.png"),
+ require("@/assets/4.png"),
+ require("@/assets/5.png"),
+ require("@/assets/wx.png"),
+ require("@/assets/bad.png"),
+ require("@/assets/fashedianDark.png"),
+ require("@/assets/fashedianLight.jpg"),
+ ],
+ allPointData: null,
+ allMaker: [],
+ map: null,
+ ak: "003EurM0nat1YfowgMZPIBpDtGjbGOri",
+ areaList: [
+ "榛勬郸鍖�",
+ "寰愭眹鍖�",
+ "闀垮畞鍖�",
+ "闈欏畨鍖�",
+ "鏅檧鍖�",
+ "铏瑰彛鍖�",
+ "鏉ㄦ郸鍖�",
+ "闂佃鍖�",
+ "瀹濆北鍖�",
+ "鍢夊畾鍖�",
+ "娴︿笢鏂板尯",
+ "閲戝北鍖�",
+ "鏉炬睙鍖�",
+ "闈掓郸鍖�",
+ "濂夎搐鍖�",
+ "宕囨槑鍖�",
+ ],
+ };
+ },
+ watch: {
+ nowType: {
+ handler(n, o) {
+ this.$emit("changeNowType", this.nowType);
+ },
+ },
+ changeAssessValue: {
+ handler(n, o) {
+ if (this.changeAssessValue) {
+ console.log("!!!");
+ let Overlay = this.map.getOverlays();
+ for (let i = 0; i < Overlay.length; i++) {
+ if (Overlay[i].toString() == "[object Marker]") {
+ if (this.changeAssessValue.id == Overlay[i].customData.id) {
+ let iconName = "";
+
+ if (this.changeAssessValue.assessvalue == 1) {
+ iconName = this.icon[0];
+ } else if (this.changeAssessValue.assessvalue == 2) {
+ iconName = this.icon[1];
+ } else if (this.changeAssessValue.assessvalue == 3) {
+ iconName = this.icon[2];
+ } else if (this.changeAssessValue.assessvalue == 4) {
+ iconName = this.icon[3];
+ } else if (this.changeAssessValue.assessvalue == 5) {
+ iconName = this.icon[4];
+ } else {
+ iconName = this.icon[5];
+ }
+
+ let icon = new BMap.Icon(iconName, new BMap.Size(50, 50));
+ var marker = new BMap.Marker(Overlay[i].point, { icon: icon });
+ this.map.removeOverlay(Overlay[i]);
+ this.map.addOverlay(marker);
+
+ //鍒ゆ柇涓婁釜涓潗鏍囨槸鍚﹁褰曪紝鐢ㄤ簬绗竴娆$偣鍑�
+ if (this.PreviousPoint != null) {
+ //濡傛灉涓婁竴涓潗鏍囦笉涓虹┖锛岀Щ闄よ烦鍔ㄥ姩浣滐紝null涓虹Щ闄�
+ this.PreviousPoint.setAnimation(null);
+ }
+ //璁板綍褰撳墠鐐瑰嚮鐨勫潗鏍�
+ this.PreviousPoint = marker;
+ //褰撳墠宸﹁竟寮�濮嬭烦鍔�
+ marker.setAnimation(BMAP_ANIMATION_BOUNCE);
+ }
+ }
+ }
+ }
+ },
+ deep: true,
+ },
+ frequencyValue: {
+ handler(n, o) {
+ if (this.nowType == 0) {
+ if (this.allPointData) {
+ this.dropCanvas();
+ this.getInfo();
+ }
+ } else {
+ this.dropCanvas();
+ this.getInfo();
+ this.addCanvas();
+ }
+ },
+ deep: true,
+ immediate: true,
+ },
+ jumpPointId: {
+ handler(n, o) {
+ let Overlay = this.map.getOverlays();
+ for (let i = 0; i < Overlay.length; i++) {
+ if (Overlay[i].toString() == "[object Marker]") {
+ if (this.jumpPointId == Overlay[i].customData.id) {
+ //鍒ゆ柇涓婁釜涓潗鏍囨槸鍚﹁褰曪紝鐢ㄤ簬绗竴娆$偣鍑�
+ if (this.PreviousPoint != null) {
+ //濡傛灉涓婁竴涓潗鏍囦笉涓虹┖锛岀Щ闄よ烦鍔ㄥ姩浣滐紝null涓虹Щ闄�
+ this.PreviousPoint.setAnimation(null);
+ }
+ //璁板綍褰撳墠鐐瑰嚮鐨勫潗鏍�
+ this.PreviousPoint = Overlay[i];
+ //褰撳墠宸﹁竟寮�濮嬭烦鍔�
+ Overlay[i].setAnimation(BMAP_ANIMATION_BOUNCE);
+ } else {
+ }
+ }
+ }
+ },
+ },
+ isChage: {
+ handler(n, o) {
+ if (this.nowType == 0) {
+ if (this.allPointData) {
+ this.dropCanvas();
+
+ this.getInfo();
+ }
+ } else {
+ this.dropCanvas();
+ this.getInfo();
+
+ this.addCanvas();
+ }
+ },
+ },
+ timeValue: {
+ handler(n, o) {
+ console.log(this.timeValue);
+ if (this.nowType == 0) {
+ // if (this.allPointData) {
+ this.dropCanvas();
+ this.getInfo();
+ // }
+ } else {
+ this.dropCanvas();
+ this.getInfo();
+ this.addCanvas();
+ }
+ },
+ deep: true,
+ immediate: true,
+ },
+ switchValue: {
+ handler(n, o) {
+ if (this.nowType == 0) {
+ if (this.allPointData) {
+ this.dropCanvas();
+ this.getInfo();
+ }
+ } else {
+ this.dropCanvas();
+ this.getInfo();
+ this.addCanvas();
+ }
+ },
+ deep: true,
+ immediate: true,
+ },
+ },
+ props: {
+ changeAssessValue: {
+ type: Object,
+ default: {},
+ },
+ frequencyValue: {
+ type: Number,
+ default: 1557,
+ },
+ timeValue: {
+ type: String,
+ default: "",
+ },
+ switchValue: {
+ type: Number,
+ default: 1,
+ },
+ isChage: {
+ type: Boolean,
+ },
+ jumpPointId: {
+ type: Number,
+ },
+ },
+ mounted() {
+ this.oldMapInit();
+ },
+ methods: {
+ closeTip() {
+ this.colorTips = false;
+ },
+ getColors() {
+ let userid = JSON.parse(localStorage.getItem("user")).name;
+ let param = {
+ bid: "getCoverColors",
+ userid: userid,
+ };
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ console.log();
+ let getColor = JSON.parse(res.data.data[0][0].colors);
+ this.colors = [];
+ // kriging_default_params.colors = getColor;
+ getColor.forEach((item) => {
+ let one = { color: item };
+ this.colors.push(one);
+ this.colorTips = true;
+ });
+ console.log(this.colors);
+ });
+ },
+ tryDown() {
+ html2canvas(document.getElementById("downMap"), {
+ backgroundColor: null, //鐢诲嚭鏉ョ殑鍥剧墖鏈夌櫧鑹茬殑杈规,涓嶈鍙缃儗鏅负閫忔槑鑹诧紙null锛�
+ useCORS: true, //鏀寔鍥剧墖璺ㄥ煙
+ scale: 1, //璁剧疆鏀惧ぇ鐨勫�嶆暟
+ }).then((canvas) => {
+ //鎴浘鐢╥mg鍏冪礌鎵胯锛屾樉绀哄湪椤甸潰鐨勪笂
+ let img = new Image();
+ img.src = canvas.toDataURL("image/jpeg"); // toDataURL :鍥剧墖鏍煎紡杞垚 base64
+ //濡傛灉浣犻渶瑕佷笅杞芥埅鍥撅紝鍙互浣跨敤a鏍囩杩涜涓嬭浇
+ let a = document.createElement("a");
+ a.href = canvas.toDataURL("image/jpeg");
+ a.download = "test";
+ a.click();
+ });
+ },
+ dropCanvas() {
+ this.nowType = 0;
+ this.map.removeOverlay(this.imgOverlay);
+ this.colors = [];
+ this.colorTips = false;
+ },
+ addCanvas() {
+ console.log("a");
+ this.loading = true;
+ this.nowType = 1;
+ let param = new URLSearchParams();
+ if (this.switchValue == 1) {
+ param.append("bid", "getAssessValue");
+ }
+ if (this.switchValue == 0) {
+ param.append("bid", "getAssessValue_auto");
+ }
+ param.append("frequencystr", this.frequencyValue);
+ param.append("wdate", this.timeValue.split(" ")[0]);
+ param.append("whour", this.timeValue.split(" ")[1].split(":")[0]);
+
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ if (res.code == 20000) {
+ let allData = JSON.parse(JSON.stringify(res.data.data[0]));
+ let lngs = [];
+ let lats = [];
+ let values = [];
+ if (allData.length == 0) {
+ // this.map.removeOverlay(this.imgOverlay);脽
+ this.$message.warning("鏆傛棤鏁版嵁鍔犺浇");
+ this.loading = false;
+ } else {
+ allData.forEach((item) => {
+ lngs.push(Number(item.regionLong));
+ lats.push(Number(item.regionLat));
+ values.push(Number(item.paramvalue));
+ });
+ let vvv0 = [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ ];
+ let vvv1 = [
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1,
+ ];
+ let vvv2 = [
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2,
+ ];
+ let vvv3 = [
+ 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3,
+ ];
+ let vvv4 = [
+ 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4,
+ ];
+ let vvv5 = [
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5,
+ ];
+
+ let vvv = [
+ 2, 2, 1, 2, 2, 2, 4, 1, 3, 2, 1, 2, 1, 1, 3, 1, 1, 1, 2, 5, 3, 1,
+ 3, 1, 1, 2, 4,
+ ];
+ // let vvv5 = [0,1,4,5,5,3,1,3,4,7,8,9,0,3,1,3,4]
+ // let vvv6 = [6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6]
+ console.log(values);
+ this.addGridCanvasOverlay(
+ values,
+ lngs,
+ lats,
+ district_boundary,
+ district_extent,
+ 400
+ );
+ console.log("c");
+ }
+ } else {
+ console.log("b");
+ this.loading = false;
+ }
+ });
+ },
+ addGridCanvasOverlay(
+ values,
+ lngs,
+ lats,
+ area_boundary,
+ area_extent,
+ count
+ ) {
+ console.log("d");
+ let letiogram = kriging.train(
+ values,
+ lngs,
+ lats,
+ kriging_default_params.krigingModel,
+ kriging_default_params.krigingSigma2,
+ kriging_default_params.krigingAlpha
+ );
+
+ let grid = kriging.grid(
+ area_boundary,
+ letiogram,
+ (area_extent[2] - area_extent[0]) / count
+ );
+
+ var tmpCanvas = document.createElement("canvas");
+ tmpCanvas.width = 500;
+ tmpCanvas.height = 500;
+ kriging.plot(
+ tmpCanvas,
+ grid,
+ [area_extent[0], area_extent[2]],
+ [area_extent[1], area_extent[3]],
+ kriging_default_params.colors
+ );
+
+ var pStart = new BMap.Point(area_extent[0], area_extent[1]);
+ var pEnd = new BMap.Point(area_extent[2], area_extent[3]);
+
+ var delta_up = 1.2;
+ var bounds = new BMap.Bounds(
+ new BMap.Point(pStart.lng, Number(pEnd.lat) + delta_up),
+ new BMap.Point(pEnd.lng, Number(pStart.lat) + delta_up)
+ );
+
+ // if (this.imgOverlay) {
+ // this.map.removeOverlay(this.imgOverlay);
+ // }
+
+ this.imgOverlay = null;
+
+ this.imgOverlay = new BMap.GroundOverlay(bounds, {
+ imageURL: tmpCanvas.toDataURL(), //tmpCanvas.toDataURL("image/png"),
+ opacity: 0.75,
+ });
+
+ this.map.addOverlay(this.imgOverlay);
+ console.log("f");
+
+ this.loading = false;
+ this.getColors();
+ // setTimeout(() => {
+ // this.colorTips = true;
+ // }, 1000);
+ },
+ oldMapInit() {
+ this.$nextTick(() => {
+ const _this = this;
+ MP(_this.ak).then((BMap) => {
+ _this.mapInit();
+ });
+ });
+ },
+
+ changeMapInit() {
+ if (this.nowType == 0) {
+ this.addCanvas();
+ } else {
+ this.dropCanvas();
+ }
+ },
+ changeColor() {
+ this.dropCanvas();
+ this.addCanvas();
+ },
+ getInfo() {
+ console.log("qqq")
+
+ this.loading = true;
+ console.log(localStorage.getItem("user"))
+ let userid = JSON.parse(localStorage.getItem("user")).name;
+ console.log(userid)
+
+ let param = new URLSearchParams();
+ if (this.switchValue == 1) {
+ param.append("bid", "getPointData");
+ }
+ if (this.switchValue == 0) {
+ param.append("bid", "getPointData_auto");
+ }
+
+ // console.log(this.frequencyValue);
+ console.log(this.timeValue);
+ // console.log(this.timeValue);
+ // console.log(this.timeValue);
+ // console.log(this.timeValue);
+ // console.log(this.timeValue.split(" ")[0]);
+ // console.log(userid);
+ console.log(
+ this.add0(Number(this.timeValue.split(" ")[1].split(":")[0]))
+ );
+
+ param.append("frequency", this.frequencyValue);
+ param.append("wdate", this.timeValue.split(" ")[0]);
+ param.append(
+ "whour",
+ this.add0(Number(this.timeValue.split(" ")[1].split(":")[0]))
+ );
+ param.append("userid", userid);
+
+ console.log(param);
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ console.log(res);
+ this.allPointData = JSON.parse(JSON.stringify(res.data.data[0]));
+
+ this.allPointData.forEach((item) => {
+ if (this.switchValue == 1) {
+ item.pressvalue = item.assessvalue;
+ }
+ if (this.switchValue == 0) {
+ item.pressvalue = item.autopressvalue;
+ }
+ });
+ console.log(this.allPointData);
+ let param1 = new URLSearchParams();
+ param1.append("bid", "getLauncher");
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param1
+ ).then((res1) => {
+ console.log(res1);
+ this.launchPoint = JSON.parse(JSON.stringify(res1.data.data));
+ this.getMarker();
+ });
+ });
+ },
+
+ add0(val) {
+ return val < 10 ? "0" + val : val;
+ },
+
+ /**
+ * 鍒濆鍖栧湴鍥�
+ */
+ mapInit() {
+ console.log("222")
+ this.loading = true;
+ this.map = new BMap.Map("allmap");
+ let point = new BMap.Point(121.479965, 31.234941);
+ this.map.centerAndZoom(point, 11);
+ this.map.enableScrollWheelZoom(true);
+ //涓�у寲鍦板浘
+ this.map.setMapStyleV2({ styleJson: styleJson });
+
+ let that = this;
+
+ //琛屾斂鍖哄垝
+ for (let k in this.areaList) {
+ let bdary = new BMap.Boundary();
+ bdary.get("涓婃捣甯�" + this.areaList[k], function (rs) {
+ var count = rs.boundaries.length;
+ if (count === 0) {
+ return;
+ }
+ var pointArray = [];
+ for (var i = 0; i < count; i++) {
+ var ply = new BMap.Polygon(rs.boundaries[i], {
+ strokeWeight: 2,
+ strokeColor: "#409EFF",
+ fillColor: "rgba(255,255,255,0)",
+ }); //寤虹珛澶氳竟褰㈣鐩栫墿
+ that.map.addOverlay(ply);
+ ply.disableMassClear(); //绂佹鍒犻櫎
+ pointArray = pointArray.concat(ply.getPath());
+ }
+ });
+ }
+ this.dropCanvas();
+ this.getInfo();
+ },
+
+ getMarker() {
+ console.log("1");
+ // this.map.clearOverlays();
+
+ let pointArray = new Array();
+ this.allMaker = [];
+ console.log(this.allPointData);
+ for (let i in this.allPointData) {
+ if (
+ this.isFloat(this.allPointData[i].regionLong) &&
+ this.isFloat(this.allPointData[i].regionLat)
+ ) {
+ let iconName = "";
+ if (this.allPointData[i].status == 1) {
+ if (this.allPointData[i].pressvalue == 1) {
+ iconName = this.icon[0];
+ } else if (this.allPointData[i].pressvalue == 2) {
+ iconName = this.icon[1];
+ } else if (this.allPointData[i].pressvalue == 3) {
+ iconName = this.icon[2];
+ } else if (this.allPointData[i].pressvalue == 4) {
+ iconName = this.icon[3];
+ } else if (this.allPointData[i].pressvalue == 5) {
+ iconName = this.icon[4];
+ } else {
+ iconName = this.icon[5];
+ }
+ } else {
+ iconName = this.icon[6];
+ }
+ let icon = new BMap.Icon(iconName, new BMap.Size(50, 50));
+ let point = new BMap.Point(
+ this.allPointData[i].regionLong,
+ this.allPointData[i].regionLat
+ );
+ pointArray.push(point);
+ let marker = new BMap.Marker(point, { icon: icon });
+
+ marker.customData = { id: this.allPointData[i].monitorpointId };
+
+ let lableStr = this.allPointData[i].rssi
+ ? "+" + this.allPointData[i].rssi
+ : "--";
+
+ let label = new BMap.Label(lableStr, {
+ offset: new BMap.Size(10, -25),
+ });
+ label.setStyle({
+ border: "none",
+ background: "none",
+ color: "red",
+ padding: "3px 5px",
+ fontSize: "14px",
+ });
+ marker.setLabel(label);
+
+ this.allMaker.push({
+ id: this.allPointData[i].monitorpointId,
+ marker: marker,
+ });
+ this.map.addOverlay(marker);
+ this.addActionHandler(this.allPointData[i], marker);
+ console.log("2");
+ }
+ }
+ for (let i in this.launchPoint) {
+ if (
+ this.isFloat(this.launchPoint[i].regionLong) &&
+ this.isFloat(this.launchPoint[i].regionLat)
+ ) {
+ let iconName = "";
+ if (this.launchPoint[i].status == 1) {
+ iconName = this.icon[8];
+ } else {
+ iconName = this.icon[7];
+ }
+ let icon = new BMap.Icon(iconName, new BMap.Size(50, 50));
+ let point = new BMap.Point(
+ this.launchPoint[i].regionLong,
+ this.launchPoint[i].regionLat
+ );
+ pointArray.push(point);
+ let marker = new BMap.Marker(point, { icon: icon });
+
+ this.allMaker.push({
+ id: this.allPointData[i].monitorpointId,
+ marker: marker,
+ });
+ this.map.addOverlay(marker);
+ console.log("3");
+ }
+ }
+
+ console.log("4");
+ this.map.setViewport(pointArray, {
+ margins: [10, 10, 10, 10],
+ zoomFactor: 0,
+ }); //璋冩暣瑙嗛噹鑼冨洿
+ console.log("5");
+ this.loading = false;
+ },
+
+ addActionHandler(content, marker) {
+ let that = this;
+ marker.addEventListener("click", function (e) {
+ that.$emit("showInfo", content);
+ });
+ },
+
+ isFloat(string) {
+ return /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/.test(
+ string
+ );
+ },
+
+ //鏀瑰彉鐘舵��
+ changePointState(data) {
+ let Overlay = this.map.getOverlays();
+ for (let i = 0; i < Overlay.length; i++) {
+ if (Overlay[i].toString() == "[object Marker]") {
+ // console.log(Overlay[i].customData)
+
+ data.forEach((item) => {
+ if (Overlay[i].customData) {
+ if (item.monitorpointId == Overlay[i].customData.id) {
+ // console.log(item);
+ // console.log(Overlay[i].customData.id);
+ // console.log(this.allPointData);
+ let iconName = "";
+
+ if (item.status == 0) {
+ iconName = this.icon[6];
+ }
+ if (item.status == 1) {
+ this.allPointData.forEach((i) => {
+ if (i.monitorpointId == item.monitorpointId) {
+ if (i.assessvalue == 1) {
+ iconName = this.icon[0];
+ } else if (i.assessvalue == 2) {
+ iconName = this.icon[1];
+ } else if (i.assessvalue == 3) {
+ iconName = this.icon[2];
+ } else if (i.assessvalue == 4) {
+ iconName = this.icon[3];
+ } else if (i.assessvalue == 5) {
+ iconName = this.icon[4];
+ } else {
+ iconName = this.icon[5];
+ }
+ }
+ });
+ }
+ console.log(iconName);
+
+ let icon = new BMap.Icon(iconName, new BMap.Size(50, 50));
+ var marker = new BMap.Marker(Overlay[i].point, { icon: icon });
+ this.map.removeOverlay(Overlay[i]);
+ this.map.addOverlay(marker);
+
+ // //鍒ゆ柇涓婁釜涓潗鏍囨槸鍚﹁褰曪紝鐢ㄤ簬绗竴娆$偣鍑�
+ // if (this.PreviousPoint != null) {
+ // //濡傛灉涓婁竴涓潗鏍囦笉涓虹┖锛岀Щ闄よ烦鍔ㄥ姩浣滐紝null涓虹Щ闄�
+ // this.PreviousPoint.setAnimation(null);
+ // }
+ // //璁板綍褰撳墠鐐瑰嚮鐨勫潗鏍�
+ // this.PreviousPoint = marker;
+ // //褰撳墠宸﹁竟寮�濮嬭烦鍔�
+ // marker.setAnimation(BMAP_ANIMATION_BOUNCE);
+ }
+ }
+ });
+ }
+ }
+ },
+ },
+};
+</script>
+<style lang="scss" scoped>
+/deep/ .BMap_Marker .BMap_noprint {
+ z-index: 9999 !important;
+}
+
+.drawTip {
+ z-index: 9000 !important;
+ // overflow: scroll !important;
+ position: fixed !important;
+ top: 150px;
+ // height: 300px !important;
+ width: 60px !important;
+ background-color: white !important;
+ border-radius: 5px;
+ left: 73%;
+ // scrollbar-width: none; /* firefox */
+ // -ms-overflow-style: none; /* IE 10+ */
+ // overflow-x: hidden;
+ // overflow-y: auto;
+
+ .drawTipIcon {
+ position: absolute;
+ right: 5px;
+ top: 5px;
+ }
+}
+
+// .drawTip::-webkit-scrollbar {
+// display: none; /* Chrome Safari */
+// }
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/components/blanketCoverage.vue b/bigScreen/src/views/components/blanketCoverage.vue
new file mode 100644
index 0000000..2a63940
--- /dev/null
+++ b/bigScreen/src/views/components/blanketCoverage.vue
@@ -0,0 +1,266 @@
+<template>
+ <div
+ style="width: 96%; margin-left: 2%"
+ v-loading="loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ element-loading-text="姝e湪鍔犺浇鏁版嵁"
+ element-loading-spinner="el-icon-loading"
+ >
+ <div
+ ref="chart"
+ :style="{ width: '100%', height: chartHeight + 'px' }"
+ ></div>
+ </div>
+</template>
+<script>
+export default {
+ watch: {
+ frequencyValue: {
+ handler(n, o) {
+ this.getInfo();
+ },
+ deep: true,
+ immediate: true,
+ },
+ timeValue: {
+ handler(n, o) {
+ this.getInfo();
+ },
+ deep: true,
+ immediate: true,
+ },
+ switchValue: {
+ handler(n, o) {
+ this.getInfo();
+ },
+ deep: true,
+ immediate: true,
+ },
+ },
+ props: {
+ frequencyValue: {
+ type: Number,
+ default: 1557,
+ },
+ timeValue: {
+ type: String,
+ default: "2021-06-30 17:00",
+ },
+ switchValue: {
+ type: Number,
+ default: 1,
+ },
+ },
+ data() {
+ return {
+ loading: true,
+ chartWidth: document.body.clientWidth * 0.25 * 0.96, // 瀹�
+ chartHeight: (document.body.clientHeight - 85) * 0.3 - 30, // 楂�
+ legendData: [
+ {
+ name: "549MHz",
+ icon: "circle",
+ textStyle: {
+ color: "#5A82FC",
+ fontSize: 10,
+ },
+ },
+ {
+ name: "738MHz",
+ icon: "circle",
+ textStyle: {
+ color: "#4DD6B6",
+ fontSize: 10,
+ },
+ },
+ {
+ name: "1445MHz",
+ icon: "circle",
+ textStyle: {
+ color: "#C99423",
+ fontSize: 10,
+ },
+ },
+ ],
+ xAxisData: [
+ "0h",
+ "1h",
+ "2h",
+ "3h",
+ "4h",
+ "5h",
+ "6h",
+ "7h",
+ "8h",
+ "9h",
+ "10h",
+ "11h",
+ "12h",
+ "13h",
+ "14h",
+ ],
+ seriesData: [
+ {
+ name: "549MHz",
+ data: [15, 23, 24, 18, 35, 47, 34, 15, 23, 24, 18, 35, 47, 34],
+ type: "line",
+ color: "#5A82FC",
+ },
+ {
+ name: "738MHz",
+ data: [99, 12, 67, 15, 90, 34, 56, 99, 12, 67, 15, 90, 34, 56],
+ type: "line",
+ color: "#4DD6B6",
+ },
+ {
+ name: "1445MHz",
+ data: [1, 11, 24, 92, 46, 54, 12, 1, 11, 24, 92, 46, 54, 12],
+ type: "line",
+ color: "#C99423",
+ },
+ ],
+ colorArray: ["#5A82FC", "#4DD6B6", "#C99423"],
+ };
+ },
+ mounted() {
+ this.getInfo();
+ },
+ methods: {
+ getInfo() {
+ this.loading = true;
+ let param = new URLSearchParams();
+
+ if (this.switchValue == 1) {
+ param.append("bid", "getFreqsCover");
+ }
+ if (this.switchValue == 0) {
+ param.append("bid", "getFreqsCover_auto");
+ }
+ param.append("pressMode", this.switchValue);
+
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData/",
+ param
+ ).then((res) => {
+ if (res.code == "20000") {
+ let sourceData = res.data.data;
+ this.seriesData = [];
+ this.legendData = [];
+
+ for (let i = 0; i < sourceData.length - 1; i++) {
+ let oneLegendData = { textStyle: {} };
+ if (sourceData[i].length != 0) {
+ oneLegendData.name = sourceData[i][0]._frequency;
+ oneLegendData.icon = "circle";
+ oneLegendData.textStyle.fontSize = 10;
+ oneLegendData.textStyle.color = "white";
+ this.legendData.push(oneLegendData);
+
+ let oneSeriesData = { data: [] };
+ oneSeriesData.name = sourceData[i][0]._frequency;
+ oneSeriesData.type = "line";
+ for (let j = 0; j < 15; j++) {
+ let coverrate = sourceData[i][j].coverrate.substring(
+ 0,
+ sourceData[i][j].coverrate.length - 1
+ );
+ oneSeriesData.data.push(coverrate);
+ }
+ this.seriesData.push(oneSeriesData);
+ }
+ }
+ this.getEchartData();
+ }
+ });
+ },
+ getEchartData() {
+ const chart = this.$refs.chart;
+ if (chart) {
+ const myChart = this.$echarts.init(chart);
+ const option = {
+ color: this.colorArray,
+ grid: {
+ top: "20px",
+
+ left: "45px",
+
+ right: "20px",
+
+ bottom: "40px",
+
+ backgroundColor: "#fff",
+ },
+ xAxis: {
+ type: "category",
+ data: this.xAxisData,
+ axisLabel: {
+ interval: 0,
+ rotate: 0,
+ color: "#FFFFFF",
+ fontSize: 10,
+ },
+ },
+ yAxis: {
+ type: "value",
+ min: 0,
+ max: 100,
+ axisLabel: {
+ formatter: function (value) {
+ var texts = [];
+ if (value == 0) {
+ texts.push("0%");
+ } else if (value <= 10) {
+ texts.push("10%");
+ } else if (value <= 20) {
+ texts.push("20%");
+ } else if (value <= 40) {
+ texts.push("40%");
+ } else if (value <= 50) {
+ texts.push("50%");
+ } else if (value <= 60) {
+ texts.push("60%");
+ } else if (value <= 70) {
+ texts.push("70%");
+ } else if (value <= 80) {
+ texts.push("80%");
+ } else if (value <= 90) {
+ texts.push("90%");
+ } else {
+ texts.push("100%");
+ }
+ return texts;
+ },
+ interval: 0,
+ rotate: 0,
+ color: "#FFFFFF",
+ fontSize: 10,
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ color: "rgba(255,225,255,0.5)",
+ width: 1,
+ type: "solid",
+ },
+ },
+ },
+ legend: {
+ itemHeight: 7,
+ right: "30px",
+ top: "0px",
+ data: this.legendData,
+ },
+ series: this.seriesData,
+ };
+ myChart.setOption(option);
+ window.addEventListener("resize", function () {
+ myChart.resize();
+ });
+ this.loading = false;
+ }
+ },
+ },
+};
+</script>
+<style lang="scss" scoped>
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/components/frequencyAnalysis.vue b/bigScreen/src/views/components/frequencyAnalysis.vue
new file mode 100644
index 0000000..0616cf6
--- /dev/null
+++ b/bigScreen/src/views/components/frequencyAnalysis.vue
@@ -0,0 +1,130 @@
+<template>
+ <div ref="mainBlcok">
+ <el-table
+ :data="tableData"
+ style="width: 96%; margin-left: 2%; margin-top: 20px銆�"
+ border
+ :max-height="bodyHeight - 40"
+ :header-cell-style="handerMethod"
+ :row-style="{
+ backgroundColor: 'transparent',
+ color: '#FFF',
+ height: '30px',
+ }"
+ :cell-style="{ padding: '0' }"
+ v-loading="loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ element-loading-text="姝e湪鍔犺浇鏁版嵁"
+ element-loading-spinner="el-icon-loading"
+ >
+ <el-table-column prop="frequency" label="棰戠巼"> </el-table-column>
+ <el-table-column prop="coverrate" label="鍘嬪埗瑕嗙洊鐜�"> </el-table-column>
+ <el-table-column prop="area" label="鍖哄幙"> </el-table-column>
+ </el-table>
+ </div>
+</template>
+<script>
+export default {
+ watch: {
+ frequencyValue: {
+ handler(n, o) {
+ this.getInfo();
+ },
+ deep: true,
+ immediate: true,
+ },
+ timeValue: {
+ handler(n, o) {
+ this.getInfo();
+ },
+ deep: true,
+ immediate: true,
+ },
+ switchValue: {
+ handler(n, o) {
+ this.getInfo();
+ },
+ deep: true,
+ immediate: true,
+ },
+ },
+ props: {
+ bodyHeight: {
+ type: Number,
+ default: 0,
+ },
+ frequencyValue: {
+ type: Number,
+ default: 1557,
+ },
+ timeValue: {
+ type: String,
+ default: "2021-06-30 17:00",
+ },
+ switchValue: {
+ type: Number,
+ default: 1,
+ },
+ },
+ data() {
+ return {
+ tableData: [],
+ loading: true,
+ };
+ },
+ mounted() {
+ this.getInfo();
+ },
+ methods: {
+ getInfo() {
+ this.loading = true;
+ let param = new URLSearchParams();
+ if (this.switchValue == 1) {
+ param.append("bid", "getCoverByArea");
+ }
+ if (this.switchValue == 0) {
+ param.append("bid", "getCoverByArea_auto");
+ }
+ param.append("frequencystr", this.frequencyValue);
+ param.append("pressMode", this.switchValue);
+ param.append("wdate", this.timeValue.split(" ")[0]);
+ param.append("whour", this.timeValue.split(" ")[1].split(":")[0]);
+
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ if (res.code == "20000") {
+ this.tableData = res.data.data;
+ this.loading = false;
+ }
+ });
+ },
+
+ handerMethod({ rowIndex }) {
+ return {
+ backgroundColor: "rgba(90,130, 252,1)",
+ color: "#FFF",
+ height: "30px",
+ padding: "0",
+ };
+ },
+ },
+};
+</script>
+<style lang="scss" scoped>
+.el-table,
+.el-table__expanded-cell {
+ background-color: transparent;
+}
+
+.el-table th,
+.el-table tr {
+ background-color: transparent;
+}
+
+/deep/ .el-table .el-table__body tr:hover td {
+ background-color: rgba(77, 214, 182, 1) !important;
+ color: white;
+}
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/components/frequencyOperationDiagram.vue b/bigScreen/src/views/components/frequencyOperationDiagram.vue
new file mode 100644
index 0000000..1485c97
--- /dev/null
+++ b/bigScreen/src/views/components/frequencyOperationDiagram.vue
@@ -0,0 +1,324 @@
+<template>
+ <div>
+ <div
+ style="width: 96%; margin-left: 2%"
+ v-loading="loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ element-loading-text="姝e湪鍔犺浇鏁版嵁"
+ element-loading-spinner="el-icon-loading"
+ >
+ <div
+ ref="chart"
+ :style="{ width: chartWidth + 'px', height: chartHeight + 'px' }"
+ ></div>
+ </div>
+ </div>
+</template>
+<script>
+export default {
+ watch: {
+ frequencyValue: {
+ handler(n, o) {
+ this.getInfo();
+ },
+ deep: true,
+ immediate: true,
+ },
+ timeValue: {
+ handler(n, o) {
+ this.getInfo();
+ },
+ deep: true,
+ immediate: true,
+ },
+ switchValue: {
+ handler(n, o) {
+ this.getInfo();
+ },
+ deep: true,
+ immediate: true,
+ },
+ },
+ props: {
+ frequencyValue: {
+ type: Number,
+ default: 1557,
+ },
+ timeValue: {
+ type: String,
+ default: "2021-06-30 17:00",
+ },
+ switchValue: {
+ type: Number,
+ default: 1,
+ },
+ },
+ data() {
+ return {
+ loading: true,
+ chartWidth: document.body.clientWidth * 0.3 * 0.96, // 瀹�
+ chartHeight: (document.body.clientHeight - 85) * 0.4 - 30, // 楂�
+ hoursData: [
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "10",
+ "11",
+ "12",
+ "13",
+ "14",
+ "15",
+ "16",
+ "17",
+ "18",
+ "19",
+ "20",
+ "21",
+ "22",
+ "23",
+ ],
+ daysData: [
+ "6/30",
+ "6/29",
+ "6/28",
+ "6/27",
+ "6/26",
+ "6/25",
+ "6/24",
+ "6/23",
+ "6/22",
+ "6/21",
+ "6/20",
+ "6/19",
+ "6/18",
+ "6/17",
+ "6/16",
+ ],
+ allData: [],
+ };
+ },
+ mounted() {
+ this.getInfo();
+ },
+ methods: {
+ getInfo() {
+ this.loading = true;
+ let param = new URLSearchParams();
+ if (this.switchValue == 1) {
+ param.append("bid", "getFreqRuntime");
+ }
+ if (this.switchValue == 0) {
+ param.append("bid", "getFreqRuntime_auto");
+ }
+ param.append("frequencystr", this.frequencyValue);
+ param.append("pressMode", this.switchValue);
+
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ if (res.code == "20000") {
+ let sourceData = res.data.data[0];
+ let name = "wdate";
+ let sorted = this.groupBy(sourceData, name);
+ this.daysData = [];
+ this.allData = [];
+ sorted.forEach((item, index) => {
+ let date = this.formatDateTime(item[0].wdate);
+ this.daysData.push(date);
+ item.forEach((childItem, childIndex) => {
+ let oneData = [
+ index,
+ Number(childItem.whour),
+ childItem.paramvalue,
+ ];
+ this.allData.push(oneData);
+ });
+ });
+ this.getEchartData();
+ }
+ });
+ },
+ formatDateTime(date) {
+ if (date) {
+ let time = new Date(date);
+ var month = time.getMonth() + 1;
+ var date = time.getDate();
+ return this.add0(month) + "-" + this.add0(date);
+ } else {
+ return "--";
+ }
+ },
+ add0(val) {
+ return val < 10 ? "0" + val : val;
+ },
+ groupBy(array, id) {
+ let groups = {};
+ array.forEach(function (o) {
+ let group = JSON.stringify(o[id]);
+ groups[group] = groups[group] || [];
+ groups[group].push(o);
+ });
+ return Object.values(groups);
+ },
+ getEchartData() {
+ const chart = this.$refs.chart;
+ if (chart) {
+ const myChart = this.$echarts.init(chart);
+ var hours = this.hoursData;
+ var days = this.daysData;
+ var data = this.allData;
+
+ data = data.map(function (item) {
+ return [item[1], item[0], item[2] || "-"];
+ });
+
+ const option = {
+ tooltip: {
+ position: "top",
+ },
+ grid: {
+ top: "20px",
+ left: "35px",
+ right: "20px",
+ bottom: "60px",
+ backgroundColor: "#fff",
+ },
+ dataZoom: [
+ {
+ type: "slider",
+ show: true,
+ yAxisIndex: [0],
+ left: "93%",
+ start: 0, //鏁版嵁绐楀彛鑼冨洿鐨勮捣濮嬬櫨鍒嗘瘮
+ end: 40,
+ zoomLock: false,
+ zoomOnMouseWheel: false,
+ },
+ ],
+ xAxis: {
+ type: "category",
+ data: hours,
+ splitArea: {
+ show: true,
+ },
+ axisLabel: {
+ interval: 0,
+ rotate: 0,
+ color: "#FFFFFF",
+ fontSize: 10,
+ },
+ },
+ yAxis: {
+ type: "category",
+ data: days,
+ splitArea: {
+ show: true,
+ },
+ axisLabel: {
+ interval: 0,
+ rotate: 0,
+ color: "#FFFFFF",
+ fontSize: 10,
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ color: "rgba(255,225,255,0.5)",
+ width: 1,
+ type: "solid",
+ },
+ },
+ },
+ visualMap: {
+ min: 20,
+ max: 50,
+ calculable: true,
+ orient: "horizontal",
+ left: "center",
+ bottom: "15%",
+ show: false,
+ inRange: {
+ color: ["#cccccc", "#6A5ACD", "#32CD32"],
+ },
+ },
+ series: [
+ {
+ name: "鏁伴噺",
+ type: "heatmap",
+ data: data,
+ label: {
+ show: true,
+ color: "#FFFFFF",
+ fontSize: 8,
+ label: {
+ normal: {
+ show: true,
+ formatter: function (params) {
+ if (params >= 0 && params < 20) {
+ return "{a|" + params + "}";
+ } else if (params >= 20 && params < 50) {
+ return "{b|" + params + "}";
+ } else {
+ return "{c|" + params + "}";
+ }
+ },
+ rich: {
+ a: {
+ color: "#cccccc",
+ },
+ b: {
+ color: "#32CD32",
+ },
+ c: {
+ color: "#6A5ACD",
+ },
+ },
+ },
+ },
+ },
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowColor: "rgba(0, 0, 0, 0.5)",
+ },
+ },
+ },
+ ],
+ };
+
+ myChart.setOption(option);
+ window.addEventListener("resize", function () {
+ myChart.resize();
+ });
+ this.loading = false;
+ }
+ },
+
+ getVirtulData(year) {
+ year = year || "2017";
+ var date = +this.$echarts.number.parseDate(year + "-01-01");
+ var end = +this.$echarts.number.parseDate(year + "-12-31");
+ var dayTime = 3600 * 24 * 1000;
+ var data = [];
+ for (var time = date; time <= end; time += dayTime) {
+ data.push([
+ this.$echarts.format.formatTime("yyyy-MM-dd", time),
+ Math.floor(Math.random() * 10000),
+ ]);
+ }
+
+ return data;
+ },
+ },
+};
+</script>
+<style lang="scss" scoped>
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/components/leftBlock.vue b/bigScreen/src/views/components/leftBlock.vue
new file mode 100644
index 0000000..87273b0
--- /dev/null
+++ b/bigScreen/src/views/components/leftBlock.vue
@@ -0,0 +1,339 @@
+<template>
+ <div>
+ <div style="height: 100%" v-if="radioValue == '1'">
+ <div style="height: 59%" ref="frequencyAnalysis">
+ <div class="title">
+ <el-image :src="diamondSrc" style="" class="imgSty"></el-image>
+ <p>鍖哄煙瑕嗙洊鐜�</p>
+ </div>
+ <frequencyAnalysis
+ :bodyHeight="frequencyAnalysisHeight"
+ :frequencyValue="frequencyValue"
+ :timeValue="timeValue"
+ :switchValue="switchValue"
+ ></frequencyAnalysis>
+ </div>
+
+ <div style="height: 39%; overflow: hidden; margin-top: 2%">
+ <div class="title">
+ <el-image :src="diamondSrc" style="" class="imgSty"></el-image>
+ <p>棰戠巼杩愯鍥�</p>
+ </div>
+ <frequencyOperationDiagram
+ :frequencyValue="frequencyValue"
+ :timeValue="timeValue"
+ :switchValue="switchValue"
+ ></frequencyOperationDiagram>
+ </div>
+ </div>
+
+ <div
+ style="height: 100%"
+ v-if="radioValue == '0'"
+ v-loading="loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ element-loading-spinner="el-icon-loading"
+ >
+ <div class="leftMonitor">
+ <el-row>
+ <el-col :span="8">
+ <div class="leftMonitorLine">
+ <p>鍚堟硶鐢靛彴</p>
+
+ <div class="leftMonitorLineButton" id="legitimateArr">
+ <draggable
+ v-model="legitimateArr"
+ group="site"
+ animation="300"
+ dragClass="dragClass"
+ ghostClass="ghostClass"
+ chosenClass="chosenClass"
+ @start="onStart"
+ @end="onEnd"
+ @onadd="onadd"
+ >
+ <transition-group>
+ <div
+ v-for="item in legitimateArr"
+ :key="item.frequencyValue"
+ >
+ <el-button
+ v-if="item.isActive == '1'"
+ class="selButton"
+ type="primary"
+ size="large"
+ style="width: 100%"
+ @click="selFrequery(item.frequencyValue)"
+ >{{ item.frequencyValue }}</el-button
+ >
+ <el-button
+ v-else
+ class="selButton"
+ type="info"
+ size="large"
+ style="width: 100%"
+ @click="selFrequery(item.frequencyValue)"
+ >{{ item.frequencyValue }}</el-button
+ >
+ </div>
+ </transition-group>
+ </draggable>
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div class="leftMonitorLine">
+ <p>闈炴硶棰戠巼</p>
+ <div class="leftMonitorLineButton" id="illegalArr">
+ <draggable
+ v-model="illegalArr"
+ group="site"
+ animation="100"
+ dragClass="dragClass"
+ ghostClass="ghostClass"
+ chosenClass="chosenClass"
+ @start="onStart"
+ @end="onEnd"
+ @onadd="onadd"
+ >
+ <transition-group>
+ <div v-for="item in illegalArr" :key="item.frequencyValue">
+ <el-button
+ v-if="item.isActive == '1'"
+ type="primary"
+ size="large"
+ class="selButton"
+ style="width: 100%"
+ @click="selFrequery(item.frequencyValue)"
+ >{{ item.frequencyValue }}</el-button
+ >
+ <el-button
+ v-else
+ type="info"
+ size="large"
+ style="width: 100%"
+ @click="selFrequery(item.frequencyValue)"
+ >{{ item.frequencyValue }}</el-button
+ >
+ </div>
+ </transition-group>
+ </draggable>
+ </div>
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div class="leftMonitorLine">
+ <p>鍙枒棰戠巼</p>
+ <div class="leftMonitorLineButton" id="suspectedArr">
+ <draggable
+ v-model="suspectedArr"
+ group="site"
+ animation="100"
+ dragClass="dragClass"
+ ghostClass="ghostClass"
+ chosenClass="chosenClass"
+ @start="onStart"
+ @end="onEnd"
+ @onadd="onadd"
+ >
+ <transition-group>
+ <div v-for="(item, index) in suspectedArr" :key="index">
+ <el-button
+ v-if="item.isActive == '1'"
+ class="selButton"
+ type="primary"
+ size="large"
+ style="width: 100%"
+ @click="selFrequery(item.frequencyValue)"
+ >{{ item.frequencyValue }}</el-button
+ >
+ <el-button
+ v-else
+ class="selButton"
+ type="info"
+ size="large"
+ style="width: 100%"
+ @click="selFrequery(item.frequencyValue)"
+ >{{ item.frequencyValue }}</el-button
+ >
+ </div>
+ </transition-group>
+ </draggable>
+ </div>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </div>
+ </div>
+</template>
+<script>
+import frequencyAnalysis from "./frequencyAnalysis";
+import frequencyOperationDiagram from "./frequencyOperationDiagram";
+import draggable from "vuedraggable";
+export default {
+ props: ["timeValue", "frequencyValue", "switchValue", "radioValue"],
+ components: { frequencyAnalysis, frequencyOperationDiagram, draggable },
+ data() {
+ return {
+ loading: false,
+ drag: false,
+ diamondSrc: require("@/assets/diamond.png"),
+ frequencyAnalysisHeight: "",
+ legitimateArr: [],
+ illegalArr: [],
+ suspectedArr: [],
+ };
+ },
+ mounted() {
+ if (this.radioValue == "0") {
+ this.getLeftMonitor();
+ } else {
+ let frequencyAnalysisBlockHeight =
+ this.$refs.frequencyAnalysis.offsetHeight;
+ this.frequencyAnalysisHeight = frequencyAnalysisBlockHeight - 30;
+ }
+ },
+ methods: {
+ onStart(e) {
+ this.drag = true;
+ },
+ onEnd(e) {
+ this.drag = false;
+
+ let fromName = e.from.parentNode.parentNode.id;
+ let toName = e.to.parentNode.parentNode.id;
+
+ let type = null;
+ let frequency = null;
+ if (toName === "legitimateArr") {
+ type = 0;
+ frequency = this.legitimateArr[e.newIndex].frequencyValue;
+ } else if (toName === "illegalArr") {
+ type = 1;
+ frequency = this.illegalArr[e.newIndex].frequencyValue;
+ } else {
+ type = "";
+ frequency = this.suspectedArr[e.newIndex].frequencyValue;
+ }
+
+ let param = {
+ bid: "setFreqType",
+ frequency: frequency,
+ type: type,
+ };
+
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {});
+ },
+
+ onadd(evt) {
+ var itemEl = evt.item; // dragged HTMLElement
+ evt.to; // target list
+ evt.from; // previous list
+ evt.oldIndex; // tag's old index within old parent
+ evt.newIndex; // tag's new index within new parent
+ evt.clone; // the clone tag
+ evt.pullMode; // when item is in another sortable: `"clone"` if cloning, `true` if moving
+ },
+
+ getLeftMonitor() {
+ this.loading = true;
+ this.$getJSON(window.backstageURL + "dataservice/getCurrentFreqs").then(
+ (res) => {
+ let tmpData = JSON.parse(JSON.stringify(res.data.data[0]));
+ this.legitimateArr = [];
+ this.illegalArr = [];
+ this.suspectedArr = [];
+ tmpData.forEach((item) => {
+ if (item.isWhiteFreq == 1) {
+ item.name = item.frequencyValue;
+ this.legitimateArr.push(item);
+ } else if (item.isFavoriteFreq == 1) {
+ item.name = item.frequencyValue;
+ this.illegalArr.push(item);
+ } else if (item.isWhiteFreq == 0 && item.isFavoriteFreq == 0) {
+ item.name = item.frequencyValue;
+ this.suspectedArr.push(item);
+ } else {
+ }
+ });
+ this.loading = false;
+ }
+ );
+ },
+
+ selFrequery(fre) {
+ this.$emit("selFre", fre);
+ },
+ },
+};
+</script>
+<style lang="scss" scoped>
+.title {
+ display: flex;
+ flex-wrap: nowrap;
+ flex-direction: row;
+ margin-left: 20px;
+ height: 30px;
+
+ .imgSty {
+ width: 15px;
+ height: 15px;
+ margin-top: 7.5px;
+ }
+
+ p {
+ font-size: 18px;
+ color: #4dd6b6;
+ line-height: 30px;
+ margin-left: 10px;
+ }
+}
+
+.leftMonitor {
+ width: 96%;
+ margin-left: 2%;
+ .leftMonitorLine {
+ margin-top: 20px;
+ border: 1px solid #409eff;
+ position: relative;
+ overflow: hidden;
+ height: calc(100vh - 118px);
+ .leftMonitorLineButton {
+ position: absolute;
+ left: 0;
+ top: 52px;
+ right: -17px;
+ bottom: 0;
+ overflow-x: hidden;
+ overflow-y: scroll;
+ height: calc(100vh - 175px);
+ }
+ p {
+ text-align: center;
+ height: 50px;
+ line-height: 50px;
+ font-weight: 800;
+ color: white;
+ font-size: 24px;
+ border-bottom: 2px solid #409eff;
+ }
+ }
+}
+
+/deep/ .el-button {
+ border-radius: 0;
+ border-top: none;
+ border-left: none;
+ border-right: none;
+}
+
+/deep/ .el-button--primary {
+ background-color: transparent;
+}
+.selButton {
+}
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/components/pointInfo.vue b/bigScreen/src/views/components/pointInfo.vue
new file mode 100644
index 0000000..2aa098f
--- /dev/null
+++ b/bigScreen/src/views/components/pointInfo.vue
@@ -0,0 +1,1126 @@
+<template>
+ <div style="width: 100%; height: 100%">
+ <video
+ ref="videoElement"
+ id="videoElement"
+ controls
+ width="0"
+ height="0"
+ v-show="false"
+ >
+ xxx
+ </video>
+ <el-container>
+ <el-header height="60px">
+ <span
+ >{{ pontInfoData.monitorpointName }} -
+ {{ pontInfoData.monitorstationId_name }} -
+ </span>
+ <span style="color: #4dd6b6" v-if="pontInfoData.status == 1"
+ >{{ pontInfoData.status_name }}鐘舵��</span
+ >
+ <span style="color: red" v-if="!(pontInfoData.status == 1)"
+ >{{ pontInfoData.status_name }}鐘舵��</span
+ >
+
+ <el-button
+ type="primary"
+ size="mini"
+ class="topButton"
+ @click="lookBack(pontInfoData)"
+ >鍥炴斁</el-button
+ >
+ </el-header>
+ <el-container>
+ <el-aside width="119px">
+ <el-menu
+ default-active="2"
+ class="el-menu-vertical-demo"
+ background-color="#0b1536"
+ text-color="#fff"
+ @open="handleOpen"
+ @close="handleClose"
+ @select="selectItem"
+ >
+ <div
+ class="menuItem"
+ v-for="(item, i) in frequencyArray"
+ :key="item.frequencyId"
+ @dblclick="dbClick(item)"
+ style="user-select: none"
+ >
+ <el-menu-item :index="i.toString()">
+ <span slot="title">{{ item.frequencyValue }}</span>
+ </el-menu-item>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鐐瑰嚮鏀惰棌"
+ placement="top"
+ >
+ <el-image
+ style="
+ width: 20px;
+ height: 20px;
+ cursor: pointer;
+ margin-top: 18px;
+ "
+ v-if="!item.isCollection"
+ @click="joinCollection(item)"
+ :src="require('@/assets/unLove.png')"
+ ></el-image>
+ </el-tooltip>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鍙栨秷鏀惰棌"
+ placement="top"
+ >
+ <el-image
+ style="
+ width: 20px;
+ height: 20px;
+ cursor: pointer;
+ margin-top: 18px;
+ "
+ v-if="item.isCollection"
+ @click="dropCollection(item)"
+ :src="require('@/assets/love.png')"
+ ></el-image>
+ </el-tooltip>
+ </div>
+ </el-menu>
+ </el-aside>
+ <el-main
+ v-loading="loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ element-loading-spinner="el-icon-loading"
+ >
+ <div v-if="!showInfo.frequencyValue">
+ <p>璇烽�夋嫨棰戠巼</p>
+ </div>
+ <div v-else>
+ <div class="mainTitle">
+ <div style="display: flex">
+ <p style="width: 50px">鐩戝惉:</p>
+ <span
+ style="margin-left: 10px"
+ v-show="!isEdit"
+ @dblclick="changeInput()"
+ >{{ showFrequencyValue }}</span
+ >
+ <el-input
+ v-model="showFrequencyValue"
+ placeholder=""
+ v-show="isEdit"
+ @blur="changeP"
+ ref="editInput"
+ style="width: 80px"
+ ></el-input>
+ </div>
+
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="寮�濮嬬洿鎾�"
+ placement="top"
+ v-if="!isplay"
+ >
+ <i
+ class="el-icon-video-play"
+ @click="startPlay"
+ style="cursor: pointer; line-height: 40px"
+ ></i>
+ </el-tooltip>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鏆傚仠鐩存挱"
+ placement="top"
+ v-else
+ >
+ <i
+ class="el-icon-video-pause"
+ @click="stopPlay"
+ style="cursor: pointer; line-height: 40px"
+ ></i>
+ </el-tooltip>
+ <p>
+ <span>淇″彿:{{ showInfo.level }}</span>
+ </p>
+ <el-dropdown @command="handleCommand">
+ <span class="el-dropdown-link" style="color: #409eff">
+ 浜哄伐璇勫垎: {{ dropScore }}鍒�
+ </span>
+ <el-dropdown-menu slot="dropdown">
+ <el-dropdown-item command="1" :disabled="!isAssess"
+ >1鍒�</el-dropdown-item
+ >
+ <el-dropdown-item command="2" :disabled="!isAssess"
+ >2鍒�</el-dropdown-item
+ >
+ <el-dropdown-item command="3" :disabled="!isAssess"
+ >3鍒�</el-dropdown-item
+ >
+ <el-dropdown-item command="4" :disabled="!isAssess"
+ >4鍒�</el-dropdown-item
+ >
+ <el-dropdown-item command="5" :disabled="!isAssess"
+ >5鍒�</el-dropdown-item
+ >
+ <el-dropdown-item command="0" :disabled="!isAssess"
+ >鏃犳晥</el-dropdown-item
+ >
+ </el-dropdown-menu>
+ </el-dropdown>
+ </div>
+
+ <div class="recordingBlock">
+ <div class="joinRecording">
+ <div>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鍔犲叆閫氶亾"
+ placement="top"
+ >
+ <svg-icon
+ class="svgIcon"
+ icon-class="add"
+ @click="addLeftRecord"
+ ></svg-icon>
+ </el-tooltip>
+ </div>
+ <div style="margin-top: 20px">
+ <span>褰曞埗閫氶亾:</span>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鍙屽嚮淇敼"
+ placement="top"
+ >
+ <span v-show="!isLeftEdit" @dblclick="changeLeftInput">{{
+ leftRecordFrequency.frequencyValue
+ }}</span>
+ </el-tooltip>
+ <el-input
+ v-model="leftRecordFrequency.frequencyValue"
+ placeholder=""
+ style="width: 80px; height: 22px"
+ v-show="isLeftEdit"
+ ref="editLeftInput"
+ @blur="changeLeftP"
+ ></el-input>
+ </div>
+ <div style="margin-top: 20px">
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鍔犲叆褰曞埗"
+ placement="top"
+ >
+ <svg-icon
+ class="svgIcon"
+ icon-class="recordAdd"
+ @click="joinLeftMain"
+ ></svg-icon>
+ </el-tooltip>
+ </div>
+ </div>
+
+ <!-- <div class="joinRecording">
+ <div>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鍔犲叆閫氶亾"
+ placement="top"
+ >
+ <svg-icon
+ class="svgIcon"
+ icon-class="add"
+ @click="addRightRecord"
+ ></svg-icon>
+ </el-tooltip>
+ </div>
+ <div style="margin-top: 20px">
+ <span>鍓綍閫氶亾:</span>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鍙屽嚮淇敼"
+ placement="top"
+ >
+ <span v-show="!isRightEdit" @dblclick="changeRightInput">{{
+ rightRecordFrequency.frequencyValue
+ }}</span>
+ </el-tooltip>
+ <el-input
+ v-model="rightRecordFrequency.frequencyValue"
+ placeholder=""
+ style="width: 80px; height: 22px"
+ v-show="isRightEdit"
+ ref="editRightInput"
+ @blur="changeRightP"
+ ></el-input>
+ </div>
+ <div style="margin-top: 20px">
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="寮�濮嬪綍鍒�"
+ placement="top"
+ >
+ <svg-icon
+ class="svgIcon"
+ icon-class="recordAdd"
+ @click="joinRightMain"
+ ></svg-icon>
+ </el-tooltip>
+ </div>
+ </div> -->
+ </div>
+
+ <div class="pointChart">
+ <p>鍘嗗彶鍘嬪埗鏁堟灉</p>
+ <div ref="chart" style="width: 100%; height: 120px"></div>
+ </div>
+ </div>
+ </el-main>
+ </el-container>
+ </el-container>
+ </div>
+</template>
+<script>
+export default {
+ watch: {
+ pontInfoData: {
+ handler(n, o) {
+ this.getInfo();
+ },
+ deep: true,
+ immediate: true,
+ },
+ switchValue: {
+ handler(n, o) {
+ this.getEchartData(this.showInfo);
+ },
+ deep: true,
+ immediate: true,
+ },
+ },
+
+ props: {
+ pontInfoData: {
+ type: Object,
+ default: {},
+ },
+ switchValue: {
+ type: Number,
+ default: 1,
+ },
+ username: {
+ type: String,
+ default: "",
+ },
+ userid: {
+ type: String,
+ default: "",
+ },
+ isLoney: {
+ type: Boolean,
+ default: false,
+ },
+ },
+ data() {
+ return {
+ loading: false,
+ lookBackData: {},
+ lookBackVisible: false,
+ isAssess: false,
+ isDisable: true,
+ dropScore: "璇烽�夋嫨",
+ isEdit: false,
+ isLeftEdit: false,
+ isRightEdit: false,
+ selScoreValue: "",
+ selScoreArr: [],
+ scoreOperationDialog: false,
+ dialogVisible: true,
+ frequencyArray: [],
+ showInfo: {},
+ collectionArray: [],
+ leftFrequency: {},
+ rightFrequency: {},
+ isplay: false,
+ rtsp: "",
+ player: null,
+ playFrequency: {},
+ leftRecordFrequency: {},
+ rightRecordFrequency: {},
+ showFrequencyValue: "",
+ };
+ },
+ mounted() {
+ this.getCollection();
+ },
+ methods: {
+ lookBack(data) {
+ this.$emit("showLookBack", data);
+ },
+ joinRightMain() {
+ let param = {
+ monitorpointId: this.showInfo.monitorpointId,
+ frequencyValue: this.rightRecordFrequency.frequencyValue,
+ };
+ this.$emit("joinRecord", param);
+ },
+ joinLeftMain() {
+ let recordData = {
+ monitorpointId: this.showInfo.monitorpointId,
+ frequencyValue: this.leftRecordFrequency.frequencyValue,
+ };
+ this.$emit("joinRecord", recordData);
+ },
+ addLeftRecord() {
+ this.leftRecordFrequency.frequencyValue = this.showFrequencyValue;
+ },
+ addRightRecord() {
+ this.rightRecordFrequency.frequencyValue = this.showFrequencyValue;
+ },
+ handleCommand(command) {
+ this.dropScore = command;
+ let param = {
+ bid: "assessPress",
+ frequency: this.showFrequencyValue,
+ assessvalue: command,
+ monitorpointId: this.showInfo.monitorpointId,
+ taskid: "",
+ userid: this.userid,
+ recording_time: this.dateFormatter(new Date()),
+ };
+
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ this.$message.success(res.data.data[0][0].messg);
+ });
+ },
+ changeP(e) {
+ this.isplay = false;
+ if (this.player) {
+ this.player.pause();
+ this.player.unload();
+ this.player.detachMediaElement();
+ this.player.destroy();
+ this.player = null;
+ }
+ this.isEdit = !this.isEdit;
+ },
+ changeInput() {
+ this.isEdit = !this.isEdit;
+ setTimeout(() => {
+ this.$refs.editInput.focus();
+ }, 500);
+ },
+ changeLeftInput() {
+ this.isLeftEdit = !this.isLeftEdit;
+ setTimeout(() => {
+ this.$refs.editLeftInput.focus();
+ }, 500);
+ },
+ changeLeftP(e) {
+ this.isLeftEdit = !this.isLeftEdit;
+ },
+ changeRightInput() {
+ this.isRightEdit = !this.isRightEdit;
+ setTimeout(() => {
+ this.$refs.editRightInput.focus();
+ }, 500);
+ },
+ changeRightP(e) {
+ this.isRightEdit = !this.isRightEdit;
+ },
+ dbClick(item) {
+ this.$emit("showLoading", "luzhi");
+ setTimeout(() => {
+ this.startPlay();
+ }, 2000);
+ },
+ cancleRecoding(frequency) {
+ let param = new URLSearchParams();
+ param.append("method", "delete");
+ param.append("key", 123456);
+ param.append("monitorpointId", frequency.monitorpointId);
+ param.append("frequencyValue", frequency.frequencyValue);
+ this.$getJSON(window.equipmentURL +
+ "FRP/TNewrecordtask.do",
+ param
+ ).then((res) => {
+ if (res.success) {
+ this.getFrequency(this.showInfo);
+ this.getEchartData(this.showInfo);
+ } else {
+ this.$message.warning(res.msg);
+ }
+ });
+ },
+ dropMain() {
+ this.$confirm("鏄惁鍋滄褰曞埗", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ })
+ .then(() => {
+ let param = new URLSearchParams();
+ param.append("method", "delete");
+ param.append("key", 123456);
+ param.append("monitorpointId", this.showInfo.monitorpointId);
+ param.append(
+ "frequencyValue",
+ this.leftRecordFrequency.frequencyValue
+ );
+ this.$getJSON(window.equipmentURL +
+ "FRP/TNewrecordtask.do",
+ param
+ ).then((res) => {
+ if (res.success) {
+ this.getFrequency(this.showInfo);
+ this.getEchartData(this.showInfo);
+ } else {
+ this.$message.warning(res.msg);
+ }
+ });
+ })
+ .catch(() => {
+ this.$message({
+ type: "info",
+ message: "宸插彇娑�",
+ });
+ });
+ },
+ dropVice() {
+ this.$confirm("鏄惁鍋滄褰曞埗", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ })
+ .then(() => {
+ let param = new URLSearchParams();
+ param.append("method", "delete");
+ param.append("key", 123456);
+ param.append("monitorpointId", this.showInfo.monitorpointId);
+ param.append(
+ "frequencyValue",
+ this.rightRecordFrequency.frequencyValue
+ );
+ this.$getJSON(window.equipmentURL +
+ "FRP/TNewrecordtask.do",
+ param
+ ).then((res) => {
+ if (res.success) {
+ this.getFrequency(this.showInfo);
+ this.getEchartData(this.showInfo);
+ } else {
+ this.$message.warning(res.msg);
+ }
+ });
+ })
+ .catch(() => {
+ this.$message({
+ type: "info",
+ message: "宸插彇娑�",
+ });
+ });
+ },
+ scoreOperation() {
+ if (this.userid == "" || this.username == "") {
+ if (this.isLoney) {
+ this.$emit("showLogin");
+ } else {
+ window.location.href =window.backstageURL +
+ "ammonitor/#/passport/login";
+ }
+ } else {
+ this.$emit("startScore", this.showInfo);
+ }
+ },
+ getCharFromUtf8(str) {
+ var cstr = "";
+ var nOffset = 0;
+ if (str == "") return "";
+ str = str.toLowerCase();
+ nOffset = str.indexOf("%e");
+ if (nOffset == -1) return str;
+ while (nOffset != -1) {
+ cstr += str.substr(0, nOffset);
+ str = str.substr(nOffset, str.length - nOffset);
+ if (str == "" || str.length < 9) return cstr;
+ cstr += utf8ToChar(str.substr(0, 9));
+ str = str.substr(9, str.length - 9);
+ nOffset = str.indexOf("%e");
+ }
+ return cstr + str;
+ },
+ joinRecording() {
+ if (this.userid == "" || this.username == "") {
+ if (this.isLoney) {
+ this.$emit("showLogin");
+ } else {
+ window.location.href =window.backstageURL +
+ "ammonitor/#/passport/login";
+ }
+ } else {
+ this.$confirm(
+ `鏄惁纭畾灏�${this.showInfo.frequencyValue}鍔犲叆褰曞埗`,
+ "鎻愮ず",
+ {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ }
+ )
+ .then(() => {
+ this.$emit("showLoading", "luzhi");
+ let param = new URLSearchParams();
+ param.append("method", "record");
+ param.append("key", 111111);
+ param.append("recordTimeLength", 180);
+ param.append("monitorpointId", this.showInfo.monitorpointId);
+ param.append("frequencyValue", this.showInfo.frequencyValue);
+ param.append("isUnderWay", 0);
+
+ let url = `${window.equipmentURL}FRP/TNewrecordtask.do?method=record&monitorpointId=${this.showInfo.monitorpointId}&frequencyValue=${this.showInfo.frequencyValue}`;
+ this.$getJSON(window.equipmentURL +
+ "FRP/TNewrecordtask.do",
+ param
+ ).then((res) => {
+ this.$emit("hideLoading");
+ let param1 = {
+ bid: "setChannelRecord",
+ monitorpointId: this.showInfo.monitorpointId,
+ frequency: this.showInfo.frequencyValue,
+ userid: this.userid,
+ requesturl: url,
+ success: res[0].success.toString(),
+ msg: res[0].msg,
+ recordminitus: 180,
+ };
+
+ this.$post(window.backstageURL +
+ "dataservice/dealData",
+ param1
+ ).then((res1) => {});
+
+ if (res.success) {
+ this.$message.success(res[0].msg);
+ this.getCollection();
+ this.getFrequency(this.showInfo);
+ } else {
+ this.$message.error(res[0].msg);
+ }
+ });
+ })
+ .catch(() => {
+ this.$message({
+ type: "info",
+ message: "宸插彇娑堝垹闄�",
+ });
+ });
+ }
+ },
+ joinCollection(item) {
+ if (this.userid == "" || this.username == "") {
+ if (this.isLoney) {
+ this.$emit("showLogin");
+ } else {
+ window.location.href = window.backstageURL +
+ "ammonitor/#/passport/login";
+ }
+ } else {
+ let param = new URLSearchParams();
+ param.append("bid", "addFavoriteFreqs");
+ param.append("frequency", item.frequencyValue);
+ param.append("adduser", this.username);
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ if (res.code == 20000) {
+ this.$message.success("鏀惰棌鎴愬姛");
+ this.getCollection();
+ }
+ });
+ }
+ },
+ dropCollection(item) {
+ if (this.userid == "" || this.username == "") {
+ if (this.isLoney) {
+ this.$emit("showLogin");
+ } else {
+ window.location.href = window.backstageURL +
+ "ammonitor/#/passport/login";
+ }
+ } else {
+ let param = new URLSearchParams();
+ param.append("bid", "cancelFavoriteFreqs");
+ param.append("frequency", item.frequencyValue);
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ if (res.code == 20000) {
+ this.$confirm(res.data.data[0][0].msg, "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ })
+ .then(() => {
+ let param1 = new URLSearchParams();
+ param1.append("bid", "delFavoriteFreqs");
+ param1.append("frequency", item.frequencyValue);
+ param1.append("canceluser", this.username);
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData",
+ param1
+ ).then((res) => {
+ if (res.code == 20000) {
+ this.$message.success("鎴愬姛鍙栨秷鏀惰棌");
+ this.getCollection();
+ }
+ });
+ })
+ .catch(() => {
+ this.$message({
+ type: "info",
+ message: "宸插彇娑堝垹闄�",
+ });
+ });
+ }
+ });
+ }
+ },
+ getCollection() {
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData?bid=getFavoriteFreqs"
+ ).then((res) => {
+ let sourceData = [];
+ res.data.data.forEach((item) => {
+ sourceData.push(item.frequency);
+ });
+ this.collectionArray = sourceData;
+ // this.getInfo();
+ });
+ },
+ getInfo() {
+ let param = new URLSearchParams();
+ param.append("monitorpointId", this.pontInfoData.monitorpointId);
+ param.append("userid", this.userid);
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData?bid=getCurrPointFreqs",
+ param
+ ).then((res) => {
+ this.frequencyArray = JSON.parse(JSON.stringify(res.data.data[0]));
+ this.selectItem(2)
+ });
+ },
+ selectItem(index) {
+ console.log(index)
+ this.isplay = false;
+ this.isAssess = false;
+ this.loading = true;
+ if (this.frequencyArray[index].assessvalue) {
+ this.dropScore = this.frequencyArray[index].assessvalue;
+ } else {
+ this.dropScore = "璇烽�夋嫨";
+ }
+
+ this.recordingtime = "";
+ this.rtsp = "";
+
+ this.playFrequency = {};
+ this.showFrequencyValue = this.frequencyArray[index].frequencyValue;
+ if (this.player) {
+ this.player.pause();
+ this.player.unload();
+ this.player.detachMediaElement();
+ this.player.destroy();
+ this.player = null;
+ }
+ this.showInfo = this.frequencyArray[index];
+
+ this.getFrequency(this.showInfo);
+ this.getEchartData(this.showInfo);
+ },
+
+ getFrequency(value) {
+ this.playFrequency = {};
+ this.leftRecordFrequency = {};
+ this.rightRecordFrequency = {};
+ let param = new URLSearchParams();
+ param.append("bid", "getChannelRecord");
+ param.append("monitorpointId", value.monitorpointId);
+
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ let sourceData = res.data.data[0];
+ sourceData.forEach((item) => {
+ let playItem = JSON.parse(JSON.stringify(item));
+ playItem.level = "--";
+ playItem.pressvalue = "--";
+ this.frequencyArray.forEach((i) => {
+ if (i.frequencyValue == playItem.frequencyValue) {
+ playItem.level = i.level;
+ playItem.pressvalue = i.pressvalue;
+ }
+ });
+
+ if (playItem.channelId == 1) {
+ this.playFrequency = playItem;
+ } else if (playItem.channelId == 2) {
+ this.rightRecordFrequency = playItem;
+ } else if (playItem.channelId == 3) {
+ this.leftRecordFrequency = playItem;
+ } else {
+ }
+ });
+ this.loading = false;
+ });
+ },
+ handleOpen(key, keyPath) {},
+ handleClose(key, keyPath) {},
+ getEchartData(value) {
+ let param = new URLSearchParams();
+ if (this.switchValue == 1) {
+ param.append("bid", "getPointSuppress");
+ }
+ if (this.switchValue == 0) {
+ param.append("bid", "getPointSuppress_auto");
+ }
+ param.append("frequencystr", value.frequencyValue);
+ param.append("monitorpointId", this.pontInfoData.monitorpointId);
+
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ let sourceData = res.data.data;
+ let seriesData = [];
+ let legendData = [];
+ let xAxisData = [];
+
+ for (let i = 0; i < sourceData.length - 1; i++) {
+ let oneLegendData = { textStyle: {} };
+ if (sourceData[i].length != 0) {
+ oneLegendData.name = sourceData[i][0].frequencyValue;
+ oneLegendData.icon = "circle";
+ oneLegendData.textStyle.fontSize = 10;
+ oneLegendData.textStyle.color = "white";
+ legendData.push(oneLegendData);
+
+ let oneSeriesData = { data: [] };
+ oneSeriesData.name = sourceData[i][0].frequencyValue;
+ oneSeriesData.type = "line";
+ for (let j = 0; j < 15; j++) {
+ let paramvalue = sourceData[i][j].paramvalue;
+ oneSeriesData.data.push(paramvalue);
+ xAxisData.push(
+ this.formatDateTime(sourceData[i][j].wdate) +
+ "\n" +
+ sourceData[i][j].whour +
+ ":00"
+ );
+ }
+ seriesData.push(oneSeriesData);
+ }
+ }
+
+ const chart = this.$refs.chart;
+ if (chart) {
+ const myChart = this.$echarts.init(chart);
+ const option = {
+ grid: {
+ top: "20px",
+
+ left: "25px",
+
+ right: "0px",
+
+ bottom: "35px",
+
+ backgroundColor: "#fff",
+ },
+ xAxis: {
+ type: "category",
+ data: xAxisData,
+ axisLabel: {
+ interval: 0,
+ rotate: 0,
+ color: "#FFFFFF",
+ fontSize: 10,
+ },
+ },
+ yAxis: {
+ type: "value",
+ min: 0,
+ max: 4,
+ axisLabel: {
+ formatter: function (value) {
+ var texts = [];
+ if (value == 0) {
+ texts.push("1");
+ } else if (value <= 1) {
+ texts.push("2");
+ } else if (value <= 2) {
+ texts.push("3");
+ } else if (value <= 3) {
+ texts.push("4");
+ } else {
+ texts.push("5");
+ }
+ return texts;
+ },
+ interval: 0,
+ rotate: 0,
+ color: "#FFFFFF",
+ fontSize: 10,
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ color: "rgba(255,225,255,0.5)",
+ width: 1,
+ type: "solid",
+ },
+ },
+ },
+ legend: {
+ itemHeight: 7,
+ data: legendData,
+ },
+ series: seriesData,
+ };
+ myChart.setOption(option);
+ window.addEventListener("resize", function () {
+ myChart.resize();
+ });
+ }
+ });
+ },
+
+ startPlay() {
+ this.isplay = true;
+ this.isAssess = true;
+ let playData = {
+ monitorpointId: this.showInfo.monitorpointId,
+ frequencyValue: this.showFrequencyValue,
+ };
+ this.$emit("startPlay", playData);
+ },
+ stopPlay() {
+ this.$emit("stopPlay");
+ this.isplay = false;
+ // this.player.pause();
+ },
+ formatDateTime(date) {
+ if (date) {
+ let time = new Date(date);
+ var month = time.getMonth() + 1;
+ var date = time.getDate();
+ return this.add0(month) + "-" + this.add0(date);
+ } else {
+ return "--";
+ }
+ },
+
+ dateFormatter(time) {
+ if (time) {
+ var year = time.getFullYear();
+ var month = time.getMonth() + 1;
+ var date = time.getDate();
+ var hour = time.getHours();
+ var minute = time.getMinutes();
+ var second = time.getSeconds();
+ return (
+ this.add0(year) +
+ "-" +
+ this.add0(month) +
+ "-" +
+ this.add0(date) +
+ " " +
+ this.add0(hour) +
+ ":" +
+ this.add0(minute) +
+ ":" +
+ this.add0(second)
+ );
+ } else {
+ return 0;
+ }
+ },
+
+ add0(val) {
+ return val < 10 ? "0" + val : val;
+ },
+ },
+};
+</script>
+<style lang="scss" scoped>
+.el-header {
+ background-color: #132763;
+ color: #ffffff;
+ text-align: center;
+ line-height: 60px;
+ font-size: 22px;
+}
+
+.el-aside {
+ background-color: #0b1536;
+ color: #ffffff;
+ text-align: center;
+ line-height: 200px;
+ height: 370px;
+ border-right: 1px solid rgba(255, 255, 255, 0.6);
+}
+
+.el-main {
+ background-color: #0b1536;
+ color: #ffffff;
+ text-align: center;
+ height: 370px;
+ padding: 0px;
+ overflow: hidden;
+}
+
+.menuItem {
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: center;
+
+ li {
+ }
+
+ i {
+ line-height: 56px;
+ font-size: 10px;
+ width: 30px;
+ }
+}
+
+.mainTitle {
+ width: 90%;
+ margin-left: 5%;
+ height: 40px;
+ line-height: 40px;
+ margin-top: 10px;
+ padding-bottom: 10px;
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+ border-bottom: 1px solid rgba($color: #ffffff, $alpha: 0.3);
+ font-size: 16px;
+}
+
+.recordingBlock {
+ margin-top: 10px;
+ width: 90%;
+ margin-left: 5%;
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+ padding-bottom: 10px;
+ border-bottom: 1px solid rgba($color: #ffffff, $alpha: 0.3);
+ font-size: 16px;
+ height: 120px;
+
+ .joinRecording {
+ width: 100%;
+
+ .joinRecordingIcon {
+ height: 40px;
+ cursor: pointer;
+ p {
+ line-height: 40px;
+ }
+ }
+
+ .joinRecordingContent {
+ height: 40px;
+
+ .have {
+ line-height: 40px;
+ }
+
+ .nohave {
+ text-align: center;
+ }
+ }
+ }
+}
+
+.pointChart {
+ margin-top: 10px;
+ width: 90%;
+ margin-left: 5%;
+ p {
+ line-height: 40px;
+ font-size: 14px;
+ }
+}
+
+.alertBlock {
+ width: 100px;
+ height: 100px;
+ position: fixed;
+ top: 50%;
+ height: 50%;
+ z-index: 999;
+ background-color: aqua;
+}
+
+.el-aside::-webkit-scrollbar {
+ /*婊氬姩鏉℃暣浣撴牱寮�*/
+
+ width: 4px; /*楂樺鍒嗗埆瀵瑰簲妯珫婊氬姩鏉$殑灏哄*/
+
+ height: 1px;
+}
+
+.el-aside::-webkit-scrollbar-thumb {
+ /*婊氬姩鏉¢噷闈㈠皬鏂瑰潡*/
+
+ border-radius: 10px;
+
+ -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+
+ background: #535353;
+}
+
+.el-aside::-webkit-scrollbar-track {
+ /*婊氬姩鏉¢噷闈㈣建閬�*/
+
+ -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+
+ border-radius: 0;
+
+ background: #ededed;
+}
+
+/deep/ .el-input__inner {
+ height: 22.5px;
+ line-height: 22.5px;
+}
+
+.topButton {
+ position: absolute;
+ right: 30px;
+ margin-top: 16px;
+}
+
+.svgIcon {
+ cursor: pointer;
+}
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/components/rightBlock.vue b/bigScreen/src/views/components/rightBlock.vue
new file mode 100644
index 0000000..061f897
--- /dev/null
+++ b/bigScreen/src/views/components/rightBlock.vue
@@ -0,0 +1,782 @@
+<template>
+ <div
+ v-loading="loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ element-loading-spinner="el-icon-loading"
+ >
+ <video
+ ref="videoElement"
+ id="videoElement"
+ controls
+ width="0"
+ height="0"
+ v-show="false"
+ >
+ xxx
+ </video>
+ <div v-if="radioValue == '1'" style="width: 100%; height: 100%">
+ <div style="width: 100%; height: 30%; overflow: hidden">
+ <div class="title">
+ <el-image :src="diamondSrc" style="" class="imgSty"></el-image>
+ <p>鍘嬪埗鏁堟灉</p>
+ </div>
+ <suppressionEffect
+ :timeValue="timeValue"
+ :frequencyValue="frequencyValue"
+ :switchValue="switchValue"
+ ></suppressionEffect>
+ </div>
+ <div style="width: 100%; height: 30%; overflow-y: hidden; margin-top: 3%">
+ <div class="title">
+ <el-image :src="diamondSrc" style="" class="imgSty"></el-image>
+ <p>鍘嬪埗瑕嗙洊鐜�</p>
+ </div>
+ <suppressionCoverage
+ :timeValue="timeValue"
+ :frequencyValue="frequencyValue"
+ :switchValue="switchValue"
+ ></suppressionCoverage>
+ </div>
+ <div style="width: 100%; height: 30%; overflow-y: hidden; margin-top: 3%">
+ <div class="title">
+ <el-image :src="diamondSrc" style="" class="imgSty"></el-image>
+ <p>鍘嬪埗瑕嗙洊鐜�</p>
+ </div>
+ <blanketCoverage
+ :timeValue="timeValue"
+ :frequencyValue="frequencyValue"
+ :switchValue="switchValue"
+ ></blanketCoverage>
+ </div>
+ </div>
+ <div v-if="radioValue == '0'" style="width: 100%; height: 100%">
+ <div class="rightCover">
+ <div class="rightCoverTitle">
+ <p style="color: #409eff; line-height: 28px; font-size: 18px">
+ 棰戠巼:
+ <span
+ style="margin-left: 10px"
+ v-show="!isEdit"
+ @dblclick="changeInput()"
+ >{{ nowFre }}</span
+ >
+ <el-input
+ v-model="nowFre"
+ placeholder=""
+ v-show="isEdit"
+ @blur="changeP"
+ ref="editInput"
+ style="width: 80px"
+ ></el-input>
+ </p>
+
+ <el-button size="mini" type="primary" plain @click="recordAll"
+ >褰曞埗</el-button
+ >
+ </div>
+ <el-table
+ ref="multipleTable"
+ :data="rightList"
+ tooltip-effect="dark"
+ style="width: 100%"
+ @selection-change="handleSelectionChange"
+ :height="divHeight"
+ :header-cell-style="{ background: 'transparent' }"
+ :key="tableKey"
+ >
+ <el-table-column type="selection" width="40"> </el-table-column>
+ <el-table-column label="">
+ <template slot-scope="scope"
+ ><span style="color: #409eff">{{
+ scope.row.monitorpointName
+ }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="" width="55">
+ <template slot-scope="scope">
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="寮�濮嬬洿鎾�"
+ placement="top"
+ v-if="!scope.row.isplay"
+ >
+ <i
+ class="el-icon-video-play"
+ @click="startPlay(scope)"
+ style="cursor: pointer; line-height: 40px; color: #ffffff"
+ ></i>
+ </el-tooltip>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鏆傚仠鐩存挱"
+ placement="top"
+ v-else
+ >
+ <i
+ class="el-icon-video-pause"
+ @click="stopPlay(scope)"
+ style="cursor: pointer; line-height: 40px; color: #ffffff"
+ ></i>
+ </el-tooltip>
+ </template>
+ </el-table-column>
+
+ <el-table-column label="" width="100">
+ <template slot-scope="scope">
+ <el-select
+ v-model="scope.row.assessvalue"
+ placeholder="璇勫垎"
+ size="mini"
+ :disabled="!(switchValue == 1)"
+ @change="changeAssess(scope)"
+ >
+ <el-option
+ v-for="item in options"
+ :key="item"
+ :label="item"
+ :value="item"
+ >
+ </el-option>
+ </el-select>
+ </template>
+ </el-table-column>
+ <el-table-column label="">
+ <template slot-scope="scope">
+ <div style="color: #409eff">
+ <span>褰曞埗:{{ scope.row.main_freq }}</span>
+
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鍔犲叆褰曞埗"
+ placement="top"
+ v-if="
+ scope.row.main_freq === null || scope.row.main_freq == ''
+ "
+ >
+ <svg-icon
+ class="svgIcon"
+ icon-class="add"
+ style="margin-left: 10px"
+ @click="joinRecord(3, scope.row.monitorpointId, nowFre)"
+ ></svg-icon>
+ </el-tooltip>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鍋滄褰曞埗"
+ placement="top"
+ v-else
+ >
+ <svg-icon
+ class="svgIcon"
+ icon-class="stop"
+ @click="
+ dropRecord(scope.row.main_freq, scope.row.monitorpointId)
+ "
+ style="margin-left: 10px"
+ ></svg-icon>
+ </el-tooltip>
+ </div>
+ </template>
+ </el-table-column>
+ <!-- <el-table-column label="">
+ <template slot-scope="scope">
+ <div style="color: #409eff">
+ <span>鍓�:{{ scope.row.subsidiary_freq }}</span>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鍔犲叆褰曞埗"
+ placement="top"
+ v-if="
+ scope.row.subsidiary_freq === null ||
+ scope.row.subsidiary_freq == ''
+ "
+ >
+ <svg-icon
+ class="svgIcon"
+ icon-class="add"
+ style="margin-left: 10px"
+ @click="joinRecord(2, scope.row.monitorpointId, nowFre)"
+ ></svg-icon>
+ </el-tooltip>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鍋滄褰曞埗"
+ placement="top"
+ v-else
+ >
+ <svg-icon
+ class="svgIcon"
+ icon-class="stop"
+ @click="
+ dropRecord(
+ scope.row.subsidiary_freq,
+ scope.row.monitorpointId
+ )
+ "
+ style="margin-left: 10px"
+ ></svg-icon>
+ </el-tooltip>
+ </div>
+ </template>
+ </el-table-column> -->
+ </el-table>
+ </div>
+ </div>
+ </div>
+</template>
+<script>
+import suppressionEffect from "./suppressionEffect";
+import suppressionCoverage from "./suppressionCoverage";
+import blanketCoverage from "./blanketCoverage";
+export default {
+ watch: {
+ leftSelFre: {
+ handler(n, o) {
+ this.nowFre = JSON.parse(JSON.stringify(this.leftSelFre));
+ this.getData();
+ },
+ deep: true,
+ },
+ timeValue: {
+ handler(n, o) {
+ this.getData();
+ },
+ deep: true,
+ },
+ frequencyValue: {
+ handler(n, o) {
+ this.nowFre = JSON.parse(JSON.stringify(this.frequencyValue));
+ this.getData();
+ },
+ deep: true,
+ },
+ },
+ components: { suppressionEffect, suppressionCoverage, blanketCoverage },
+ props: [
+ "rightDrawState",
+ "timeValue",
+ "frequencyValue",
+ "switchValue",
+ "radioValue",
+ "leftSelFre",
+ "userid",
+ ],
+ data() {
+ return {
+ loading: false,
+ divHeight: document.body.clientHeight - 165, // 楂�
+ isEdit: false,
+ tableKey: false,
+ isListen: true,
+ diamondSrc: require("@/assets/diamond.png"),
+ nowFre: "",
+ rightList: [],
+ multipleSelection: [],
+ options: ["1", "2", "3", "4", "5", "鏃犳晥"],
+ pointValue: "",
+ isplay: false,
+ rtsp: "",
+ player: null,
+ recordingtime: null,
+ };
+ },
+ mounted() {
+ this.nowFre = "1557";
+ this.getData();
+ },
+ methods: {
+ changeInput() {
+ this.isEdit = !this.isEdit;
+ setTimeout(() => {
+ this.$refs.editInput.focus();
+ }, 500);
+ },
+ changeP(e) {
+ this.isEdit = !this.isEdit;
+ this.getData();
+ },
+ recordAll() {
+ if (this.multipleSelection.length == 0) {
+ this.$message.warning("璇峰厛閫夋嫨棰戠巼");
+ } else {
+ this.$prompt("璇疯緭鍏ユ椂闂�(鍒嗛挓)", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ inputPattern:
+ /^([1-9]|([1-9][0-9])|([1-2][0-9][0-9])|([3][0-5][0-9])|([0]{1}))$|^[3][6][0]$/,
+ inputErrorMessage: "璇疯緭鍏�1鍒�360鐨勬暣鏁�",
+ })
+ .then(({ value }) => {
+ let tmpMul = this.multipleSelection;
+ let sendId = [];
+ tmpMul.forEach((item) => {
+ sendId.push(item.monitorpointId);
+ });
+ let sendFre = [];
+ sendId.forEach((item) => {
+ sendFre.push(this.nowFre);
+ });
+
+ this.$emit("showLoading", "luzhi");
+ let param = new URLSearchParams();
+ param.append("method", "record");
+ param.append("key", 123456);
+ param.append("recordTimeLength", value);
+ param.append("monitorpointId", sendId);
+ param.append("frequencyValue", sendFre);
+ param.append("isUnderWay", 0);
+
+ let url = `${window.equipmentURL}FRP/TNewrecordtask.do?method=record&monitorpointId=${sendId}&frequencyValue=${this.nowFre}`;
+ this.$getJSON(window.equipmentURL +
+ "FRP/TNewrecordtask.do",
+ param
+ ).then((res) => {
+ this.$emit("hideLoading");
+ let param1 = {
+ bid: "setChannelRecord",
+ monitorpointId: sendId,
+ frequency: this.nowFre,
+ userid: this.userid,
+ requesturl: url,
+ success: res[0].success.toString(),
+ msg: res[0].msg,
+ recordminitus: value,
+ };
+
+ console.log("123")
+ this.$post(
+ window.backstageURL + "dataservice/dealData",
+ param1
+ ).then((res1) => {
+ console.log(res1)
+ });
+
+ if (res.success) {
+ this.$message.success(res.msg);
+ this.getData();
+ this.tableKey = !this.tableKey;
+ } else {
+ this.$message.error(res.msg);
+ }
+ });
+ })
+ .catch(() => {
+ this.$message({
+ type: "info",
+ message: "鍙栨秷杈撳叆",
+ });
+ });
+ }
+ },
+ changeAssess(scope) {
+ let emitData = {
+ assessvalue: scope.row.assessvalue,
+ id: scope.row.monitorpointId,
+ };
+ this.$emit("changeAssess", emitData);
+ let sendAssess = "";
+ if (scope.row.assessvalue == "鏃犳晥") {
+ sendAssess = 0;
+ } else {
+ sendAssess = scope.row.assessvalue;
+ }
+ let param = {
+ bid: "assessPress",
+ frequency: this.nowFre,
+ assessvalue: sendAssess,
+ monitorpointId: scope.row.monitorpointId,
+ taskid: scope.row.taskid,
+ userid: this.userid,
+ recording_time: this.dateFormatter(new Date()),
+ };
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {});
+ },
+ dateFormatter(time) {
+ if (time) {
+ var year = time.getFullYear();
+ var month = time.getMonth() + 1;
+ var date = time.getDate();
+ var hour = time.getHours();
+ var minute = time.getMinutes();
+ var second = time.getSeconds();
+ return (
+ this.add0(year) +
+ "-" +
+ this.add0(month) +
+ "-" +
+ this.add0(date) +
+ " " +
+ this.add0(hour) +
+ ":" +
+ this.add0(minute) +
+ ":" +
+ this.add0(second)
+ );
+ } else {
+ return 0;
+ }
+ },
+
+ add0(val) {
+ return val < 10 ? "0" + val : val;
+ },
+ toggleSelection(rows) {
+ if (rows) {
+ rows.forEach((row) => {
+ this.$refs.multipleTable.toggleRowSelection(row);
+ });
+ } else {
+ this.$refs.multipleTable.clearSelection();
+ }
+ },
+ handleSelectionChange(val) {
+ this.multipleSelection = val;
+ },
+ getData() {
+ this.loading = true;
+ let tmpTimeValue = JSON.parse(JSON.stringify(this.timeValue));
+ let date = tmpTimeValue.split(" ")[0];
+ let hour = this.add0(Number(tmpTimeValue.split(" ")[1].split(":")[0]));
+ this.rightList = [];
+ this.$getJSON(
+ window.backstageURL +
+ "dataservice/getNoTokenData?bid=getChannelSettingB"
+ ).then((res) => {
+ let tmp = JSON.parse(JSON.stringify(res.data.data[0]));
+ tmp.forEach((item) => {
+ item.isplay = false;
+ item.taskid = "";
+ item.assessvalue = null;
+ });
+
+ let param = {
+ bid: "getPointData",
+ userid: this.userid,
+ wdate: date,
+ whour: hour,
+ frequency: this.nowFre,
+ };
+
+ console.log(param);
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ let assessArr = JSON.parse(JSON.stringify(res.data.data[0]));
+ tmp.forEach((item) => {
+ assessArr.forEach((item1) => {
+ if (item.monitorpointId == item1.monitorpointId) {
+ item.taskid = item1.taskid;
+ item.assessvalue = item1.assessvalue;
+ }
+ });
+ });
+ this.loading = false;
+ });
+ this.rightList = tmp;
+ this.tableKey = !this.tableKey;
+ });
+ },
+
+ joinRecord(channelId, id, fre) {
+ let param = {
+ bid: "checkChannel",
+ channelId: channelId,
+ monitorpointId: id,
+ };
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ if (res.data.data[0][0].frequencyValue === fre) {
+ } else {
+ if (res.data.data[0][0].frequencyValue) {
+ this.$confirm(
+ `鏄惁鍋滄褰曞埗${res.data.data[0][0].frequencyValue},骞跺皢${fre}鍔犲叆褰曞埗`,
+ "鎻愮ず",
+ {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ }
+ )
+ .then(() => {
+ this.addRecording(0, res.data.data[0][0], id, fre);
+ })
+ .catch(() => {
+ this.$message({
+ type: "info",
+ message: "宸插彇娑�",
+ });
+ });
+ } else {
+ this.addRecording(1, {}, id, fre);
+ }
+ }
+ });
+ },
+
+ addRecording(type, oldFre, id, fre) {
+ this.$prompt("璇疯緭鍏ユ椂闂�(鍒嗛挓)", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ inputPattern:
+ /^([1-9]|([1-9][0-9])|([1-2][0-9][0-9])|([3][0-5][0-9])|([0]{1}))$|^[3][6][0]$/,
+ inputErrorMessage: "璇疯緭鍏�1鍒�360鐨勬暣鏁�",
+ })
+ .then(({ value }) => {
+ if (type == 1) {
+ this.$emit("showLoading", "luzhi");
+ let param = new URLSearchParams();
+ param.append("method", "record");
+ param.append("key", 111111);
+ param.append("recordTimeLength", value);
+ param.append("monitorpointId", id);
+ param.append("frequencyValue", fre);
+ param.append("isUnderWay", 0);
+
+ let url = `${window.equipmentURL}FRP/TNewrecordtask.do?method=record&monitorpointId=${id}&frequencyValue=${fre}`;
+ this.$getJSON(window.equipmentURL +
+ "FRP/TNewrecordtask.do",
+ param
+ ).then((res) => {
+ this.$emit("hideLoading");
+ let param1 = {
+ bid: "setChannelRecord",
+ monitorpointId: id,
+ frequency: fre,
+ userid: this.userid,
+ requesturl: url,
+ success: res.success.toString(),
+ msg: res.msg,
+ recordminitus: value,
+ };
+ this.$post(
+ window.backstageURL + "dataservice/dealData",
+ param1
+ ).then((res1) => {});
+ if (res.success) {
+ this.$message.success(res.msg);
+ this.getData();
+ this.tableKey = !this.tableKey;
+ } else {
+ this.$message.error(res.msg);
+ }
+ });
+ } else {
+ let param = new URLSearchParams();
+ param.append("method", "delete");
+ param.append("key", 123456);
+ param.append("monitorpointId", oldFre.monitorpointId);
+ param.append("frequencyValue", oldFre.frequencyValue);
+ this.$getJSON(window.equipmentURL +
+ "FRP/TNewrecordtask.do",
+ param
+ ).then((res) => {
+ if (res.success) {
+ let param1 = new URLSearchParams();
+ param1.append("method", "record");
+ param1.append("key", 111111);
+ param1.append("recordTimeLength", value);
+ param1.append("monitorpointId", id);
+ param1.append("frequencyValue", fre);
+
+ param.append("isUnderWay", 0);
+
+ let url = `${window.equipmentURL}FRP/TNewrecordtask.do?method=record&monitorpointId=${id}&frequencyValue=${fre}`;
+ this.$getJSON(window.equipmentURL +
+ "FRP/TNewrecordtask.do",
+ param1
+ ).then((res1) => {
+ this.$emit("hideLoading");
+ let param2 = {
+ bid: "setChannelRecord",
+ monitorpointId: id,
+ frequency: fre,
+ userid: this.userid,
+ requesturl: url,
+ success: res1.success.toString(),
+ msg: res1.msg,
+ recordminitus: value,
+ };
+
+ this.$post(
+ window.backstageURL + "dataservice/dealData",
+ param2
+ ).then((res2) => {});
+
+ if (res1.success) {
+ this.$message.success(res1.msg);
+ this.getData();
+ this.tableKey = !this.tableKey;
+ } else {
+ this.$message.error(res1.msg);
+ }
+ });
+ } else {
+ this.$message.warning(res.msg);
+ }
+ });
+ }
+ })
+ .catch(() => {
+ this.$message({
+ type: "info",
+ message: "鍙栨秷杈撳叆",
+ });
+ });
+ },
+
+ dropRecord(fre, id) {
+ this.$confirm("鏄惁鍋滄褰曞埗", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ })
+ .then(() => {
+ let param = new URLSearchParams();
+ param.append("method", "delete");
+ param.append("key", 123456);
+ param.append("monitorpointId", id);
+ param.append("frequencyValue", fre);
+ this.$getJSON(window.equipmentURL +
+ "FRP/TNewrecordtask.do",
+ param
+ ).then((res) => {
+ if (res.success) {
+ this.getData();
+ this.tableKey = !this.tableKey;
+ } else {
+ this.$message.warning(res.msg);
+ }
+ });
+ })
+ .catch(() => {
+ this.$message({
+ type: "info",
+ message: "宸插彇娑�",
+ });
+ });
+ },
+
+ stopPlay(scope) {
+ console.log("@@@");
+ this.$emit("stopPlay");
+ scope.row.isplay = false;
+ },
+ startPlay(scope) {
+ console.log(this.rightList);
+ this.rightList.forEach((item) => {
+ item.isplay = false;
+ });
+ scope.row.isplay = true;
+ // this.$emit("jumpPoint", scope.row);
+
+ let playData = {
+ monitorpointId: scope.row.monitorpointId,
+ frequencyValue: this.nowFre,
+ };
+ console.log(playData)
+ this.$emit("startPlay", playData);
+ },
+ },
+};
+</script>
+<style lang="scss" scoped>
+.title {
+ display: flex;
+ flex-wrap: nowrap;
+ flex-direction: row;
+ width: 96%;
+ margin-left: 2%;
+ margin-top: 20px;
+ height: 30px;
+
+ .imgSty {
+ width: 15px;
+ height: 15px;
+ margin-top: 7.5px;
+ }
+
+ p {
+ font-size: 18px;
+ color: #4dd6b6;
+ line-height: 30px;
+ margin-left: 10px;
+ }
+}
+
+/deep/ .el-table--fit {
+ padding: 0px !important;
+}
+
+.rightCover {
+ width: 96%;
+ margin-left: 2%;
+ padding-top: 20px;
+
+ .rightCoverTitle {
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+ }
+
+ /deep/ .el-table--fit {
+ padding: 20px;
+ }
+ /deep/ .el-table,
+ .el-table__expanded-cell {
+ background-color: transparent;
+ }
+
+ /deep/ .el-table tr {
+ background-color: transparent !important;
+ }
+ /deep/ .el-table--enable-row-transition .el-table__body td,
+ .el-table .cell {
+ background-color: transparent;
+ }
+ div::-webkit-scrollbar {
+ width: 10px;
+ height: 10px;
+ }
+ div::-webkit-scrollbar-track {
+ background: rgb(239, 239, 239);
+ border-radius: 2px;
+ }
+ div::-webkit-scrollbar-thumb {
+ background: #bfbfbf;
+ border-radius: 10px;
+ }
+ div::-webkit-scrollbar-thumb:hover {
+ background: #333;
+ }
+ div::-webkit-scrollbar-corner {
+ background: #179a16;
+ }
+}
+
+/deep/ .el-table__body-wrapper::-webkit-scrollbar {
+ /*width: 0;瀹藉害涓�0闅愯棌*/
+ width: 0px;
+}
+/deep/ .el-table__body-wrapper::-webkit-scrollbar-thumb {
+ border-radius: 2px;
+ height: 50px;
+ background: #eee;
+}
+/deep/ .el-table__body-wrapper::-webkit-scrollbar-track {
+ box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+ border-radius: 2px;
+ background: rgba(0, 0, 0, 0.4);
+}
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/components/socketInfo.vue b/bigScreen/src/views/components/socketInfo.vue
new file mode 100644
index 0000000..c5b001d
--- /dev/null
+++ b/bigScreen/src/views/components/socketInfo.vue
@@ -0,0 +1,842 @@
+<template>
+ <div v-loading="loading">
+ <div v-show="isShow" class="shadowDiv"></div>
+ <div
+ v-show="isShow"
+ class="scoreTask"
+ :style="{ height: windowHeight * 0.5 - 20 + 'px' }"
+ >
+ <i class="el-icon-close iconPos" @click="closeTop()"></i>
+
+ <div style="width: 90%; margin-left: 5%; margin-top: 30px; z-index: 1000">
+ <el-table
+ :data="tableData"
+ style="width: 100%"
+ :border="false"
+ :show-header="false"
+ :height="windowHeight * 0.5 - 50 + 'px'"
+ >
+ <el-table-column type="index" label="#"> </el-table-column>
+ <el-table-column prop="name" label="鏃ユ湡" min-width="130">
+ </el-table-column>
+ <el-table-column prop="frequency" label="濮撳悕"> </el-table-column>
+ <el-table-column prop="taskcompletion" label="鍦板潃">
+ </el-table-column>
+ <el-table-column prop="" label="鎿嶄綔">
+ <template slot-scope="scope">
+ <div>
+ <el-button size="mini" type="success" @click="startScore(scope)"
+ >寮�濮嬭瘎鍒�</el-button
+ >
+ </div>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </div>
+ <div
+ v-show="showCard"
+ class="scoreTask2"
+ :style="{
+ height: windowHeight * 0.3 + 'px',
+ top: windowHeight * 0.6 + 'px',
+ }"
+ >
+ <i class="el-icon-close iconPos" @click="closeBottom()"></i>
+
+ <div>
+ <div
+ :style="{ width: '100%', height: windowHeight * 0.3 - 30 + 'px' }"
+ :key="key"
+ >
+ <div>
+ <div class="carouselDiv">
+ <div class="carouselTop">
+ <p>{{ nowTime }}</p>
+ <p>棰戠巼:{{ socketArray[nowSocketIndex].frequency }}</p>
+
+ <p>{{ nowSocketIndex + 1 }} / {{ socketArray.length }}</p>
+
+ <el-button
+ type="primary"
+ class="submit"
+ size="mini"
+ :disabled="!isCanClick"
+ @click="submitAll()"
+ >鎻愪氦</el-button
+ >
+ </div>
+ <div class="carouselMid" :key="isKey">
+ <div
+ class="carouselMidHover"
+ @click="rePlay(socketArray[nowSocketIndex], nowSocketIndex)"
+ style="margin-left: 20px"
+ v-if="isHaveTime"
+ >
+ <i class="el-icon-refresh-right" style="font-size: 36px"></i>
+ <p style="margin-top: 5px; text-align: center">鍥炴斁</p>
+ </div>
+
+ <div v-else>
+ <div
+ class="carouselMidHover"
+ @click="
+ pausePlay(socketArray[nowSocketIndex], nowSocketIndex)
+ "
+ v-if="isplay"
+ >
+ <i class="el-icon-video-pause" style="font-size: 36px"></i>
+ <p style="margin-top: 5px; text-align: center">鏆傚仠</p>
+ </div>
+ <div
+ class="carouselMidHover"
+ @click="
+ startPlay(socketArray[nowSocketIndex], nowSocketIndex)
+ "
+ v-else
+ >
+ <i class="el-icon-video-play" style="font-size: 36px"></i>
+ <p style="margin-top: 5px; text-align: center">鎾斁</p>
+ </div>
+ </div>
+ </div>
+ <div class="carouselbottom">
+ <p style="line-height: 28px">璇疯瘎鍒�:</p>
+
+ <el-radio-group
+ v-model="socketArray[nowSocketIndex].assessvalue"
+ size="mini"
+ style="margin-left: 20px; height: 28px"
+ >
+ <el-radio-button label="1">1鍒�</el-radio-button>
+ <el-radio-button label="2">2鍒�</el-radio-button>
+ <el-radio-button label="3">3鍒�</el-radio-button>
+ <el-radio-button label="4">4鍒�</el-radio-button>
+ <el-radio-button label="5">5鍒�</el-radio-button>
+ <el-radio-button label="0">鏃犳晥</el-radio-button>
+ </el-radio-group>
+ </div>
+
+ <div
+ class="carouselLeft"
+ @click="jumpPrev(socketArray[nowSocketIndex], nowSocketIndex)"
+ >
+ <p><< 涓婁竴椤�</p>
+ </div>
+ <div
+ class="carouselRight"
+ @click="jumpNext(socketArray[nowSocketIndex], nowSocketIndex)"
+ >
+ <p>涓嬩竴椤� >></p>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <el-dialog :visible.sync="socketPlay" width="50" @close="socketReplay">
+ <video
+ id="socketVidoPlay"
+ ref="socketVidoPlay"
+ src=""
+ controls
+ preload
+ width="100%"
+ height="300"
+ ></video>
+ </el-dialog>
+ </div>
+</template>
+<script>
+export default {
+ watch: {
+ visible: {
+ handler(n, o) {
+ this.windowHeight = document.body.clientHeight;
+ this.isShow = this.visible;
+ if (this.visible) {
+ this.getInfo();
+ }
+ },
+ isShow: {
+ handler(n, o) {
+ if (this.isShow) {
+ this.getInfo();
+ }
+ },
+ },
+ },
+ socketArray: {
+ handler(n, o) {
+ let isShow = true;
+
+ this.socketArray.forEach((item) => {
+ if (item.assessvalue) {
+ } else {
+ isShow = false;
+ }
+ });
+
+ this.isCanClick = isShow;
+ },
+ deep: true,
+ },
+ },
+ data() {
+ return {
+ isHaveTime: false,
+ isKey: false,
+ socketPlay: false,
+ nowTime: "",
+ key: false,
+ nowSocketIndex: 0,
+ loading: false,
+ windowHeight: document.body.clientHeight,
+ tableData: [],
+ isShow: false,
+ showCard: false,
+ socketArray: [{ frequency: "", assessvalue: "" }],
+ rateValue: "",
+ nowPlayId: null,
+ isplay: true,
+ player: null,
+ isCanClick: false,
+ recordingtime: "",
+ nowScoreId: "",
+ playVideo: null,
+ };
+ },
+ props: {
+ visible: {
+ type: Boolean,
+ default: false,
+ },
+ username: {
+ type: String,
+ default: "",
+ },
+ userid: {
+ type: String,
+ default: "",
+ },
+ isLoney: {
+ type: Boolean,
+ default: false,
+ },
+ },
+ mounted() {},
+ methods: {
+ rePlay(data, index) {
+ if (data.update_time) {
+ let startTime = this.dateFormatter(
+ new Date(new Date(data.update_time).getTime())
+ );
+ let endTime = this.dateFormatter(
+ new Date(new Date(data.update_time).getTime() + 1000 * 60 * 180)
+ );
+
+ let param = new URLSearchParams();
+ param.append("method", "mutipleReview");
+ param.append("instruct", 1);
+ param.append("playType", 1);
+ param.append("hls", 1);
+ param.append("key", 123456);
+ param.append("monitorpointId", data.monitorpoint_id);
+ param.append("frequencyValue", data.frequency);
+ param.append("startTime", startTime);
+ param.append("endTime", endTime);
+
+ this.$post(window.equipmentURL + "FRP/NetRequest.do", param).then(
+ (res) => {
+ if (res.success == "true") {
+ this.socketPlay = true;
+ let url = res.url;
+ this.playVideo = this.$refs.socketVidoPlay;
+ if (Hls.isSupported()) {
+ var hls = new Hls();
+ hls.loadSource(url);
+ hls.attachMedia(this.playVideo);
+ hls.on(Hls.Events.MANIFEST_PARSED, function () {
+ this.playVideo.play();
+ });
+ } else if (
+ this.playVideo.canPlayType("application/vnd.apple.mpegurl")
+ ) {
+ this.playVideo.src = url;
+ this.playVideo.addEventListener("loadedmetadata", function () {
+ this.playVideo.play();
+ });
+ }
+ } else {
+ this.$message.error(res.msg);
+ }
+ }
+ );
+ } else {
+ this.$message.warning("灏氭湭鏈夊洖鏀�");
+ }
+ },
+ socketReplay() {
+ if (this.playVideo) {
+ this.playVideo.pause();
+ this.playVideo = null;
+ }
+ },
+ jumpPrev(data, index) {
+ if (data.assessvalue) {
+ if (index == 0) {
+ this.nowSocketIndex = this.socketArray.length - 1;
+ } else {
+ this.nowSocketIndex = index - 1;
+ }
+ let param = {
+ bid: "assessPress",
+ frequency: this.socketArray[index].frequency,
+ assessvalue: this.socketArray[index].assessvalue,
+ monitorpointId: this.socketArray[index].monitorpoint_id,
+ taskid: this.socketArray[index].id,
+ userid: this.userid,
+ recording_time: this.dateFormatter(new Date()),
+ };
+
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData",
+ param
+ ).then((res) => {});
+
+ if (this.player) {
+ this.player.pause();
+ this.player.unload();
+ this.player.detachMediaElement();
+ this.player.destroy();
+ }
+ this.player = null;
+ this.nowPlayId = null;
+ this.isplay = false;
+
+ this.getInfo();
+
+ if (this.socketArray[this.nowSocketIndex].update_time) {
+ this.isHaveTime = true;
+ } else {
+ this.isHaveTime = false;
+ this.socketArray[this.nowSocketIndex].update_time = "1";
+ this.startPlay(
+ this.socketArray[this.nowSocketIndex],
+ this.nowSocketIndex
+ );
+ }
+ this.isKey = !this.isKey;
+ } else {
+ this.$message.warning("璇疯瘎鍒�");
+ }
+
+ this.key = !this.key;
+ },
+ jumpNext(data, index) {
+ if (data.assessvalue) {
+ if (index == this.socketArray.length - 1) {
+ this.nowSocketIndex = 0;
+ } else {
+ this.nowSocketIndex = index + 1;
+ }
+ this.isKey = !this.isKey;
+ let param = {
+ bid: "assessPress",
+ frequency: this.socketArray[index].frequency,
+ assessvalue: this.socketArray[index].assessvalue,
+ monitorpointId: this.socketArray[index].monitorpoint_id,
+ taskid: this.socketArray[index].id,
+ userid: this.userid,
+ recording_time: this.dateFormatter(new Date()),
+ };
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData",
+ param
+ ).then((res) => {});
+
+ this.recordingtime = "";
+ if (this.player) {
+ this.player.pause();
+ this.player.unload();
+ this.player.detachMediaElement();
+ this.player.destroy();
+ }
+ this.player = null;
+ this.nowPlayId = null;
+ this.isplay = false;
+
+ this.getInfo();
+ if (this.socketArray[this.nowSocketIndex].update_time) {
+ this.isHaveTime = true;
+ } else {
+ this.isHaveTime = false;
+ this.socketArray[this.nowSocketIndex].update_time = "1";
+ this.startPlay(
+ this.socketArray[this.nowSocketIndex],
+ this.nowSocketIndex
+ );
+ }
+
+ this.isKey = !this.isKey;
+ } else {
+ this.$message.warning("璇疯瘎鍒�");
+ }
+ },
+ submitAll() {
+ let param = new URLSearchParams();
+ param.append("bid", "updateAssessSchedule");
+ param.append("schedule_id", this.nowScoreId);
+ param.append(
+ "complate_rate",
+ this.socketArray.length + "/" + this.socketArray.length
+ );
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ if (res.code == 20000) {
+ this.$message.success("鎻愪氦鎴愬姛");
+ }
+ });
+ },
+ getInfo() {
+ if (this.userid == "" || this.username == "") {
+ if (this.isLoney) {
+ this.$emit("showLogin");
+ } else {
+ window.location.href =window.backstageURL +
+ "ammonitor/#/passport/login";
+ }
+ } else {
+ let param = new URLSearchParams();
+ param.append("bid", "getAssessSchedule");
+ param.append("userid", this.userid);
+
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ this.tableData = JSON.parse(JSON.stringify(res.data.data[0]));
+ });
+ }
+ },
+ startScore(scope) {
+ if (this.userid == "" || this.username == "") {
+ if (this.isLoney) {
+ this.$emit("showLogin");
+ } else {
+ window.location.href =window.backstageURL +
+ "ammonitor/#/passport/login";
+ }
+ } else {
+ this.nowScoreId = scope.row.id;
+ this.nowTime = scope.row.name;
+ let param = new URLSearchParams();
+ param.append("bid", "getAssessTask");
+ param.append("userid", this.userid);
+ param.append("schedule_id", scope.row.id);
+
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ if (res.code == 20000) {
+ this.socketArray = res.data.data;
+ this.showCard = true;
+
+ if (this.socketArray[this.nowSocketIndex].update_time) {
+ this.isHaveTime = true;
+ } else {
+ this.isHaveTime = false;
+ this.socketArray[this.nowSocketIndex].update_time = "1";
+ this.startPlay(
+ this.socketArray[this.nowSocketIndex],
+ this.nowSocketIndex
+ );
+ }
+ }
+ });
+ }
+ },
+ closeTop() {
+ this.isShow = false;
+ this.showCard = false;
+ if (this.player) {
+ this.player.pause();
+ this.player.unload();
+ this.player.detachMediaElement();
+ this.player.destroy();
+ this.player = null;
+ }
+ this.$emit("closeIsShow");
+ },
+ closeBottom() {
+ if (this.player) {
+ this.player.pause();
+ this.player.unload();
+ this.player.detachMediaElement();
+ this.player.destroy();
+ this.player = null;
+ }
+ this.showCard = false;
+ },
+ carouselChange(index, oldindex) {
+ if (this.recordingtime && this.socketArray[oldindex].assessvalue) {
+ let param = {
+ bid: "assessPress",
+ frequency: this.socketArray[oldindex].frequency,
+ assessvalue: this.socketArray[oldindex].assessvalue,
+ monitorpointId: this.socketArray[oldindex].monitorpoint_id,
+ taskid: this.socketArray[oldindex].id,
+ userid: this.userid,
+ recording_time: this.dateFormatter(this.recordingtime),
+ };
+
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData",
+ param
+ ).then((res) => {});
+
+ if (this.player) {
+ this.player.pause();
+ this.player.unload();
+ this.player.detachMediaElement();
+ this.player.destroy();
+ }
+ this.player = null;
+ this.nowPlayId = null;
+ this.isplay = false;
+ } else {
+ this.$message.warning("璇锋敹鍚苟璇勫垎");
+
+ if (this.recordingtime) {
+ let param1 = new URLSearchParams();
+ param1.append("method", "delete");
+ param1.append(
+ "monitorpointId",
+ this.socketArray[oldindex].monitorpoint_id
+ );
+ param1.append("frequencyValue", this.socketArray[oldindex].frequency);
+ param1.append("key", 123456);
+ this.$getJSON(window.equipmentURL +
+ "FRP/TNewrecordtask.do",
+ param1
+ ).then((res) => {});
+ }
+
+ if (oldindex < index) {
+ this.$refs.carousel.activeIndex = this.$refs.carousel.activeIndex - 1;
+ } else {
+ this.$refs.carousel.activeIndex = this.$refs.carousel.activeIndex + 1;
+ }
+ }
+ },
+
+ startPlay(item, index) {
+ if (this.nowPlayId) {
+ if (this.nowPlayId == index) {
+ if (this.isplay) {
+ this.$message.warning("褰撳墠璁惧姝e湪鎾斁");
+ } else {
+ this.isplay = true;
+ this.recordingtime = new Date();
+ this.player.play();
+ }
+ } else {
+ }
+ } else {
+ this.nowPlayId = index;
+ this.getPalyUrl(item);
+ }
+ },
+
+ pausePlay() {
+ this.isplay = false;
+ this.player.pause();
+ },
+ stopPlay() {
+ if (this.player) {
+ this.player.pause();
+ this.player.unload();
+ this.player.detachMediaElement();
+ this.player.destroy();
+ }
+ this.player = null;
+ this.nowPlayId = null;
+ this.isplay = false;
+ },
+
+ getPalyUrl(item) {
+ this.loading = true;
+ let par = new URLSearchParams();
+
+ par.append("method", "record");
+ par.append("key", 111111);
+ par.append("recordTimeLength", 1);
+ par.append("monitorpointId", item.monitorpoint_id);
+ par.append("frequencyValue", item.frequency);
+ par.append("isUnderWay", 3);
+
+ let url1 = `${window.equipmentURL}FRP/TNewrecordtask.do?method=record&monitorpointId=${item.monitorpoint_id}&frequencyValue=${item.frequency}`;
+ this.$getJSON(window.equipmentURL +
+ "FRP/TNewrecordtask.do",
+ par
+ ).then((re) => {
+ let par1 = {
+ bid: "setTempRecord",
+ monitorpointId: item.monitorpoint_id,
+ frequency: item.frequency,
+ userid: this.userid,
+ requesturl: url1,
+ success: re.success.toString(),
+ msg: re.msg,
+ recordminitus: 1,
+ };
+
+ this.$post(window.backstageURL +
+ "dataservice/dealData",
+ par1
+ ).then((re1) => {});
+
+ if (re.success) {
+ this.$message.success(re.msg);
+ } else {
+ this.$message.error(re.msg);
+ }
+ });
+
+ let param = new URLSearchParams();
+ param.append("method", "playLiveNew");
+ param.append("instruct", 1);
+ param.append("playType", 0);
+ param.append("hls", 0);
+ param.append("key", 123456);
+ param.append("monitorpointId", item.monitorpoint_id);
+ param.append("frequencyValue", item.frequency);
+
+ let url = `${window.equipmentURL}FRP/ScanSignal.do?method=playLiveNew&instruct=1&playType=0&hls=0&key=123456&monitorpointId=${item.monitorpoint_id}&frequencyValue=${item.frequency}`;
+ this.$getJSON(window.equipmentURL +
+ "FRP/ScanSignal.do",
+ param
+ ).then((res) => {
+ if (res.success == "true") {
+ this.$message.success("鑾峰彇鐩存挱鎴愬姛");
+ this.loading = false;
+
+ let flvurl = "";
+ if (res.url) {
+ flvurl = res.url;
+ }
+
+ let param1 = {
+ bid: "setMonitoringRecord",
+ monitorpointId: item.monitorpoint_id,
+ frequency: item.frequency,
+ userid: this.userid,
+ requesturl: url,
+ success: res.success,
+ msg: res.msg,
+ flvurl: flvurl,
+ recordminitus: 1,
+ };
+
+ this.$getJSON(
+ "dataservice/recordMonitorOpt",
+ param1
+ ).then((res1) => {});
+
+ if (res.url) {
+ this.rtsp = res.url;
+
+ let video = document.getElementById("videoElement");
+
+ if (flvjs.isSupported()) {
+ this.player = flvjs.createPlayer({
+ type: "flv",
+ url: this.rtsp,
+ });
+
+ this.player.attachMediaElement(video);
+
+ this.player.load(); //鍔犺浇
+
+ if (this.rtsp) {
+ this.recordingtime = new Date();
+ this.isplay = true;
+ this.player.play();
+ } else {
+ this.$message.error("鏃犻煶棰戞枃浠�");
+ }
+ }
+ } else {
+
+ }
+ } else {
+ this.$message.warning(res.msg);
+ }
+ });
+ },
+
+ dateFormatter(time) {
+ if (time) {
+ var year = time.getFullYear();
+ var month = time.getMonth() + 1;
+ var date = time.getDate();
+ var hour = time.getHours();
+ var minute = time.getMinutes();
+ var second = time.getSeconds();
+ return (
+ this.add0(year) +
+ "-" +
+ this.add0(month) +
+ "-" +
+ this.add0(date) +
+ " " +
+ this.add0(hour) +
+ ":" +
+ this.add0(minute) +
+ ":" +
+ this.add0(second)
+ );
+ } else {
+ return 0;
+ }
+ },
+
+ add0(val) {
+ return val < 10 ? "0" + val : val;
+ },
+ },
+};
+</script>
+<style lang="scss" scoped>
+.shadowDiv {
+ position: fixed;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ background-color: rgba(96, 96, 96, 0.5);
+ z-index: 998;
+}
+.scoreTask {
+ position: fixed;
+ width: 60%;
+ top: 10%;
+ left: 20%;
+ background-color: white;
+ z-index: 5000;
+}
+
+.scoreTask2 {
+ position: fixed;
+ width: 30%;
+ left: 35%;
+ background-color: white;
+ z-index: 5000;
+}
+
+.iconPos {
+ position: absolute;
+ right: 10px;
+ top: 10px;
+ font-size: 14px;
+ z-index: 1001;
+}
+
+.carouselDiv {
+ display: flex;
+ flex-wrap: nowrap;
+ flex-direction: column;
+ justify-content: space-between;
+ height: 100%;
+}
+
+.carouselbottom {
+ position: absolute;
+ bottom: 30px;
+ display: flex;
+ justify-content: center;
+ width: 80%;
+ margin-left: 10%;
+}
+
+.carouselTop {
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+ width: 80%;
+ margin-left: 10%;
+ position: absolute;
+ top: 0;
+ height: 50px;
+
+ p {
+ line-height: 50px;
+ font-size: 14px;
+ }
+
+ .submit {
+ width: 60px;
+ height: 30px;
+ margin-top: 10px;
+ }
+}
+
+.carouselLeft {
+ position: absolute;
+ top: 50px;
+ bottom: 0px;
+ width: 20%;
+ left: 0;
+ p {
+ width: 100%;
+ height: 50px;
+ line-height: 50px;
+ position: absolute;
+ top: 50%;
+ margin-top: -50px;
+ cursor: pointer;
+ }
+}
+
+.carouselRight {
+ position: absolute;
+ top: 50px;
+ bottom: 0px;
+ width: 20%;
+ right: 0;
+ p {
+ width: 100%;
+ height: 50px;
+ line-height: 50px;
+ position: absolute;
+ top: 50%;
+ margin-top: -50px;
+ cursor: pointer;
+ }
+}
+
+.carouselMid {
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: center;
+ position: absolute;
+ top: 50%;
+ margin-top: -30px;
+ width: 60%;
+ margin-left: 20%;
+
+ .carouselMidHover:hover {
+ color: #409eff;
+ margin-top: -3px;
+ cursor: pointer;
+ }
+}
+
+/deep/ .el-dialog__wrapper {
+ z-index: 6000 !important;
+}
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/components/suppressionCoverage.vue b/bigScreen/src/views/components/suppressionCoverage.vue
new file mode 100644
index 0000000..3f5d30a
--- /dev/null
+++ b/bigScreen/src/views/components/suppressionCoverage.vue
@@ -0,0 +1,221 @@
+<template>
+ <div
+ style="width: 96%; margin-left: 2%"
+ v-loading="loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ element-loading-text="姝e湪鍔犺浇鏁版嵁"
+ element-loading-spinner="el-icon-loading"
+ >
+ <div
+ ref="chart"
+ :style="{ width:'100%', height: chartHeight + 'px' }"
+ ></div>
+ </div>
+</template>
+<script>
+export default {
+ watch: {
+ frequencyValue: {
+ handler(n, o) {
+ this.getInfo();
+ },
+ deep: true,
+ immediate: true,
+ },
+ timeValue: {
+ handler(n, o) {
+ this.getInfo();
+ },
+ deep: true,
+ immediate: true,
+ },
+ switchValue: {
+ handler(n, o) {
+ this.getInfo();
+ },
+ deep: true,
+ immediate: true,
+ },
+ },
+ props: {
+ frequencyValue: {
+ type: Number,
+ default: 1557,
+ },
+ timeValue: {
+ type: String,
+ default: "2021-06-30 17:00",
+ },
+ switchValue: {
+ type: Number,
+ default: 1,
+ },
+ },
+ data() {
+ return {
+ loading: true,
+ chartWidth: document.body.clientWidth * 0.25 * 0.96, // 瀹�
+ chartHeight: (document.body.clientHeight - 85) * 0.3 - 30, // 楂�
+ xAxisData: [
+ "0h",
+ "1h",
+ "2h",
+ "3h",
+ "4h",
+ "5h",
+ "6h",
+ "7h",
+ "8h",
+ "9h",
+ "10h",
+ "11h",
+ "12h",
+ "13h",
+ "14h",
+ ],
+ seriesData: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ };
+ },
+ mounted() {
+ this.getInfo();
+ },
+ methods: {
+ getInfo() {
+ this.loading = true;
+ let param = new URLSearchParams();
+
+ if (this.switchValue == 1) {
+ param.append("bid", "getFreqSuppress");
+ }
+ if (this.switchValue == 0) {
+ param.append("bid", "getFreqSuppress_auto");
+ }
+
+ param.append("frequencystr", this.frequencyValue);
+ param.append("pressMode", this.switchValue);
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData/",
+ param
+ ).then((res) => {
+ if (res.code == "20000") {
+ let sourceData = res.data.data;
+ this.xAxisData = [];
+ this.seriesData = [];
+ for (let i = 0; i < 15; i++) {
+ this.xAxisData.push(sourceData[i].whour + "h");
+ this.seriesData.push(
+ sourceData[i].coverrate.substring(
+ 0,
+ sourceData[i].coverrate.length - 1
+ )
+ );
+ }
+ this.getEchartData();
+ }
+ });
+ },
+ getEchartData() {
+ const chart = this.$refs.chart;
+ if (chart) {
+ const myChart = this.$echarts.init(chart);
+ let option = {
+ tooltip: {
+ position: "top",
+ },
+ legend: {
+ itemHeight: 7,
+ right: "30px",
+ top: "0px",
+ data: [String(this.frequencyValue)],
+ textStyle:{
+ color:"#FFFFFF",
+ fontSize:10
+ }
+ },
+ grid: {
+ top: "20px",
+
+ left: "45px",
+
+ right: "20px",
+
+ bottom: "40px",
+
+ backgroundColor: "#fff",
+ },
+ xAxis: {
+ type: "category",
+ data: this.xAxisData,
+ axisLabel: {
+ interval: 0,
+ rotate: 0,
+ color: "#FFFFFF",
+ fontSize: 10,
+ },
+ },
+ yAxis: {
+ type: "value",
+ min: 0,
+ max: 100,
+ axisLabel: {
+ formatter: function (value) {
+ var texts = [];
+ if (value == 0) {
+ texts.push("0%");
+ } else if (value <= 10) {
+ texts.push("10%");
+ } else if (value <= 20) {
+ texts.push("20%");
+ } else if (value <= 40) {
+ texts.push("40%");
+ } else if (value <= 50) {
+ texts.push("50%");
+ } else if (value <= 60) {
+ texts.push("60%");
+ } else if (value <= 70) {
+ texts.push("70%");
+ } else if (value <= 80) {
+ texts.push("80%");
+ } else if (value <= 90) {
+ texts.push("90%");
+ } else {
+ texts.push("100%");
+ }
+ return texts;
+ },
+ interval: 0,
+ rotate: 0,
+ color: "#FFFFFF",
+ fontSize: 10,
+ },
+
+ splitLine: {
+ show: true,
+ lineStyle: {
+ color: "rgba(255,225,255,0.5)",
+ width: 1,
+ type: "solid",
+ },
+ },
+ },
+ series: [
+ {
+ name: String(this.frequencyValue),
+ data: this.seriesData,
+ type: "line",
+ color: "#5A82FC",
+ },
+ ],
+ };
+ myChart.setOption(option);
+ window.addEventListener("resize", function () {
+ myChart.resize();
+ });
+ this.loading = false;
+ }
+ },
+ },
+};
+</script>
+<style lang="scss" scoped>
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/components/suppressionEffect.vue b/bigScreen/src/views/components/suppressionEffect.vue
new file mode 100644
index 0000000..443e30e
--- /dev/null
+++ b/bigScreen/src/views/components/suppressionEffect.vue
@@ -0,0 +1,236 @@
+<template>
+ <div
+ style="width:100%"
+ v-loading="loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ element-loading-text="姝e湪鍔犺浇鏁版嵁"
+ element-loading-spinner="el-icon-loading"
+ >
+ <div
+ id="chart"
+ ref="chart"
+ :style="{ width:'100%', height: chartHeight + 'px' }"
+ ></div>
+ </div>
+</template>
+<script>
+export default {
+ watch: {
+ frequencyValue: {
+ handler(n, o) {
+ this.getInfo();
+ },
+ deep: true,
+ immediate: true,
+ },
+ timeValue: {
+ handler(n, o) {
+ this.getInfo();
+ },
+ deep: true,
+ immediate: true,
+ },
+ switchValue: {
+ handler(n, o) {
+ this.getInfo();
+ },
+ deep: true,
+ immediate: true,
+ },
+ },
+ props: {
+ frequencyValue: {
+ type: Number,
+ default: 1557,
+ },
+ timeValue: {
+ type: String,
+ default: "2021-06-30 17:00",
+ },
+ switchValue: {
+ type: Number,
+ default: 1,
+ },
+ },
+ data() {
+ return {
+ loading: true,
+ chartWidth: document.body.clientWidth * 0.25 * 0.96, // 瀹�
+ chartHeight: (document.body.clientHeight - 85) * 0.3 - 30, // 楂�
+ xAxisData: [
+ "鏃犳暟鎹�",
+ "鏃犳暟鎹�",
+ "鏃犳暟鎹�",
+ "鏃犳暟鎹�",
+ "鏃犳暟鎹�",
+ "鏃犳暟鎹�",
+ "鏃犳暟鎹�",
+ ],
+ seriesData: [0, 0, 0, 0, 0, 0, 0],
+ autopressvalue: [1, 2, 3, 4, 5, 4, 3, 2, 1],
+ };
+ },
+ mounted() {
+ this.getInfo();
+ },
+ methods: {
+ getInfo() {
+ this.loading = true;
+ let param = new URLSearchParams();
+
+ if (this.switchValue == 1) {
+ param.append("bid", "getFreqParams");
+ }
+ if (this.switchValue == 0) {
+ param.append("bid", "getFreqParams_auto");
+ }
+
+ param.append("wdate", this.timeValue.split(" ")[0]);
+ param.append("whour", this.timeValue.split(" ")[1].split(":")[0]);
+ param.append("frequencystr", this.frequencyValue);
+ param.append("pressMode", this.switchValue);
+
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ if (res.code == "20000") {
+ let sourceData = res.data.data[0];
+ this.xAxisData = [];
+ this.seriesData = [];
+ this.autopressvalue = [];
+ sourceData.forEach((item) => {
+ this.xAxisData.push(
+ item.monitorpointName.replace(/[^\u4e00-\u9fa5]/gi, "")
+ );
+ this.seriesData.push(item.paramvalue);
+ if (item.autopressvalue) {
+ this.autopressvalue.push(item.autopressvalue);
+ } else {
+ this.autopressvalue.push(0);
+ }
+ });
+
+ this.getEchartData();
+ }
+ });
+ },
+ getEchartData() {
+ const myChart = this.$echarts.init(document.getElementById("chart"));
+ const option = {
+ legend: {
+ itemHeight: 7,
+ right: "30px",
+ top: "0px",
+ textStyle: {
+ color: "#FFFFFF",
+ fontSize: 10,
+ },
+ data: ["浜哄伐璇勫垎", "鑷姩璇勫垎"],
+ },
+ grid: {
+ top: "20px",
+
+ left: "35px",
+
+ right: "20px",
+
+ bottom: "80px",
+
+ backgroundColor: "#fff",
+ },
+ tooltip: {
+ trigger: "axis",
+ axisPointer: {
+ // 鍧愭爣杞存寚绀哄櫒锛屽潗鏍囪酱瑙﹀彂鏈夋晥
+ type: "shadow", // 榛樿涓虹洿绾匡紝鍙�変负锛�'line' | 'shadow'
+ },
+ },
+ xAxis: {
+ type: "category",
+ data: this.xAxisData,
+ axisLabel: {
+ interval: 0,
+ rotate: 0,
+ color: "#FFFFFF",
+ fontSize: 10,
+ formatter: function (value) {
+ let arr = value.split("");
+ let str = "";
+ arr.forEach((item, index) => {
+ if (index % 2 == 0) {
+ str += item;
+ } else {
+ str += item + "\n";
+ }
+ });
+ return value.split("").join("\n");
+ },
+ },
+ },
+ yAxis: {
+ type: "value",
+ axisLabel: {
+ interval: 0,
+ rotate: 0,
+ color: "#FFFFFF",
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ color: "rgba(255,225,255,0.5)",
+ width: 1,
+ type: "solid",
+ },
+ },
+ axisLabel: {
+ interval: 0,
+ rotate: 0,
+ color: "#FFFFFF",
+ fontSize: 10,
+ },
+ },
+ series: [
+ {
+ name: "浜哄伐璇勫垎",
+ data: this.seriesData,
+ type: "bar",
+ itemStyle: {
+ //鏌卞舰鍥惧渾瑙掞紝榧犳爣绉讳笂鍘绘晥鏋滐紝濡傛灉鍙槸涓�涓暟瀛楀垯璇存槑鍥涗釜鍙傛暟鍏ㄩ儴璁剧疆涓洪偅涔堝
+ normal: {
+ //鏌卞舰鍥惧渾瑙掞紝鍒濆鍖栨晥鏋�
+ barBorderRadius: [10, 10, 0, 0],
+ },
+ },
+ barWidth: 10,
+ color: "#5A82FC",
+ },
+ {
+ name: "鑷姩璇勫垎",
+ data: this.autopressvalue,
+ type: "bar",
+ itemStyle: {
+ //鏌卞舰鍥惧渾瑙掞紝榧犳爣绉讳笂鍘绘晥鏋滐紝濡傛灉鍙槸涓�涓暟瀛楀垯璇存槑鍥涗釜鍙傛暟鍏ㄩ儴璁剧疆涓洪偅涔堝
+ normal: {
+ //鏌卞舰鍥惧渾瑙掞紝鍒濆鍖栨晥鏋�
+ barBorderRadius: [10, 10, 0, 0],
+ },
+ },
+ barWidth: 10,
+ color: "#4dd6b6",
+ },
+ ],
+ };
+ myChart.setOption(option);
+ window.addEventListener("resize", function () {
+ myChart.resize();
+ });
+ this.loading = false;
+
+ // }
+ },
+ },
+};
+</script>
+<style lang="scss" scoped>
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/components/topBlock.vue b/bigScreen/src/views/components/topBlock.vue
new file mode 100644
index 0000000..9bef065
--- /dev/null
+++ b/bigScreen/src/views/components/topBlock.vue
@@ -0,0 +1,444 @@
+<template>
+ <div>
+ <div class="block frequencyBlock">
+ <p style="color: rgba(77, 214, 182, 1)">棰戠巼</p>
+ <el-slider
+ v-model="frequencyValue"
+ :min="frequencyMin"
+ :max="frequencyMax"
+ :marks="frequencyMarks"
+ :format-tooltip="frequencyFormatTooltip"
+ :show-tooltip="true"
+ :step="9"
+ ref="slider1"
+ style="width: 100%; margin-left: 20px"
+ :key="key"
+ >
+ </el-slider>
+ <div class="labelShow">123</div>
+ <el-switch
+ v-model="switchValue"
+ active-text="浜哄伐"
+ inactive-text="鑷姩"
+ style="width: 180px"
+ active-color="#4DD6B6"
+ >
+ </el-switch>
+ </div>
+
+ <div class="block timeBlock" style="padding-bottom: 25px">
+ <p style="color: rgba(77, 214, 182, 1)">鏃堕棿</p>
+
+ <el-slider
+ v-model="timeValue"
+ :min="timeMin"
+ :max="timeMax"
+ :marks="marks"
+ :format-tooltip="formatTooltip"
+ :show-tooltip="true"
+ style="width: 100%; margin-left: 20px"
+ ref="slider2"
+ @change="changeTimeWay"
+ >
+ </el-slider>
+
+ <el-tooltip class="item" effect="dark" content="鑷姩鎾斁" placement="top">
+ <i
+ class="el-icon-video-play"
+ style="margin-left: 20px; cursor: pointer"
+ v-if="!playState"
+ @click="startPlay"
+ ></i>
+ </el-tooltip>
+ <el-tooltip class="item" effect="dark" content="鏆傚仠鎾斁" placement="top">
+ <i
+ class="el-icon-video-pause"
+ style="margin-left: 20px; cursor: pointer"
+ v-if="playState"
+ @click="stopPlay"
+ ></i>
+ </el-tooltip>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鍒囨崲绛夐珮绾�"
+ placement="top"
+ >
+ <i
+ class="el-icon-refresh"
+ style="margin-left: 20px; cursor: pointer"
+ @click="changeMap"
+ ></i>
+ </el-tooltip>
+ <el-tooltip class="item" effect="dark" content="璁剧疆鑹插��" placement="top">
+ <i
+ class="el-icon-s-tools"
+ style="margin-left: 20px; cursor: pointer"
+ @click="setColor"
+ ></i>
+ </el-tooltip>
+ </div>
+ </div>
+</template>
+<script>
+export default {
+ watch: {
+ frequencyValue: {
+ handler(n, o) {
+ if (this.timer2) {
+ clearTimeout(this.timer2);
+ }
+ this.timer2 = setTimeout(() => {
+ this.getInfo();
+ this.$emit("changeFrequency", this.frequencyValue);
+ }, 1000);
+ },
+ deep: true,
+ immediate: true,
+ },
+ timeValue: {
+ handler(n, o) {
+ if (this.timer1) {
+ clearTimeout(this.timer1);
+ }
+ this.timer1 = setTimeout(() => {
+ this.getInfo();
+ if (this.marksData[this.timeValue]) {
+ this.$emit("changeTimeValue", this.marksData[this.timeValue]);
+ } else {
+ this.$emit("changeTimeValue", this.getCurrentTime());
+ }
+ }, 1000);
+ },
+ deep: true,
+ immediate: true,
+ },
+ switchValue: {
+ handler(n, o) {
+ if (this.switchValue) {
+ this.$emit("changeSwitchValue", 1);
+ } else {
+ this.$emit("changeSwitchValue", 0);
+ }
+ this.getInfo();
+ },
+ deep: true,
+ immediate: true,
+ },
+ leftSelFre: {
+ handler(n, o) {
+ this.frequencyValue = Number(
+ JSON.parse(JSON.stringify(this.leftSelFre))
+ );
+ this.key = !this.key;
+ },
+ },
+ },
+ computed: {
+ timeMarks() {
+ let marks = {};
+ for (let i = 0; i <= 24; i++) {
+ marks[i] = {
+ style: {
+ color: "rgba(77, 214, 182, 1)",
+ },
+ label: i + "h",
+ };
+ }
+ return marks;
+ },
+ },
+ props: ["leftSelFre"],
+ data() {
+ return {
+ key: false,
+ timer1: null,
+ timer2: null,
+ switchValue: true,
+ playState: false,
+ timeInterval: null,
+ artificialChecked: false,
+ timeValue: 0,
+ timeMin: 0,
+ timeMax: 24,
+ marks: {},
+ marksData: [],
+
+ frequencyMin: 522,
+ frequencyMax: 1620,
+ frequencyValue: 1557,
+ frequencyMarks: {
+ 540: {
+ style: {
+ color: "rgba(77, 214, 182, 1)",
+ },
+ label: "540MHZ",
+ },
+ 1600: {
+ style: {
+ color: "rgba(77, 214, 182, 1)",
+ },
+ label: "1600MHZ",
+ },
+ },
+ };
+ },
+ mounted() {
+
+ this.$nextTick(() => {
+ this.$refs.slider1.setPosition(((1557 - 522) / 1098) * 100);
+ this.$refs.slider2.setPosition(0);
+ });
+ this.getInfoInit();
+ this.timeValue = this.timeMax;
+ },
+ methods: {
+ setColor() {
+ this.$emit("showColorBlock");
+ },
+ changeTimeWay() {},
+ getCurrentTime() {
+ //鑾峰彇褰撳墠鏃堕棿骞舵墦鍗�
+ let yy = new Date().getFullYear();
+ let mm = new Date().getMonth() + 1;
+ let dd = new Date().getDate();
+ let hh = new Date().getHours();
+ let mf =
+ new Date().getMinutes() < 10
+ ? "0" + new Date().getMinutes()
+ : new Date().getMinutes();
+ let ss =
+ new Date().getSeconds() < 10
+ ? "0" + new Date().getSeconds()
+ : new Date().getSeconds();
+ let gettime = yy + "-" + mm + "-" + dd + " " + hh + ":00";
+ return gettime;
+ },
+ changeMap() {
+ this.$emit("changeMap");
+ },
+ frequencyFormatTooltip(val) {
+ return val + "MHz";
+ },
+ formatTooltip(val) {
+ return this.marksData[val];
+ },
+ getInfo() {
+ let param = new URLSearchParams();
+
+ if (this.switchValue) {
+ param.append("bid", "getTimeline");
+ } else {
+ param.append("bid", "getTimeline_auto");
+ }
+
+ param.append("frequencystr", this.frequencyValue);
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ if (res.code == "20000") {
+ let sourceData = res.data.data[0];
+ this.marks = {};
+ let marksData = [];
+ this.timeMax = sourceData.length - 1;
+ sourceData.forEach((item, index) => {
+ // console.log(item.wdate.split("T")[0].split(" ")[0])
+ marksData.push(
+ item.wdate.split("T")[0].split(" ")[0] + " " + item.whour + ":00"
+ );
+ });
+ this.marks = {
+ 0: {
+ style: {
+ color: "rgba(77, 214, 182, 1)",
+ },
+ label: marksData[0],
+ },
+ [marksData.length - 1]: {
+ style: {
+ color: "rgba(77, 214, 182, 1)",
+ whiteSpace: "nowrap",
+ overflow: "hidden",
+ textOverflow: "ellipsis",
+ },
+ label: marksData[marksData.length - 1],
+ },
+ };
+ this.marksData = marksData;
+ }
+ });
+ },
+ getInfoInit() {
+ let param = new URLSearchParams();
+
+ if (this.switchValue) {
+ param.append("bid", "getTimeline");
+ } else {
+ param.append("bid", "getTimeline_auto");
+ }
+
+ param.append("frequencystr", this.frequencyValue);
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ if (res.code == "20000") {
+ let sourceData = res.data.data[0];
+ this.marks = {};
+ let marksData = [];
+ this.timeMax = sourceData.length - 1;
+ this.timeValue = this.timeMax;
+ sourceData.forEach((item, index) => {
+ marksData.push(
+ item.wdate.split("T")[0].split(" ")[0] + " " + item.whour + ":00"
+ );
+ });
+ this.marks = {
+ 0: {
+ style: {
+ color: "rgba(77, 214, 182, 1)",
+ },
+ label: marksData[0],
+ },
+ [marksData.length - 1]: {
+ style: {
+ color: "rgba(77, 214, 182, 1)",
+ whiteSpace: "nowrap",
+ overflow: "hidden",
+ textOverflow: "ellipsis",
+ },
+ label: marksData[marksData.length - 1],
+ },
+ };
+ this.marksData = marksData;
+ }
+ });
+ },
+ startPlay() {
+ if (this.timeValue == this.timeMax) {
+ this.timeValue = 0;
+ }
+ this.playState = true;
+ this.startInterval();
+ },
+ stopPlay() {
+ this.playState = false;
+ this.dropInterval();
+ },
+ changeSlider() {
+ let start = new Date(this.dataPick[0]);
+ let end = new Date(this.dataPick[1]);
+ },
+ startInterval() {
+ this.playState = true;
+
+ this.timeInterval = setInterval(() => {
+ if (this.timeValue == this.timeMax) {
+ this.dropInterval();
+ } else {
+ this.timeValue = this.timeValue + 1;
+ }
+ }, 10000);
+ },
+ dropInterval() {
+ clearInterval(this.timeInterval);
+ this.playState = false;
+ this.timeInterval = null;
+ },
+ },
+
+ beforeDestroy() {
+ this.dropInterval();
+ clearTimeout(this.timer1);
+ clearTimeout(this.timer2);
+ },
+};
+</script>
+<style lang="scss" scoped>
+
+/deep/ .el-switch__label span {
+ color: #ffffff;
+}
+
+/deep/ .is-active span {
+ color: #4dd6b6 !important;
+}
+
+/deep/ .el-switch {
+ height: 30px;
+ line-height: 30px;
+ text-align: right !important;
+ display: block;
+}
+
+/deep/ .el-range-editor.el-input__inner {
+ background-color: rgba(77, 214, 182, 1);
+}
+
+/deep/ .el-date-editor .el-range__icon {
+ color: black;
+}
+
+/deep/ .el-range-editor .el-range-input {
+ background-color: rgba(77, 214, 182, 1);
+ color: black;
+}
+
+/deep/ .frequencyBlock .el-slider__marks-text {
+ margin-top: -25px !important;
+}
+
+/deep/ .timeBlock .el-slider__marks-text {
+}
+
+/deep/ .el-checkbox__input.is-checked + .el-checkbox__label {
+ color: rgba(77, 214, 182, 1) !important;
+}
+
+/deep/ .el-checkbox__inner {
+ background-color: rgba(77, 214, 182, 0.6) !important;
+ border-color: rgba(77, 214, 182, 1) !important;
+}
+
+/deep/ .el-slider__bar {
+ background-color: rgba(77, 214, 182, 1) !important;
+}
+
+/deep/ .el-slider__stop {
+ background-color: transparent !important;
+}
+
+.block {
+ width: 96%;
+ margin-left: 2%;
+ display: flex;
+ justify-content: space-between;
+ z-index: 109;
+ padding-top: 25px;
+
+ i {
+ white-space: nowrap;
+ line-height: 38px;
+ font-size: 14px;
+ color: rgba(77, 214, 182, 1);
+ }
+
+ p {
+ white-space: nowrap;
+ line-height: 38px;
+ font-size: 14px;
+ }
+}
+
+.labelShow {
+ position: absolute;
+ border-radius: 4px;
+ padding: 10px;
+ z-index: 2000;
+ font-size: 12px;
+ line-height: 1.2;
+ min-width: 10px;
+ word-wrap: break-word;
+}
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/components/validCode.vue b/bigScreen/src/views/components/validCode.vue
new file mode 100644
index 0000000..415c692
--- /dev/null
+++ b/bigScreen/src/views/components/validCode.vue
@@ -0,0 +1,187 @@
+// 绗簩绉嶆柟娉� canvas 缁樺埗骞叉壈鐐瑰共鎵扮嚎
+<template>
+ <div class="s-canvas" @click="createdCode">
+ <canvas
+ id="s-canvas"
+ :width="contentWidth"
+ :height="contentHeight"
+ ></canvas>
+ </div>
+</template>
+<script>
+import Vue from "vue";
+export default Vue.extend({
+ props: {
+ fontSizeMin: {
+ type: Number,
+ default: 25,
+ },
+ fontSizeMax: {
+ type: Number,
+ default: 30,
+ },
+ backgroundColorMin: {
+ type: Number,
+ default: 255,
+ },
+ backgroundColorMax: {
+ type: Number,
+ default: 255,
+ },
+ colorMin: {
+ type: Number,
+ default: 0,
+ },
+ colorMax: {
+ type: Number,
+ default: 160,
+ },
+ lineColorMin: {
+ type: Number,
+ default: 100,
+ },
+ lineColorMax: {
+ type: Number,
+ default: 255,
+ },
+ dotColorMin: {
+ type: Number,
+ default: 0,
+ },
+ dotColorMax: {
+ type: Number,
+ default: 255,
+ },
+ contentWidth: {
+ type: Number,
+ default: 120,
+ },
+ contentHeight: {
+ type: Number,
+ default: 34,
+ },
+ },
+ watch: {
+ identifyCode: {
+ handler(n, o) {
+ this.$emit("changeIdent",this.identifyCode)
+ },
+ },
+ },
+ data() {
+ return {
+ identifyCode: "",
+ };
+ },
+ mounted() {
+ this.createdCode();
+ },
+ methods: {
+ // 鐢熸垚4涓殢鏈烘暟
+ createdCode() {
+ const len = 4;
+ const codeList = [];
+ const chars = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz0123456789";
+ const charsLen = chars.length;
+ for (let i = 0; i < len; i++) {
+ codeList.push(chars.charAt(Math.floor(Math.random() * charsLen)));
+ }
+ this.identifyCode = codeList.join("");
+ this.$emit("getIdentifyCode", this.identifyCode.toLowerCase());
+ this.drawPic();
+ },
+
+ // 鐢熸垚涓�涓殢鏈烘暟
+ randomNum(min, max) {
+ return Math.floor(Math.random() * (max - min) + min);
+ },
+ // 鐢熸垚涓�涓殢鏈虹殑棰滆壊
+ randomColor(min, max) {
+ const r = this.randomNum(min, max);
+ const g = this.randomNum(min, max);
+ const b = this.randomNum(min, max);
+ return "rgb(" + r + "," + g + "," + b + ")";
+ },
+
+ drawPic() {
+ const canvas = document.getElementById("s-canvas");
+ const ctx = canvas.getContext("2d");
+ ctx.textBaseline = "bottom";
+ // 缁樺埗鑳屾櫙
+ ctx.fillStyle = this.randomColor(
+ this.backgroundColorMin,
+ this.backgroundColorMax
+ );
+ ctx.fillRect(0, 0, this.contentWidth, this.contentHeight);
+ // 缁樺埗鏂囧瓧
+ for (let i = 0; i < this.identifyCode.length; i++) {
+ this.drawText(ctx, this.identifyCode[i], i);
+ }
+ this.drawLine(ctx);
+ this.drawDot(ctx);
+ },
+
+ drawText(ctx, txt, i) {
+ ctx.fillStyle = this.randomColor(this.colorMin, this.colorMax);
+ ctx.font =
+ this.randomNum(this.fontSizeMin, this.fontSizeMax) + "px SimHei";
+ const x = (i + 1) * (this.contentWidth / (this.identifyCode.length + 1));
+ const y = this.randomNum(this.fontSizeMax, this.contentHeight - 5);
+ var deg = this.randomNum(-45, 45);
+ // 淇敼鍧愭爣鍘熺偣鍜屾棆杞搴�
+ ctx.translate(x, y);
+ ctx.rotate((deg * Math.PI) / 180);
+ ctx.fillText(txt, 0, 0);
+ // 鎭㈠鍧愭爣鍘熺偣鍜屾棆杞搴�
+ ctx.rotate((-deg * Math.PI) / 180);
+ ctx.translate(-x, -y);
+ },
+
+ // 缁樺埗骞叉壈绾�
+ drawLine(ctx) {
+ for (let i = 0; i < 5; i++) {
+ ctx.strokeStyle = this.randomColor(
+ this.lineColorMin,
+ this.lineColorMax
+ );
+ ctx.beginPath();
+ ctx.moveTo(
+ this.randomNum(0, this.contentWidth),
+ this.randomNum(0, this.contentHeight)
+ );
+ ctx.lineTo(
+ this.randomNum(0, this.contentWidth),
+ this.randomNum(0, this.contentHeight)
+ );
+ ctx.stroke();
+ }
+ },
+
+ // 缁樺埗骞叉壈鐐�
+ drawDot(ctx) {
+ for (let i = 0; i < 80; i++) {
+ ctx.fillStyle = this.randomColor(0, 255);
+ ctx.beginPath();
+ ctx.arc(
+ this.randomNum(0, this.contentWidth),
+ this.randomNum(0, this.contentHeight),
+ 1,
+ 0,
+ 2 * Math.PI
+ );
+ ctx.fill();
+ }
+ },
+ },
+});
+</script>
+<style scoped>
+.s-canvas {
+ height: 38px;
+ cursor: pointer;
+}
+.s-canvas canvas {
+ margin-top: 1px;
+ margin-left: 8px;
+}
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/homePage.vue b/bigScreen/src/views/homePage.vue
new file mode 100644
index 0000000..6ce8666
--- /dev/null
+++ b/bigScreen/src/views/homePage.vue
@@ -0,0 +1,1557 @@
+<template>
+ <div
+ v-loading="loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ :element-loading-text="alertInfo"
+ element-loading-spinner="el-icon-loading"
+ >
+ <div
+ id="img"
+ style="
+ display: none;
+ width: 200px;
+ height: 450px;
+ position: absolute;
+ top: 8px;
+ left: 216px;
+ "
+ ></div>
+
+ <div class="title">
+ <p class="whether">
+ <span
+ >{{ whetherInfo.reporttime.split(" ")[0] }}
+ {{ whetherInfo.reporttime.split(" ")[1].split(":")[0] + ":00" }}
+ 澶╂皵:{{ whetherInfo.weather }} 姘旀俯:{{
+ whetherInfo.temperature
+ }}</span
+ >
+ <br /><span>
+ 婀垮害:{{ whetherInfo.humidity }} 椋庡悜:{{
+ whetherInfo.winddirection
+ }}
+ 椋庡姏:{{ whetherInfo.windpower }}</span
+ >
+
+ <!-- 鏃ユ湡+ 灏忔椂 澶╂皵 姘旀俯 婀垮害 椋庡悜 椋庡姏 -->
+ </p>
+ <p class="titleText">涓婃捣甯備腑娉㈠箍鎾洃娴嬪钩鍙�</p>
+ <p class="tagDiv">
+ <el-radio-group v-model="radioValue" size="mini">
+ <el-radio-button label="0">鐩戞祴璇勪及</el-radio-button>
+ <el-radio-button label="1">瑕嗙洊璇勪及</el-radio-button>
+ </el-radio-group>
+ <svg-icon
+ class="svgIcon"
+ icon-class="task"
+ style="margin-left: 20px"
+ @click="showSocket()"
+ ></svg-icon>
+ </p>
+ </div>
+ <transition name="topMove" enter-class="topMoveStart">
+ <div class="topBlock" v-if="topDrawState">
+ <div class="topBlockMain">
+ <topBlock
+ @changeFrequency="changeFrequency"
+ @changeTimeValue="changeTimeValue"
+ @changeSwitchValue="changeSwitchValue"
+ @changeMap="changeMap"
+ @showColorBlock="showColorBlock"
+ :leftSelFre="leftSelFre"
+ ></topBlock>
+ </div>
+ <div class="topButton" @click="hideTop" v-if="!topDrawState">
+ <i class="el-icon-caret-top"></i>
+ </div>
+ </div>
+ </transition>
+ <div class="hideTopButton" @click="showTop" v-if="!topDrawState">
+ <i class="el-icon-caret-bottom"></i>
+ </div>
+
+ <!-- <div v-draw class="drawTip">1231231 12312312</div> -->
+
+ <el-dialog
+ title=""
+ :visible.sync="colorBlockIsShow"
+ width="40%"
+ style="z-index: 8000; over-flow: scroll"
+ >
+ <span slot="title">
+ <div
+ style="
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+ width: 80%;
+ margin-left: 10%;
+ "
+ >
+ <p style="line-height: 28px; font-size: 16px">璁剧疆鑹插��</p>
+ <el-button type="primary" size="mini" @click="addColor"
+ >澧炲姞</el-button
+ >
+ </div>
+ </span>
+ <el-table :data="colors" style="width: 100%" height="400">
+ <el-table-column label="搴忓彿" type="index" width="60">
+ </el-table-column>
+ <el-table-column prop="color" label="棰滆壊">
+ <template slot-scope="scope">
+ <div>
+ <el-color-picker v-model="scope.row.color"></el-color-picker>
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="color" label="鑹插��"></el-table-column>
+ <el-table-column prop="" label="鎿嶄綔">
+ <template slot-scope="scope">
+ <div>
+ <el-button size="mini" type="danger" @click="delColor(scope)"
+ >鍒犻櫎</el-button
+ >
+ </div>
+ </template>
+ </el-table-column>
+ </el-table>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="colorBlockIsShow = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="sureColor">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
+
+ <transition name="pointMove" enter-class="pointMoveStart">
+ <div class="pointBlock" v-if="pointDrawState">
+ <div class="pointBlockMain">
+ <div class="pointBlockContent">
+ <pointInfo
+ ref="pointInfo"
+ :pontInfoData="pontInfoData"
+ @showLogin="showLogin"
+ @showLoading="showLoading"
+ @hideLoading="hideLoading"
+ @startScore="startScore"
+ @showLookBack="showLookBack"
+ @joinRecord="joinRecord"
+ @startPlay="startPlay"
+ @stopPlay="stopPlay"
+ :userid="userid"
+ :username="username"
+ :isLoney="isLoney"
+ ></pointInfo>
+ </div>
+ </div>
+ <div class="pointButton" @click="hidePoint">
+ <i class="el-icon-circle-close"></i>
+ </div>
+ </div>
+ </transition>
+
+ <div style="z-index: 98">
+ <bigScreenMap
+ @showInfo="showInfo"
+ @changeNowType="changeNowType"
+ :switchValue="switchValue"
+ :frequencyValue="frequencyValue"
+ :timeValue="timeValue"
+ :isChage="isChage"
+ ref="bigScreenMap"
+ :jumpPointId="jumpPointId"
+ :changeAssessValue="changeAssessValue"
+ ></bigScreenMap>
+ </div>
+
+ <transition name="leftMove" enter-class="leftMoveStart">
+ <div class="leftBlock" v-if="leftDrawState">
+ <leftBlock
+ class="leftBlockMain"
+ :switchValue="switchValue"
+ :frequencyValue="frequencyValue"
+ :timeValue="timeValue"
+ :radioValue="radioValue"
+ @selFre="selFre"
+ ></leftBlock>
+ <div class="leftButton" @click="hideLeft">
+ <i class="el-icon-caret-left"></i>
+ </div>
+ </div>
+ </transition>
+ <div class="hideLeftButton" @click="showLeft" v-if="!leftDrawState">
+ <i class="el-icon-caret-right"></i>
+ </div>
+
+ <transition name="rightMove" enter-class="rightMoveStart">
+ <div class="rightBlock" v-if="rightDrawState">
+ <rightBlock
+ class="rightBlockMain"
+ :switchValue="switchValue"
+ :frequencyValue="frequencyValue"
+ :timeValue="timeValue"
+ :radioValue="radioValue"
+ :leftSelFre="leftSelFre"
+ :userid="userid"
+ @showLoading="showLoading"
+ @hideLoading="hideLoading"
+ @assessUpdate="assessUpdate"
+ @jumpPoint="jumpPoint"
+ @changeAssess="changeAssess"
+ @playVideoRight="playVideoRight"
+ @startPlay="startPlay"
+ @stopPlay="stopPlay"
+ ></rightBlock>
+ <div class="rightButton" @click="hideRight">
+ <i class="el-icon-caret-right"></i>
+ </div>
+ </div>
+ </transition>
+
+ <div class="hideRightButton" @click="showRight" v-if="!rightDrawState">
+ <i class="el-icon-caret-left"></i>
+ </div>
+
+ <div>
+ <el-dialog title="鎻愮ず" :visible.sync="loginDialogVisible" width="50%">
+ <el-form
+ :model="loginForm"
+ :rules="loginFormRule"
+ ref="loginForm"
+ label-width="80px"
+ >
+ <el-form-item label="鐢ㄦ埛鍚�" prop="username">
+ <el-input v-model="loginForm.username"></el-input>
+ </el-form-item>
+ <el-form-item label="瀵嗙爜" prop="password">
+ <el-input v-model="loginForm.password" type="password"></el-input>
+ </el-form-item>
+ <el-form-item label="楠岃瘉鐮�" prop="identifyCode">
+ <div style="display: flex">
+ <el-input v-model="loginForm.identifyCode"></el-input>
+
+ <valid-code @changeIdent="changeIdent"></valid-code>
+ </div>
+ </el-form-item>
+
+ <el-form-item>
+ <el-button type="primary" @click="submitForm('loginForm')"
+ >纭畾</el-button
+ >
+ <el-button @click="loginDialogVisible = false">鍙栨秷</el-button>
+ </el-form-item>
+ </el-form>
+ </el-dialog>
+ </div>
+
+ <el-dialog title="璇疯瘎鍒�" :visible.sync="scoreOperationDialog">
+ <div class="scoreOperation">
+ <p>璇勫垎:</p>
+ <el-select
+ v-model="selScoreValue"
+ placeholder="璇烽�夋嫨璇勫垎"
+ style="width: 100%; margin-left: 20px"
+ >
+ <el-option
+ :label="item.level_name"
+ :value="item.id"
+ v-for="item in selScoreArr"
+ :key="item.id"
+ >
+ </el-option>
+ </el-select>
+ </div>
+
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="scoreOperationDialog = false" size="mini"
+ >鍙� 娑�</el-button
+ >
+ <el-button type="primary" @click="sureScore()" size="mini"
+ >纭� 瀹�</el-button
+ >
+ </div>
+ </el-dialog>
+
+ <socketInfo
+ :visible.sync="socketInfoDialog"
+ @closeIsShow="closeIsShow"
+ @showLookBack="showLookBack"
+ :userid="userid"
+ :username="username"
+ :isLoney="isLoney"
+ >
+ </socketInfo>
+
+ <el-dialog :visible.sync="lookBackVisible" @close="closeReplay">
+ <div slot="title" class="lookBackDataTitle">
+ <p>{{ lookBackData.monitorpointName }}</p>
+ <p>{{ lookBackData.status_name }}</p>
+ </div>
+ <div>
+ <div class="lookBackBlock">
+ <span class="demonstration">鍥炴斁鏃堕棿</span>
+ <el-date-picker
+ v-model="selTimeValue"
+ type="datetimerange"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ style="margin-left: 20px"
+ >
+ </el-date-picker>
+ </div>
+ <div class="lookBackBlock" style="margin-top: 30px">
+ <span>璇烽�夋嫨棰戠巼:</span>
+ <el-select
+ v-model="frequencySel"
+ placeholder="璇峰厛濉啓鏃ユ湡"
+ style="margin-left: 20px"
+ >
+ <el-option
+ v-for="(item, index) in frequencyArr"
+ :key="index"
+ :label="item"
+ :value="item"
+ ></el-option>
+ </el-select>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鐐瑰嚮鏀跺惉"
+ placement="top"
+ >
+ <i
+ class="el-icon-video-play"
+ style="margin-left: 20px"
+ @click="replayRecord()"
+ v-show="!isReplay"
+ ></i>
+ </el-tooltip>
+ </div>
+ </div>
+
+ <div style="margin-top: 30px">
+ <video
+ id="testVideo"
+ ref="testVideo"
+ src=""
+ controls
+ preload
+ width="90%"
+ height="300"
+ v-show="isReplay"
+ >
+ qqq
+ </video>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import bigScreenMap from "./components/bigScreenMap";
+import leftBlock from "./components/leftBlock";
+import rightBlock from "./components/rightBlock";
+import topBlock from "./components/topBlock";
+import pointInfo from "./components/pointInfo";
+import socketInfo from "./components/socketInfo";
+import validCode from "./components/validCode";
+import kriging_default_params from "@/utils/kriging_default_params";
+import { Notification } from "element-ui";
+
+export default {
+ components: {
+ bigScreenMap,
+ leftBlock,
+ rightBlock,
+ topBlock,
+ pointInfo,
+ socketInfo,
+ validCode,
+ },
+ filters: {
+ formatSocketTime(time) {
+ if (time) {
+ var year = time.getFullYear();
+ var month = time.getMonth() + 1;
+ var date = time.getDate();
+ var hour = time.getHours();
+ var minute = time.getMinutes();
+ var second = time.getSeconds();
+ return (
+ this.add0(year) +
+ "-" +
+ this.add0(month) +
+ "-" +
+ this.add0(date) +
+ " " +
+ this.add0(hour) +
+ ":" +
+ this.add0(minute) +
+ ":" +
+ this.add0(second)
+ );
+ } else {
+ return 0;
+ }
+ },
+ },
+ sockets: {
+ connect() {
+ this.$socket.emit("connection"); //鐩戝惉connect浜嬩欢
+ },
+ getMsg(data) {
+ console.log(JSON.parse(data));
+ this.$refs.bigScreenMap.changePointState(JSON.parse(data));
+ },
+ },
+ data() {
+ return {
+ nowType: 0,
+ colors: [],
+ colorBlockIsShow: false,
+ identifyCode: null,
+ changeAssessValue: null,
+ isChage: false,
+ leftSelFre: "",
+ radioValue: "0",
+ isReplay: false,
+ lookBackVisible: false,
+ lookBackData: {},
+ selTimeValue: [],
+ frequencySel: "",
+ frequencyArr: [],
+ isLoney: false,
+ userid: "",
+ username: "",
+ rateValue: "",
+ isChange: true,
+ whetherInfo: {
+ city: "",
+ weather: "",
+ reporttime: "",
+ temperature: "",
+ humidity: "",
+ winddirection: "",
+ windpower: "",
+ },
+ loginForm: {
+ username: "",
+ password: "",
+ identifyCode: "",
+ },
+ loginFormRule: {
+ username: [
+ { required: true, message: "璇疯緭鍏ョ敤鎴峰悕", trigger: "blur" },
+ ],
+ password: [{ required: true, message: "璇疯緭鍏ュ瘑鐮�", trigger: "blur" }],
+ identifyCode: [
+ { required: true, message: "璇疯緭鍏ラ獙璇佺爜", trigger: "blur" },
+ ],
+ },
+ scoreFrequency: "",
+ switchValue: 1,
+ leftDrawState: false,
+ rightDrawState: false,
+ topDrawState: true,
+ pointDrawState: false,
+ pontInfoData: null,
+ timeValue: "",
+ frequencyValue: 1557,
+ loginDialogVisible: false,
+ alertInfo: "",
+ loading: false,
+ scoreOperationDialog: false,
+ selScoreValue: "",
+ selScoreArr: [],
+ scoreInfo: {},
+ socketInfoDialog: false,
+ isClose: false,
+ socketArray: [{ frequency: "--", monitorpointName: "--" }],
+ nowTaskId: "",
+ nowPlayId: null,
+ player: null,
+ showIndex: 0,
+ isLogin: false,
+ playVideo: null,
+
+ jumpPointId: null,
+ };
+ },
+ mounted() {
+ let nowUrl = window.parent.document.URL.split("/");
+ if (nowUrl[3] == "ammonitor") {
+ this.isLoney = false;
+ if (localStorage.getItem("user") && localStorage.getItem("_token")) {
+ this.userid = JSON.parse(localStorage.getItem("user")).name;
+ this.username = JSON.parse(localStorage.getItem("_token")).account;
+ this.getColors();
+ } else {
+ window.location.href =
+ window.backstageURL + "ammonitor/#/passport/login";
+ }
+ } else {
+ this.isLoney = true;
+ if (sessionStorage.getItem("userName")) {
+ this.isLogin = true;
+ let userInfo = JSON.parse(sessionStorage.getItem("userName"));
+ this.userid = userInfo.account;
+ this.username = userInfo.username;
+ this.getColors();
+ } else {
+ this.isLogin = false;
+ this.showLogin();
+ }
+ }
+
+ if (this.timeValue) {
+ this.getWhetherInfo();
+ } else {
+ this.timeValue = this.getCurrentTime();
+ }
+ },
+ watch: {
+ selTimeValue: {
+ handler(n, o) {
+ if (this.selTimeValue.length == 2) {
+ this.frequencySel = "";
+ this.getFrequencySel();
+ }
+ },
+ },
+ frequencySel: {
+ handler(n, o) {
+ if (this.frequencySel) {
+ this.isReplay = false;
+ if (this.playVideo) {
+ this.playVideo.pause();
+ this.playVideo = null;
+ }
+ }
+ },
+ },
+
+ timeValue: {
+ handler(n, o) {
+ if (this.timeValue) {
+ this.getWhetherInfo();
+ } else {
+ this.timeValue = this.getCurrentTime();
+ }
+ },
+ deep: true,
+ immediate: true,
+ },
+ },
+ methods: {
+ startPlay(playData) {
+ this.$emit("startPlay", playData);
+ },
+ stopPlay() {
+ this.$emit("stopPlay");
+ },
+ joinRecord(recordData) {
+ this.$emit("joinRecord", recordData);
+ },
+ playVideoRight() {
+ this.$emit("playVideo");
+ },
+ changeNowType(nowType) {
+ this.nowType = nowType;
+ },
+ getColors() {
+ let param = {
+ bid: "getCoverColors",
+ userid: this.userid,
+ };
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ let getColor = JSON.parse(res.data.data[0][0].colors);
+ this.color = [];
+ kriging_default_params.colors = getColor;
+ getColor.forEach((item) => {
+ let one = { color: item };
+ this.colors.push(one);
+ });
+ });
+ },
+ sureColor() {
+ this.colorBlockIsShow = false;
+ let changeColor = [];
+ this.colors.forEach((item) => {
+ changeColor.push(item.color);
+ });
+ kriging_default_params.colors = changeColor;
+
+ let param = {
+ bid: "setCoverColors",
+ userid: this.userid,
+ colors: changeColor,
+ };
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {});
+
+ if (this.nowType == 1) {
+ this.$refs.bigScreenMap.changeColor();
+ }
+ },
+ addColor() {
+ if (this.colors.length > 30) {
+ this.$message.warning("涓暟涓嶈兘澶т簬30涓�");
+ } else {
+ let oneColor = { color: "#FFFFFF" };
+ this.colors.push(oneColor);
+ }
+ },
+ delColor(scope) {
+ this.colors.splice(scope.$index, 1);
+ },
+ showColorBlock() {
+ this.colorBlockIsShow = true;
+ },
+ changeIdent(val) {
+ this.identifyCode = val;
+ },
+ changeAssess(changeAssessValue) {
+ this.changeAssessValue = changeAssessValue;
+ },
+ jumpPoint(pointInfo) {
+ this.jumpPointId = pointInfo.monitorpointId;
+ },
+ add0(val) {
+ return val < 10 ? "0" + val : val;
+ },
+ tryDownLoad() {
+ this.$refs.bigScreenMap.tryDown();
+ },
+ assessUpdate() {
+ this.isChage = !this.isChage;
+ },
+ selFre(fre) {
+ this.leftSelFre = fre;
+ },
+ closeReplay() {
+ this.selTimeValue = [];
+ this.frequencySel = "";
+ this.frequencyArr = [];
+ this.isReplay = false;
+ if (this.playVideo) {
+ this.playVideo.pause();
+ this.playVideo = null;
+ }
+ },
+ playReplay(url) {
+ this.playVideo = this.$refs.testVideo;
+ if (Hls.isSupported()) {
+ var hls = new Hls();
+ hls.loadSource(url);
+ hls.attachMedia(this.playVideo);
+ hls.on(Hls.Events.MANIFEST_PARSED, function () {
+ this.playVideo.play();
+ });
+ } else if (this.playVideo.canPlayType("application/vnd.apple.mpegurl")) {
+ this.playVideo.src = url;
+ this.playVideo.addEventListener("loadedmetadata", function () {
+ this.playVideo.play();
+ });
+ }
+ },
+ replayRecord() {
+ let param = new URLSearchParams();
+ param.append("method", "mutipleReview");
+ param.append("instruct", 1);
+ param.append("playType", 1);
+ param.append("hls", 1);
+ param.append("key", 123456);
+ param.append("monitorpointId", this.lookBackData.monitorpointId);
+ param.append("frequencyValue", this.frequencySel);
+ param.append("startTime", this.dateFormatter(this.selTimeValue[0]));
+ param.append("endTime", this.dateFormatter(this.selTimeValue[1]));
+
+ this.$post(window.equipmentURL + "FRP/NetRequest.do", param).then(
+ (res) => {
+ if (res.success == "true") {
+ this.isReplay = true;
+ this.playReplay(res.url);
+ } else {
+ this.$message.error(res.msg);
+ }
+ }
+ );
+ },
+ getFrequencySel() {
+ this.isReplay = false;
+ if (this.playVideo) {
+ this.playVideo.pause();
+ this.playVideo = null;
+ }
+
+ let param = new URLSearchParams();
+ param.append("bid", "getRecordFreqs");
+ param.append("start_time", this.dateFormatter(this.selTimeValue[0]));
+ param.append("end_time", this.dateFormatter(this.selTimeValue[1]));
+ param.append("monitorpointId", this.lookBackData.monitorpointId);
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ let fArr = [];
+ res.data.data[0].forEach((item) => {
+ fArr.push(item.frequencyValue);
+ });
+ this.frequencyArr = fArr;
+ });
+ },
+ showLookBack(data) {
+ this.$emit("showRePlay", data);
+ },
+ handleCommand(command) {
+ if (command == "a") {
+ this.showSocket();
+ }
+ if (command == "b") {
+ this.loginOut();
+ }
+ if (command == "c") {
+ this.showLogin();
+ }
+ },
+ loginOut() {
+ sessionStorage.setItem("userName", "");
+ this.isLogin = false;
+ this.$message.success("閫�鍑烘垚鍔�");
+ },
+ closeIsShow() {
+ this.socketInfoDialog = false;
+ },
+
+ tableRowClassName({ row, rowIndex }) {
+ if (rowIndex === this.showIndex) {
+ return "successRow";
+ }
+ return "";
+ },
+ changeMap() {
+ // this.colorTips = true
+ this.$refs.bigScreenMap.changeMapInit();
+ },
+
+ openSocket() {
+ let that = this;
+ this.$notify({
+ title: "鎻愮ず",
+ message: "鎮ㄦ湁涓�鏉℃湭澶勭悊淇℃伅",
+ type: "warning",
+ duration: 0,
+ onClick() {
+ that.showSocket(); //鑷畾涔夊洖璋�,message涓轰紶鐨勫弬鏁�
+ },
+ onClose() {
+ if (that.socketInfoDialog) {
+ } else {
+ that.isClose = true;
+ }
+ },
+ });
+ },
+ showSocket() {
+ if (this.userid == "" || this.username == "") {
+ if (this.isLoney) {
+ this.showLogin();
+ } else {
+ window.location.href =
+ window.backstageURL + "ammonitor/#/passport/login";
+ }
+ } else {
+ this.socketInfoDialog = true;
+ this.isClose = false;
+ Notification.closeAll();
+ }
+ },
+ sureScore() {
+ let param = new URLSearchParams();
+ param.append("bid", "assessPress");
+ param.append("frequency", this.scoreInfo.frequencyValue);
+ param.append("monitorstationId", this.scoreInfo.monitorpointId);
+ param.append("assessvalue", this.selScoreValue);
+ param.append("userName", this.username);
+ param.append("userid", this.userid);
+ if (this.scoreInfo.taskid) {
+ param.append("taskid", this.scoreInfo.taskid);
+ } else {
+ param.append("taskid", "");
+ }
+
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ if (res.code == 20000) {
+ this.$message.success(res.data.data[0][0].messg);
+ } else {
+ this.$message.error(res.data.data[0][0].messg);
+ }
+ this.scoreOperationDialog = false;
+ });
+ },
+ showStartScore(info) {
+ this.scoreInfo = {};
+ this.scoreInfo.taskid = info.id;
+ this.scoreInfo.frequencyValue = info.frequency;
+ this.scoreInfo.monitorpointId = info.monitorpointId;
+ let param = new URLSearchParams();
+ param.append("bid", "assessDict");
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ if (res.code == 20000) {
+ this.selScoreArr = res.data.data;
+ this.scoreOperationDialog = true;
+ }
+ });
+ },
+ startScore(info) {
+ this.scoreInfo = {};
+ this.scoreInfo = info;
+ let param = new URLSearchParams();
+ param.append("bid", "assessDict");
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ if (res.code == 20000) {
+ this.selScoreArr = res.data.data;
+ this.scoreOperationDialog = true;
+ }
+ });
+ },
+ getWhetherInfo() {
+ console.log(new Date(this.timeValue));
+ let param = new URLSearchParams();
+ param.append("bid", "getWeather");
+ param.append("datestr", this.timeValue.split(" ")[0]);
+ param.append("hour", this.timeValue.split(" ")[1].split(":")[0]);
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ this.whetherInfo = res.data.data[0][0];
+ });
+ },
+ submitForm(formName) {
+ this.$refs[formName].validate((valid) => {
+ if (valid) {
+ if (
+ this.identifyCode.toUpperCase() ==
+ this.loginForm.identifyCode.toUpperCase()
+ ) {
+ let param = new URLSearchParams();
+ param.append("bid", "login");
+ param.append("userid", this.loginForm.username);
+ param.append("psw", this.loginForm.password);
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ if (res.data.data.length == 0) {
+ this.$message.error("鐢ㄦ埛鍚嶆垨鑰呭瘑鐮侀敊璇�");
+ } else {
+ sessionStorage.setItem(
+ "userName",
+ JSON.stringify(res.data.data[0])
+ );
+ this.userid = res.data.data[0].account;
+ this.username = res.data.data[0].username;
+ this.loginDialogVisible = false;
+ this.isLogin = true;
+ // this.$refs.bigScreenMap.oldMapInit()
+ localStorage.setItem("user",JSON.stringify({name:res.data.data[0].account}));
+ localStorage.setItem("_token",JSON.stringify({account:res.data.data[0].username}));
+ this.$refs.bigScreenMap.mapInit()
+ this.getColors();
+ }
+ });
+ } else {
+ this.$message.error("楠岃瘉鐮侀敊璇�");
+ }
+ } else {
+ return false;
+ }
+ });
+ },
+ resetForm() {},
+ showInfo(content) {
+ this.pontInfoData = content;
+ this.pointDrawState = true;
+ // this.showDraw();
+ },
+ hideLeft() {
+ this.leftDrawState = false;
+ },
+ showLeft() {
+ this.leftDrawState = true;
+ },
+ hideTop() {
+ this.topDrawState = false;
+ },
+ showTop() {
+ this.topDrawState = true;
+ },
+ hidePoint() {
+ this.pointDrawState = false;
+ },
+ hideRight() {
+ this.rightDrawState = false;
+ },
+ showRight() {
+ this.rightDrawState = true;
+ },
+ showDraw() {
+ this.leftDrawState = true;
+ this.topDrawState = true;
+ this.rightDrawState = true;
+ this.pointDrawState = true;
+ },
+ closeDrow() {
+ this.leftDrawState = false;
+ this.rightDrawState = false;
+ this.topDrawState = false;
+ this.pointDrawState = false;
+ },
+ changeFrequency(value) {
+ this.frequencyValue = value;
+ },
+ changeTimeValue(value) {
+ this.timeValue = value;
+ },
+ changeSwitchValue(value) {
+ this.switchValue = value;
+ },
+ showLogin() {
+ this.loginDialogVisible = true;
+ },
+ showLoading(msg) {
+ if (msg == "jianting") {
+ this.alertInfo = "姝e湪鑾峰彇鐩戝惉鏂囦欢";
+ }
+ if (msg == "luzhi") {
+ this.alertInfo = "姝e湪鍔犲叆褰曞埗";
+ }
+ this.loading = true;
+ },
+ hideLoading() {
+ this.loading = false;
+ },
+ getCurrentTime() {
+ //鑾峰彇褰撳墠鏃堕棿骞舵墦鍗�
+ let yy = new Date().getFullYear();
+ let mm = new Date().getMonth() + 1;
+ let dd = new Date().getDate();
+ let hh = new Date().getHours();
+ let mf =
+ new Date().getMinutes() < 10
+ ? "0" + new Date().getMinutes()
+ : new Date().getMinutes();
+ let ss =
+ new Date().getSeconds() < 10
+ ? "0" + new Date().getSeconds()
+ : new Date().getSeconds();
+ let gettime = yy + "-" + mm + "-" + dd + " " + hh + ":00";
+ return gettime;
+ },
+ dateFormatter(time) {
+ if (time) {
+ var year = time.getFullYear();
+ var month = time.getMonth() + 1;
+ var date = time.getDate();
+ var hour = time.getHours();
+ var minute = time.getMinutes();
+ var second = time.getSeconds();
+ return (
+ this.add0(year) +
+ "-" +
+ this.add0(month) +
+ "-" +
+ this.add0(date) +
+ " " +
+ this.add0(hour) +
+ ":" +
+ this.add0(minute) +
+ ":" +
+ this.add0(second)
+ );
+ } else {
+ return 0;
+ }
+ },
+
+ add0(val) {
+ return val < 10 ? "0" + val : val;
+ },
+ },
+ beforeDestroy() {
+ if (this.player) {
+ this.player.pause();
+ this.player.unload();
+ this.player.detachMediaElement();
+ this.player.destroy();
+ this.player = null;
+ }
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.leftMove-leave-to {
+ animation: leftMoveLeave 0.3s linear;
+}
+.leftMove-enter-to {
+ animation: leftMoveEnter 0.3s linear;
+}
+
+@keyframes leftMoveLeave {
+ 0% {
+ transform: translate(0, 0);
+ }
+ 100% {
+ transform: translate(-100%, 0);
+ }
+}
+@keyframes leftMoveEnter {
+ 0% {
+ transform: translate(-100%, 0);
+ }
+ 100% {
+ transform: translate(0, 0);
+ }
+}
+
+.rightMove-leave-to {
+ animation: rightMoveLeave 0.3s linear;
+}
+.rightMove-enter-to {
+ animation: rightMoveEnter 0.3s linear;
+}
+
+@keyframes rightMoveLeave {
+ 0% {
+ transform: translate(0, 0);
+ }
+ 100% {
+ transform: translate(100%, 0);
+ }
+}
+@keyframes rightMoveEnter {
+ 0% {
+ transform: translate(100%, 0);
+ }
+ 100% {
+ transform: translate(0, 0);
+ }
+}
+
+.topMove-leave-to {
+ animation: topMoveLeave 0.3s linear;
+}
+.topMove-enter-to {
+ animation: topMoveEnter 0.3s linear;
+}
+
+@keyframes topMoveLeave {
+ 0% {
+ transform: translate(0, 0);
+ }
+ 100% {
+ transform: translate(0, -100%);
+ }
+}
+@keyframes topMoveEnter {
+ 0% {
+ transform: translate(0, -100%);
+ }
+ 100% {
+ transform: translate(0, 0);
+ }
+}
+
+.pointMove-leave-to {
+ animation: pointMoveLeave 0.3s linear;
+}
+.pointMove-enter-to {
+ animation: pointMoveEnter 0.3s linear;
+}
+
+@keyframes pointMoveLeave {
+ 0% {
+ transform: scale(100%, 100%);
+ }
+ 100% {
+ transform: scale(0, 0);
+ }
+}
+@keyframes pointMoveEnter {
+ 0% {
+ transform: scale(0, 0);
+ }
+ 100% {
+ transform: scale(100%, 100%);
+ }
+}
+
+.title {
+ width: 100%;
+ height: 80px;
+ background-color: rgba(0, 0, 0, 0.8);
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 99;
+
+ .titleText {
+ font-size: 46px;
+ line-height: 80px;
+ text-align: center;
+ background: linear-gradient(
+ to bottom,
+ rgba($color: aqua, $alpha: 0.8),
+ rgba($color: blue, $alpha: 0.8)
+ );
+ -webkit-background-clip: text;
+ color: transparent;
+ font-weight: 900;
+ letter-spacing: 20px;
+ font-family: Tahoma;
+ }
+
+ .whether {
+ position: fixed;
+ line-height: 40px;
+ font-size: 18px;
+ color: white;
+ left: 30px;
+ top: 0;
+
+ span {
+ font-size: 18px;
+ font-weight: 800;
+ }
+ }
+
+ .tagDiv {
+ position: fixed;
+ line-height: 80px;
+ font-size: 20px;
+ color: white;
+ right: 30px;
+ top: 0;
+ }
+}
+.haveMessage {
+ position: flex;
+ top: 0;
+ left: 0;
+
+ width: 106px;
+ z-index: 999;
+}
+.topBlock {
+ top: 85px;
+ left: 30%;
+ width: 40%;
+ height: 150px;
+ position: fixed;
+ z-index: 100;
+ background: rgba(0, 0, 0, 0.8);
+
+ .topBlockMain {
+ width: 100%;
+ height: 100%;
+ z-index: 100;
+ background: linear-gradient(
+ to top,
+ rgba(77, 214, 182, 0.6),
+ rgba(77, 214, 182, 1)
+ )
+ left top no-repeat,
+ linear-gradient(to right, rgba(77, 214, 182, 1), rgba(77, 214, 182, 0.6))
+ left top no-repeat,
+ linear-gradient(to top, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ right top no-repeat,
+ linear-gradient(to left, rgba(77, 214, 182, 1), rgba(77, 214, 182, 0.6))
+ right top no-repeat,
+ linear-gradient(to bottom, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ left bottom no-repeat,
+ linear-gradient(to left, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ left bottom no-repeat,
+ linear-gradient(to bottom, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ right bottom no-repeat,
+ linear-gradient(to right, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ right bottom no-repeat;
+ background-size: 3px 20px, 20px 3px, 3px 20px, 20px 3px;
+ }
+
+ .topButton {
+ width: 100px;
+ height: 30px;
+ background: rgba(0, 0, 0, 0.8);
+ color: rgba(77, 214, 182, 1);
+ position: absolute;
+ left: 50%;
+ top: 100%;
+ margin-left: -50px;
+ font-size: 24px;
+ font-weight: 900;
+ z-index: 100;
+ }
+}
+.hideTopButton {
+ width: 100px;
+ height: 30px;
+ background: rgba(0, 0, 0, 0.8);
+ color: rgba(77, 214, 182, 1);
+ position: absolute;
+ left: 52.5%;
+ top: 0;
+ margin-left: -50px;
+ font-size: 24px;
+ font-weight: 900;
+ z-index: 99;
+}
+
+.topMoveStart {
+ top: -150px;
+ left: 33%;
+ width: 39%;
+ height: 150px;
+ position: fixed;
+ z-index: 99;
+ background: rgba(0, 0, 0, 0.8);
+}
+
+.pointBlock {
+ position: fixed;
+ top: 300px;
+ left: 30%;
+ width: 40%;
+ background: rgba(0, 0, 0, 0.8);
+ height: 450px;
+ z-index: 99;
+
+ .pointBlockMain {
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ background: linear-gradient(
+ to top,
+ rgba(77, 214, 182, 0.6),
+ rgba(77, 214, 182, 1)
+ )
+ left top no-repeat,
+ linear-gradient(to right, rgba(77, 214, 182, 1), rgba(77, 214, 182, 0.6))
+ left top no-repeat,
+ linear-gradient(to top, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ right top no-repeat,
+ linear-gradient(to left, rgba(77, 214, 182, 1), rgba(77, 214, 182, 0.6))
+ right top no-repeat,
+ linear-gradient(to bottom, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ left bottom no-repeat,
+ linear-gradient(to left, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ left bottom no-repeat,
+ linear-gradient(to bottom, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ right bottom no-repeat,
+ linear-gradient(to right, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ right bottom no-repeat;
+ background-size: 3px 25px, 20px 3px, 3px 20px, 20px 3px;
+
+ .pointBlockContent {
+ width: 96%;
+ margin-left: 2%;
+ height: 450px;
+ margin-top: 10px;
+ }
+ }
+
+ .pointButton {
+ width: 20px;
+ height: 20px;
+ border-radius: 10px;
+ position: absolute;
+ top: -10px;
+ right: -10px;
+ color: rgba(77, 214, 182, 1);
+ background: rgba(0, 0, 0, 0.8);
+ i {
+ font-size: 20px;
+ }
+ }
+}
+
+.pointMoveStart {
+ position: fixed;
+ top: 300px;
+ left: 50%;
+ background: rgba(0, 0, 0, 0.8);
+ width: 0;
+ height: 0;
+ margin-left: -250px;
+ z-index: 99;
+}
+
+.leftBlock {
+ position: fixed;
+ top: 85px;
+ left: 0px;
+ bottom: 5px;
+ background: rgba(0, 0, 0, 0.8);
+ width: 28%;
+ z-index: 99;
+
+ .leftBlockMain {
+ width: 100%;
+ height: 100%;
+ background: linear-gradient(
+ to top,
+ rgba(77, 214, 182, 0.6),
+ rgba(77, 214, 182, 1)
+ )
+ left top no-repeat,
+ linear-gradient(to right, rgba(77, 214, 182, 1), rgba(77, 214, 182, 0.6))
+ left top no-repeat,
+ linear-gradient(to top, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ right top no-repeat,
+ linear-gradient(to left, rgba(77, 214, 182, 1), rgba(77, 214, 182, 0.6))
+ right top no-repeat,
+ linear-gradient(to bottom, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ left bottom no-repeat,
+ linear-gradient(to left, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ left bottom no-repeat,
+ linear-gradient(to bottom, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ right bottom no-repeat,
+ linear-gradient(to right, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ right bottom no-repeat;
+ background-size: 3px 20px, 20px 3px, 3px 20px, 20px 3px;
+ }
+
+ .leftButton {
+ display: block;
+ width: 30px;
+ height: 100px;
+ background: rgba(0, 0, 0, 0.8);
+ color: rgba(77, 214, 182, 1);
+ position: absolute;
+ left: 100%;
+ top: 50%;
+ margin-top: -50px;
+ line-height: 100px;
+ font-size: 24px;
+ font-weight: 900;
+ }
+}
+
+.hideLeftButton {
+ display: block;
+ width: 30px;
+ height: 100px;
+ background: rgba(0, 0, 0, 0.8);
+ color: rgba(77, 214, 182, 1);
+ position: absolute;
+ left: 0;
+ top: 50%;
+ margin-top: -7.5px;
+ line-height: 100px;
+ font-size: 24px;
+ font-weight: 900;
+}
+
+.leftMoveStart {
+ position: fixed;
+ top: 85px;
+ left: 0px;
+ bottom: 5px;
+ width: 0px;
+ z-index: 999;
+}
+
+.rightBlock {
+ position: fixed;
+ top: 85px;
+ right: 0;
+ bottom: 5px;
+ background: rgba(0, 0, 0, 0.8);
+ width: 28%;
+ z-index: 99;
+
+ .rightBlockMain {
+ width: 100%;
+ height: 100%;
+ background: linear-gradient(
+ to top,
+ rgba(77, 214, 182, 0.6),
+ rgba(77, 214, 182, 1)
+ )
+ left top no-repeat,
+ linear-gradient(to right, rgba(77, 214, 182, 1), rgba(77, 214, 182, 0.6))
+ left top no-repeat,
+ linear-gradient(to top, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ right top no-repeat,
+ linear-gradient(to left, rgba(77, 214, 182, 1), rgba(77, 214, 182, 0.6))
+ right top no-repeat,
+ linear-gradient(to bottom, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ left bottom no-repeat,
+ linear-gradient(to left, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ left bottom no-repeat,
+ linear-gradient(to bottom, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ right bottom no-repeat,
+ linear-gradient(to right, rgba(77, 214, 182, 0.6), rgba(77, 214, 182, 1))
+ right bottom no-repeat;
+ background-size: 3px 20px, 20px 3px, 3px 20px, 20px 3px;
+ }
+
+ .rightButton {
+ display: block;
+ width: 30px;
+ height: 100px;
+ background: rgba(0, 0, 0, 0.8);
+ color: rgba(77, 214, 182, 1);
+ position: absolute;
+ right: 100%;
+ top: 50%;
+ margin-top: -50px;
+ line-height: 100px;
+ font-size: 24px;
+ font-weight: 900;
+ }
+}
+
+.hideRightButton {
+ display: block;
+ width: 30px;
+ height: 100px;
+ background: rgba(0, 0, 0, 0.8);
+ color: rgba(77, 214, 182, 1);
+ position: absolute;
+ right: 0;
+ top: 50%;
+ margin-top: -7.5px;
+ line-height: 100px;
+ font-size: 24px;
+ font-weight: 900;
+}
+
+.rightMoveStart {
+ position: fixed;
+ top: 85px;
+ right: 0;
+ bottom: 5px;
+ width: 0px;
+ z-index: 99;
+}
+
+.scoreOperation {
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+
+ p {
+ width: 40px;
+ line-height: 40px;
+ }
+}
+
+.optionButton {
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: center;
+}
+
+/deep/ .el-carousel__arrow {
+ transition: none !important;
+ border-radius: 0 !important;
+ top: 0;
+ transform: none !important;
+ height: 100%;
+ line-height: 100%;
+}
+
+/deep/ .el-icon-arrow-right::after {
+ content: "\4e0b\4e00\9879";
+ display: block;
+ color: black;
+ margin-top: 10px;
+}
+/deep/ .el-icon-arrow-right::before {
+ content: ">>";
+ color: black;
+}
+
+/deep/ .el-carousel__arrow--right {
+ right: 0px !important;
+ width: 50px;
+}
+
+/deep/ .el-icon-arrow-left::after {
+ content: "\4e0a\4e00\9879";
+ display: block;
+ color: black;
+ margin-top: 10px;
+}
+/deep/ .el-icon-arrow-left::before {
+ content: "<<";
+ color: black;
+}
+
+/deep/ .el-carousel__arrow--left {
+ left: 0px !important;
+ width: 50px;
+}
+
+/deep/ .renwu .el-dialog__body {
+ background: transparent !important;
+}
+
+/deep/ .el-table .successRow {
+ background: #67c23a;
+}
+
+.middleLine {
+ height: 500px;
+ width: 1px;
+ border-left: dashed 1px #cccccc;
+}
+
+.lookBackDataTitle {
+ width: 90%;
+ margin-left: 5%;
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+}
+
+.svgIcon {
+ cursor: pointer;
+}
+
+.colorBlock {
+ top: 220px;
+ left: 50%;
+ width: 20%;
+ margin-left: 50px;
+ height: 300px;
+ position: fixed;
+ z-index: 6000;
+ background-color: #ffffff;
+}
+
+// .drawTip {
+// z-index: 9000 !important;
+// overflow: scroll !important;
+// position: fixed !important;
+// top: 50px;
+// height: 300px !important;
+// width: 100px !important;
+// background-color: white !important;
+// }
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/monitoringPointManage/index.vue b/bigScreen/src/views/monitoringPointManage/index.vue
new file mode 100644
index 0000000..b20f150
--- /dev/null
+++ b/bigScreen/src/views/monitoringPointManage/index.vue
@@ -0,0 +1,820 @@
+<template>
+ <div>
+ <video id="videoElement" controls width="0" height="0" v-show="false">
+ xxx
+ </video>
+ <div class="tableDiv">
+ <el-table
+ :data="tableData"
+ style="width: 100%"
+ :key="isKey"
+ v-loading="loading"
+ >
+ <el-table-column label="ID" prop="monitorpointId"> </el-table-column>
+ <el-table-column label="鐩戞祴鐐瑰悕绉�" prop="monitorpointName">
+ </el-table-column>
+ <el-table-column label="鐘舵��" prop="status_name" align="center">
+ </el-table-column>
+ <el-table-column label="棰戠巼娓呭崟">
+ <template slot-scope="scope">
+ <div>
+ <el-button
+ size="mini"
+ type="success"
+ @click="lookFrequency(scope)"
+ >鏌ョ湅</el-button
+ >
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column label="褰曢煶鍥炴斁">
+ <template slot-scope="scope">
+ <div>
+ <el-button size="mini" type="success" @click="lookBack(scope)"
+ >鍥炴斁</el-button
+ >
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column label="褰曞埗閫氶亾1">
+ <template slot-scope="scope">
+ <div>
+ <div>
+ <el-form label-position="left" class="demo-table-expand">
+ <el-form-item label="棰戠巼:">
+ <span
+ v-show="!scope.row.isLeftEdit"
+ @dblclick="changeLeftInput($event, scope)"
+ >{{
+ scope.row.channels[0].frequencyValue | formateFre
+ }}</span
+ >
+ <el-input
+ v-model="scope.row.channels[0].frequencyValue"
+ placeholder=""
+ style="width: 80px; height: 22px"
+ v-show="scope.row.isLeftEdit"
+ ref="editLeftInput"
+ @blur="changeLeftP(scope)"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="鐘舵��:">
+ <span>{{
+ scope.row.channels[0].status | formatSTATUS
+ }}</span>
+ </el-form-item>
+ <el-form-item label="鎿嶄綔:">
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鍔犲叆褰曞埗"
+ placement="top"
+ >
+ <svg-icon
+ class="svgIcon"
+ icon-class="recordAddBlack"
+ @click="jionRecord(scope.row.channels[0])"
+ ></svg-icon>
+ </el-tooltip>
+ </el-form-item>
+ </el-form>
+ </div>
+ </div>
+ </template>
+ </el-table-column>
+
+ <!-- <el-table-column label="褰曞埗閫氶亾2">
+ <template slot-scope="scope">
+ <div style="width: 50%">
+ <el-form label-position="left" class="demo-table-expand">
+ <el-form-item label="棰戠巼:">
+ <span
+ v-show="!scope.row.isRightEdit"
+ @dblclick="changeRightInput($event, scope)"
+ >{{
+ scope.row.channels[1].frequencyValue | formateFre
+ }}</span
+ >
+ <el-input
+ v-model="scope.row.channels[1].frequencyValue"
+ placeholder=""
+ style="width: 80px; height: 22px"
+ v-show="scope.row.isRightEdit"
+ ref="editRightInput"
+ @blur="changeRightP(scope)"
+ ></el-input>
+ </el-form-item>
+ <el-form-item label="鐘舵��:">
+ <span>{{ scope.row.channels[1].status | formatSTATUS }}</span>
+ </el-form-item>
+ <el-form-item label="鎿嶄綔:">
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鍔犲叆褰曞埗"
+ placement="top"
+ >
+ <svg-icon
+ class="svgIcon"
+ icon-class="recordAddBlack"
+ @click="jionRecord(scope.row.channels[1])"
+ ></svg-icon>
+ </el-tooltip>
+ </el-form-item>
+ </el-form>
+ </div>
+ </template>
+ </el-table-column> -->
+ </el-table>
+ </div>
+
+ <el-dialog title="鏌ョ湅閫氶亾" :visible.sync="lookPassageVisible">
+ <el-table :data="showFirst" :show-header="false" :key="tableKey">
+ <el-table-column label="channelId" prop="channelId">
+ <template slot-scope="scope">
+ <div>
+ {{ scope.row.channelId | formatChannelId }}
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column label="STATUS" prop="STATUS">
+ <template slot-scope="scope">
+ <div v-if="scope.row.channelId != 0">
+ {{ scope.row.STATUS | formatSTATUS }}
+ </div>
+ <div v-else>--</div>
+ </template>
+ </el-table-column>
+ <el-table-column label="frequencyValue" prop="frequencyValue">
+ <template slot-scope="scope">
+ <div style="display: flex">
+ <div v-if="!scope.row.isEdit">
+ <div v-if="scope.row.channelId != 0">
+ {{ scope.row.frequencyValue }}
+ </div>
+ <div v-else>--</div>
+ </div>
+ <div v-else>
+ <el-input
+ v-model="scope.row.frequencyValue"
+ placeholder=""
+ ></el-input>
+ </div>
+ <i
+ style="margin-left: 10px"
+ :class="{
+ 'el-icon-edit': !scope.row.isEdit,
+ 'el-icon-check': scope.row.isEdit,
+ }"
+ @click="changeEdit(scope)"
+ ></i>
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column label="start_time" prop="start_time">
+ <template slot-scope="scope">
+ <div v-if="scope.row.channelId != 0">
+ <div v-if="scope.row.start_time">
+ {{ scope.row.start_time }}
+ </div>
+ <div v-else>--</div>
+ </div>
+ <div v-else>--</div>
+ </template>
+ </el-table-column>
+ <el-table-column label="stop_time" prop="stop_time">
+ <template slot-scope="scope">
+ <div v-if="scope.row.channelId != 0">
+ <div v-if="scope.row.stop_time">
+ {{ scope.row.stop_time }}
+ </div>
+ <div v-else>--</div>
+ </div>
+ <div v-else>--</div>
+ </template>
+ </el-table-column>
+ <el-table-column label="鎿嶄綔">
+ <template slot-scope="scope">
+ <div v-if="scope.row.channelId != 0">
+ <div
+ :key="isChange"
+ v-if="
+ !(
+ scope.row.frequencyValue == '' ||
+ scope.row.frequencyValue == '--'
+ )
+ "
+ >
+ <div v-if="scope.row.channelId == 1">
+ <i class="el-icon-video-play"></i>
+ <i
+ class="el-icon-video-pause"
+ @click="pauseVideo(scope)"
+ style="margin-left: 20px"
+ ></i>
+ </div>
+ <div v-else>
+ <i
+ class="el-icon-download"
+ @click="jionRecord(scope)"
+ v-if="scope.row.STATUS == 0"
+ ></i>
+ <i
+ class="el-icon-delete-solid"
+ @click="dropRecord(scope)"
+ v-if="scope.row.STATUS == 1"
+ ></i>
+ </div>
+ </div>
+ <div v-else>--</div>
+ </div>
+ <div v-else>--</div>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-dialog>
+
+ <el-dialog title="棰戠巼娓呭崟" :visible.sync="lookFrequencyVisible">
+ <el-table :data="showSecond">
+ <el-table-column label="棰戠巼" prop="frequencyValue"> </el-table-column>
+ <el-table-column label="绫诲瀷">
+ <template slot-scope="scope">
+ <div>
+ {{ scope.row.status | formateFreStatus }}
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column label="淇″彿" prop="level"> </el-table-column>
+ </el-table>
+ </el-dialog>
+ <el-dialog :visible.sync="lookBackVisible" @close="closeReplay">
+ <div slot="title" class="lookBackDataTitle">
+ <p>{{ lookBackData.monitorpointName }}</p>
+ <p>{{ lookBackData.status_name }}</p>
+ </div>
+ <div>
+ <div class="lookBackBlock">
+ <span class="demonstration">鍥炴斁鏃堕棿</span>
+ <el-date-picker
+ v-model="timeValue"
+ type="datetimerange"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ style="margin-left: 20px"
+ >
+ </el-date-picker>
+ </div>
+ <div class="lookBackBlock" style="margin-top: 30px">
+ <span>璇烽�夋嫨棰戠巼:</span>
+ <el-select
+ v-model="frequencySel"
+ placeholder="璇峰厛濉啓鏃ユ湡"
+ style="margin-left: 20px"
+ >
+ <el-option
+ v-for="(item, index) in frequencyArr"
+ :key="index"
+ :label="item"
+ :value="item"
+ ></el-option>
+ </el-select>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鐐瑰嚮鏀跺惉"
+ placement="top"
+ >
+ <i
+ class="el-icon-video-play"
+ style="margin-left: 20px"
+ @click="replayRecord()"
+ v-show="!isReplay"
+ ></i>
+ </el-tooltip>
+ </div>
+ </div>
+ <div style="margin-top: 30px">
+ <video
+ id="testVideo"
+ ref="testVideo"
+ src=""
+ controls
+ preload
+ width="90%"
+ height="300"
+ v-show="isReplay"
+ >
+ qqq
+ </video>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+<script>
+export default {
+ watch: {
+ timeValue: {
+ handler(n, o) {
+ if (this.timeValue.length == 2) {
+ this.frequencySel = "";
+ this.getFrequencySel();
+ }
+ },
+ },
+ frequencySel: {
+ handler(n, o) {
+ if (this.frequencySel) {
+ this.isReplay = false;
+ if (this.playVideo) {
+ this.playVideo.pause();
+ this.playVideo = null;
+ }
+ }
+ },
+ },
+ lookPassageVisible: {
+ handler(n, o) {
+ if (!this.lookPassageVisible) {
+ if (this.player) {
+ this.player.pause();
+ this.player.unload();
+ this.player.detachMediaElement();
+ this.player.destroy();
+ this.player = null;
+ }
+ }
+ },
+ },
+ },
+ filters: {
+ formateFre(fre) {
+ if (fre) {
+ return fre;
+ } else {
+ return "--";
+ }
+ },
+ formatChannelId(id) {
+ if (id == 1) {
+ return "鐩戝惉閫氶亾";
+ } else if (id == 0) {
+ return "鎵閫氶亾";
+ } else {
+ return "褰曞埗閫氶亾";
+ }
+ },
+ formatSTATUS(status) {
+ if (status == "1") {
+ return "姝e湪褰曞埗";
+ }
+ if (status == "0") {
+ return "鍋滄褰曞埗";
+ } else {
+ return "鍋滄褰曞埗";
+ }
+ },
+ formateFreStatus(status) {
+ if (status == "0") {
+ return "鍚堟硶棰戠偣";
+ } else if (status == "1") {
+ return "闈炴硶棰戠偣";
+ } else if (status == "2") {
+ return "璇姤";
+ } else if (status == "3") {
+ return "鐧藉悕鍗�";
+ } else if (status == "4") {
+ return "寮傚湴棰戠偣";
+ } else if (status == "5") {
+ return "鐤戜技闈炴硶棰戠偣";
+ } else if (status == "6") {
+ return "涓㈠け";
+ } else {
+ return "鏈煡";
+ }
+ },
+ },
+ data() {
+ return {
+ loading: false,
+ isKey: false,
+ playVideo: null,
+ isReplay: false,
+ isEdit: false,
+ tableData: [],
+ activeName: "first",
+ showFirst: [],
+ showSecond: [],
+ lookPassageVisible: false,
+ lookFrequencyVisible: false,
+ lookBackVisible: false,
+ lookBackData: {},
+ timeValue: [],
+ frequencySel: "",
+ frequencyArr: [],
+ nowPlayId: null,
+ player: null,
+ isPlay: false,
+ isChange: false,
+ tableKey: false,
+ userid: "",
+ username: "",
+ isLeftEdit: false,
+ isRightEdit: false,
+ };
+ },
+ mounted() {
+ if (localStorage.getItem("user") && localStorage.getItem("_token")) {
+ this.userid = JSON.parse(localStorage.getItem("user")).name;
+ this.username = JSON.parse(localStorage.getItem("_token")).account;
+ } else {
+ window.location.href = window.backstageURL + "ammonitor/#/passport/login";
+ }
+ this.getInfo();
+ },
+ methods: {
+ changeLeftInput(e, scope) {
+ let target = e.currentTarget;
+ scope.row.isLeftEdit = !scope.row.isLeftEdit;
+ this.isKey = !this.isKey;
+ setTimeout(() => {
+ target.parentNode.children[1].children[0].focus();
+ }, 500);
+ },
+ changeLeftP(scope) {
+ scope.row.isLeftEdit = !scope.row.isLeftEdit;
+ this.isKey = !this.isKey;
+ },
+ changeRightInput(e, scope) {
+ let target = e.currentTarget;
+ scope.row.isRightEdit = !scope.row.isRightEdit;
+ this.isKey = !this.isKey;
+ setTimeout(() => {
+ target.parentNode.children[1].children[0].focus();
+ }, 500);
+ },
+ changeRightP(scope) {
+ scope.row.isRightEdit = !scope.row.isRightEdit;
+ this.isKey = !this.isKey;
+ },
+ closeReplay() {
+ this.timeValue = [];
+ this.frequencySel = "";
+ this.frequencyArr = [];
+ this.isReplay = false;
+ if (this.playVideo) {
+ this.playVideo.pause();
+ this.playVideo = null;
+ }
+ },
+ replayRecord() {
+ let param = new URLSearchParams();
+ param.append("method", "mutipleReview");
+ param.append("instruct", 1);
+ param.append("playType", 1);
+ param.append("hls", 1);
+ param.append("key", 123456);
+ param.append("monitorpointId", this.lookBackData.monitorpointId);
+ param.append("frequencyValue", this.frequencySel);
+ param.append("startTime", this.dateFormatter(this.timeValue[0]));
+ param.append("endTime", this.dateFormatter(this.timeValue[1]));
+
+ this.$post(window.equipmentURL + "FRP/NetRequest.do", param).then(
+ (res) => {
+ if (res.success == "true") {
+ this.isReplay = true;
+ this.playReplay(res.url);
+ } else {
+ this.$message.error(res.msg);
+ }
+ }
+ );
+ },
+ playReplay(url) {
+ this.playVideo = this.$refs.testVideo;
+ if (Hls.isSupported()) {
+ var hls = new Hls();
+ hls.loadSource(url);
+ hls.attachMedia(this.playVideo);
+ hls.on(Hls.Events.MANIFEST_PARSED, function () {
+ this.playVideo.play();
+ });
+ } else if (this.playVideo.canPlayType("application/vnd.apple.mpegurl")) {
+ this.playVideo.src = url;
+ this.playVideo.addEventListener("loadedmetadata", function () {
+ this.playVideo.play();
+ });
+ }
+ },
+ changeEdit(scope) {
+ scope.row.isEdit = !scope.row.isEdit;
+ this.tableKey = !this.tableKey;
+ },
+ jionRecord(scope) {
+ if (localStorage.getItem("user") && localStorage.getItem("_token")) {
+ let userInfo = JSON.parse(localStorage.getItem("user"));
+ let userIdInfo = JSON.parse(localStorage.getItem("_token"));
+ this.$confirm(`鏄惁纭畾灏�${scope.frequencyValue}鍔犲叆褰曞埗`, "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ })
+ .then(() => {
+ this.$prompt("璇疯緭鍏ユ椂闂�(鍒嗛挓)", "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ inputPattern:
+ /^([1-9]|([1-9][0-9])|([1-2][0-9][0-9])|([3][0-5][0-9])|([0]{1}))$|^[3][6][0]$/,
+ inputErrorMessage: "璇疯緭鍏�1鍒�360鐨勬暣鏁�",
+ })
+ .then(({ value }) => {
+ this.$emit("showLoading", "luzhi");
+ let param = new URLSearchParams();
+ param.append("method", "record");
+ param.append("key", 111111);
+ param.append("recordTimeLength", value);
+ param.append("monitorpointId", scope.monitorpointId);
+ param.append("frequencyValue", scope.frequencyValue);
+ param.append("isUnderWay", 0);
+
+ let url = `${window.equipmentURL}FRP/TNewrecordtask.do?method=record&monitorpointId=${scope.monitorpointId}&frequencyValue=${scope.frequencyValue}`;
+ this.$getJSON(
+ window.equipmentURL + "FRP/TNewrecordtask.do",
+ param
+ ).then((res) => {
+ this.$emit("hideLoading");
+ let param1 = {
+ bid: "setChannelRecord",
+ monitorpointId: scope.monitorpointId,
+ frequency: scope.frequencyValue,
+ userid: this.userid,
+ requesturl: url,
+ success: res[0].success.toString(),
+ msg: res[0].msg,
+ recordminitus: 180,
+ };
+
+ this.$post(
+ window.backstageURL + "dataservice/dealData",
+ param1
+ ).then((res1) => {});
+
+ if (res[0].success) {
+ this.$message.success(res[0].msg);
+ } else {
+ this.$message.error(res[0].msg);
+ }
+ });
+ })
+ .catch(() => {
+ this.$message({
+ type: "info",
+ message: "鍙栨秷杈撳叆",
+ });
+ });
+ })
+ .catch(() => {
+ this.$message({
+ type: "info",
+ message: "宸插彇娑堝垹闄�",
+ });
+ });
+ } else {
+ window.location.href =
+ window.backstageURL + "ammonitor/#/passport/login";
+ }
+ },
+ dropRecord(scope) {
+ let param = new URLSearchParams();
+ param.append("method", "delete");
+ param.append("key", 123456);
+ param.append("monitorpointId", scope.monitorpointId);
+ param.append("frequencyValue", scope.frequencyValue);
+ this.$getJSON(window.equipmentURL + "FRP/TNewrecordtask.do", param).then(
+ (res) => {
+ if (res.success) {
+ scope.status == 0;
+ this.tableKey = !this.tableKey;
+ } else {
+ this.$message.warning(res.msg);
+ }
+ }
+ );
+ },
+ pauseVideo(scope) {
+ this.player.pause();
+ },
+ playVideo1(scope) {
+ if (this.nowPlayId) {
+ if (this.nowPlayId == scope.row.monitorpointId) {
+ this.isplay = true;
+ this.player.play();
+ } else {
+ this.player.pause();
+ this.player.unload();
+ this.player.detachMediaElement();
+ this.player.destroy();
+ this.player = null;
+
+ this.nowPlayId = scope.row.monitorpointId;
+ this.getPalyUrl(scope.row);
+ }
+ } else {
+ this.nowPlayId = scope.row.monitorpointId;
+ this.getPalyUrl(scope.row);
+ }
+ },
+ stopVideo(scope) {
+ let param = new URLSearchParams();
+ param.append("method", "delete");
+ param.append("monitorpointId", scope.row.monitorpointId);
+ param.append("frequencyValue", scope.row.frequencyValue);
+ param.append("key", 123456);
+ this.$getJSON(window.equipmentURL + "FRP/TNewrecordtask.do", param).then(
+ (res) => {}
+ );
+
+ if (this.player) {
+ this.player.pause();
+ this.player.unload();
+ this.player.detachMediaElement();
+ this.player.destroy();
+ this.player = null;
+ }
+ },
+
+ getPalyUrl(row) {
+ let param = new URLSearchParams();
+ param.append("method", "playLiveNew");
+ param.append("instruct", 1);
+ param.append("playType", 0);
+ param.append("hls", 0);
+ param.append("key", 123456);
+ param.append("monitorpointId", row.monitorpointId);
+ param.append("frequencyValue", row.frequencyValue);
+
+ this.$getJSON(window.equipmentURL + "FRP/ScanSignal.do", param).then(
+ (res) => {
+ this.$message.warning(res.success);
+
+ let flvurl = "";
+ if (res.url) {
+ flvurl = res.url;
+ }
+
+ if (res.url) {
+ this.rtsp = res.url;
+
+ let video = document.getElementById("videoElement");
+
+ if (flvjs.isSupported()) {
+ this.player = flvjs.createPlayer({
+ type: "flv",
+ url: this.rtsp,
+ });
+
+ this.player.attachMediaElement(video);
+
+ this.player.load(); //鍔犺浇
+
+ if (this.rtsp) {
+ this.isplay = true;
+ this.player.play();
+ } else {
+ this.$message.error("鏃犻煶棰戞枃浠�");
+ }
+ }
+ } else {
+ this.isPlay = true;
+ this.isChange = !this.isChange;
+ }
+ }
+ );
+ },
+
+ dateFormatter(time) {
+ var year = time.getFullYear();
+ var month = time.getMonth() + 1;
+ var date = time.getDate();
+ var hour = time.getHours();
+ var minute = time.getMinutes();
+ var second = time.getSeconds();
+ return (
+ this.add0(year) +
+ "-" +
+ this.add0(month) +
+ "-" +
+ this.add0(date) +
+ " " +
+ this.add0(hour) +
+ ":" +
+ this.add0(minute) +
+ ":" +
+ this.add0(second)
+ );
+ },
+
+ add0(val) {
+ return val < 10 ? "0" + val : val;
+ },
+ getInfo() {
+ this.loading = true;
+ this.$getJSON(
+ window.backstageURL +
+ "dataservice/getNoTokenData?bid=getPointAndChannels"
+ ).then((res) => {
+ this.tableData = JSON.parse(
+ JSON.stringify(res.data.data.monitorpoints)
+ );
+ this.tableData.forEach((item) => {
+ item.isLeftEdit = false;
+ item.isRightEdit = false;
+ });
+ this.loading = false;
+ });
+ },
+ lookBack(scope) {
+ this.$emit("showRePlay", scope.row);
+ },
+ getFrequencySel() {
+ this.isReplay = false;
+ if (this.playVideo) {
+ this.playVideo.pause();
+ this.playVideo = null;
+ }
+
+ let param = new URLSearchParams();
+ param.append("bid", "getRecordFreqs");
+ param.append("start_time", this.dateFormatter(this.timeValue[0]));
+ param.append("end_time", this.dateFormatter(this.timeValue[1]));
+ param.append("monitorpointId", this.lookBackData.monitorpointId);
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ let fArr = [];
+ res.data.data[0].forEach((item) => {
+ fArr.push(item.frequencyValue);
+ });
+ this.frequencyArr = fArr;
+ });
+ },
+ handleClick(tab, event) {},
+ lookFrequency(scope) {
+ let param = new URLSearchParams();
+ param.append("bid", "getCurrPointFreqs");
+ param.append("monitorpointId", scope.row.monitorpointId);
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ this.showSecond = res.data.data[0];
+ this.lookFrequencyVisible = true;
+ });
+ },
+ lookPassage(scope) {
+ let param = new URLSearchParams();
+ param.append("bid", "getChannelRecord");
+ param.append("monitorpointId", scope.row.monitorpointId);
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ param
+ ).then((res) => {
+ this.showFirst = res.data.data[0];
+ this.showFirst.forEach((item) => {
+ item.isEdit = false;
+ });
+ this.lookPassageVisible = true;
+ });
+ },
+ },
+ beforeDestroy() {
+ if (this.player) {
+ this.player.pause();
+ this.player.unload();
+ this.player.detachMediaElement();
+ this.player.destroy();
+ this.player = null;
+ }
+ },
+};
+</script>
+<style lang="scss">
+.tableDiv {
+ width: 90%;
+ margin-left: 5%;
+ margin-top: 30px;
+}
+
+.lookBackDataTitle {
+ width: 90%;
+ margin-left: 5%;
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+}
+
+.svgIcon {
+ cursor: pointer;
+}
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/recordSearch/index.vue b/bigScreen/src/views/recordSearch/index.vue
new file mode 100644
index 0000000..fa33921
--- /dev/null
+++ b/bigScreen/src/views/recordSearch/index.vue
@@ -0,0 +1,433 @@
+<template>
+ <div>
+ <el-row>
+ <el-col
+ :span="24"
+ style="height: 45px; text-align: left; margin-top: 20px; display: flex"
+ >
+ <el-radio-group v-model="type" style="margin-right: 15px">
+ <el-radio-button label="鏃堕棿娈�"></el-radio-button>
+ <el-radio-button label="鍗曟棩"></el-radio-button>
+ <el-radio-button label="鍗曟湀"></el-radio-button>
+ <el-radio-button label="骞村害"></el-radio-button>
+ </el-radio-group>
+ <span style="margin-right: 15px">
+ <el-date-picker
+ v-model="search.valueDay"
+ :type="
+ type == '鏃堕棿娈�'
+ ? 'date'
+ : type == '鍗曟湀'
+ ? 'month'
+ : type == '骞村害'
+ ? 'year'
+ : 'date'
+ "
+ :placeholder="
+ type == '鏃堕棿娈�'
+ ? '閫夋嫨鏃ユ湡'
+ : type == '鍗曟湀'
+ ? '閫夋嫨鏈堜唤'
+ : type == '骞村害'
+ ? '閫夋嫨骞翠唤'
+ : '閫夋嫨鏃ユ湡'
+ "
+ clearable
+ style="width: 130px"
+ ></el-date-picker>
+ </span>
+ <span v-show="type == '鏃堕棿娈�'" style="margin-right: 15px">
+ <el-time-select
+ v-model="search.valueTime"
+ :picker-options="{
+ start: '00:00',
+ step: '00:30',
+ end: '23:30',
+ }"
+ placeholder="閫夋嫨鏃堕棿"
+ clearable
+ style="width: 130px"
+ ></el-time-select>
+ </span>
+ <el-input
+ placeholder="鏌ヨ骞挎挱"
+ suffix-icon="el-icon-service"
+ v-model="search.search_fm"
+ style="margin-right: 15px; width: 130px"
+ ></el-input>
+ <el-select
+ v-model="determine"
+ placeholder="璇烽�夋嫨"
+ @change="handleChange"
+ style="margin-right: 15px"
+ >
+ <el-option
+ v-for="item in options"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ ></el-option>
+ </el-select>
+
+ <div style="width: 30%; display: flex">
+ <span style="width: 100px; line-height: 28px">褰曢煶鏂瑰紡:</span>
+ <el-select v-model="isUnderWayValue" placeholder="璇烽�夋嫨褰曢煶鏂瑰紡">
+ <el-option label="瀹氭椂褰曞埗" value="0"> </el-option>
+ <el-option label="鐩戝惉褰曞埗" value="3"> </el-option>
+ <el-option label="閲囨牱褰曞埗" value="4"> </el-option>
+ </el-select>
+ </div>
+ </el-col>
+
+ <el-col :span="24" class="Device" style="margin-top: 30px">
+ <el-table
+ :data="tableData"
+ :height="tableH"
+ v-loading="loading"
+ stripe
+ size="small"
+ class="detailTable"
+ >
+ <el-table-column
+ label="monitorpointId"
+ prop="monitorpointId"
+ ></el-table-column>
+ <el-table-column
+ label="monitorpointName"
+ prop="monitorpointName"
+ ></el-table-column>
+ <el-table-column label="frequency" prop="frequency"></el-table-column>
+ <el-table-column label="startTime" prop="startTime">
+ <template slot-scope="scope">
+ {{ dateFormatter(new Date(scope.row.startTime)) }}
+ </template>
+ </el-table-column>
+ <el-table-column label="stopTime" prop="stopTime">
+ <template slot-scope="scope">
+ {{ dateFormatter(new Date(scope.row.stopTime)) }}
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="recordStatus"
+ prop="recordStatus"
+ ></el-table-column>
+ <el-table-column label="鎿嶄綔">
+ <template slot-scope="scope">
+ <div>
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鐐瑰嚮鍥炴斁"
+ placement="top"
+ >
+ <i class="el-icon-refresh-right" @click="rePlay(scope)"></i>
+ </el-tooltip>
+ </div>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-col>
+
+ <el-col :span="24" style="margin-top: 5px">
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="handleCurrentChange"
+ :current-page="pageNo"
+ :page-sizes="[10, 20, 30, 50]"
+ :page-size="pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="totalCount"
+ >
+ </el-pagination>
+ </el-col>
+ </el-row>
+
+ <el-dialog :visible.sync="socketPlay" width="50" @close="socketReplay">
+ <video
+ id="socketVidoPlay"
+ ref="socketVidoPlay"
+ src=""
+ controls
+ preload
+ width="100%"
+ height="300"
+ ></video>
+ </el-dialog>
+ </div>
+</template>
+<script>
+import { originalColor } from "@/utils/chartCustomer.js";
+
+export default {
+ watch: {
+ isUnderWayValue: {
+ handler(n, o) {
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ this.timer = setTimeout(() => {
+ this.getData();
+ }, 300);
+ },
+ deep: true,
+ },
+ search: {
+ handler(n, o) {
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ this.timer = setTimeout(() => {
+ this.getData();
+ }, 300);
+ },
+ deep: true,
+ },
+ determine: {
+ handler(n, o) {
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ this.timer = setTimeout(() => {
+ this.getData();
+ }, 500);
+ },
+ deep: true,
+ },
+ type: {
+ handler(n, o) {
+ if (this.timer) {
+ clearTimeout(this.timer);
+ }
+ this.timer = setTimeout(() => {
+ this.getData();
+ }, 500);
+ },
+ deep: true,
+ },
+ },
+ data() {
+ return {
+ isUnderWayValue: "0",
+ playVideo: null,
+ socketPlay: false,
+ tableH: 0,
+ timer: null,
+ totalCount: 100,
+ pageNo: 1,
+ pageSize: 10,
+ tableData: [],
+ tableH: null,
+ otherAct: [{ item: "鏌ョ湅鎵�鏈�", id: "", type: "primary" }],
+ type: "骞村害",
+ options: [],
+
+ queryParams: {
+ page: 1,
+ size: 10,
+ VF: "",
+ table: "t_fm_scan_timestamp",
+ },
+ determine: "",
+ search: {
+ valueTime: new Date().getHours() + ":00",
+ valueDay: new Date(),
+ search_fm: "",
+ },
+ loading: false,
+ colors: originalColor,
+ color: [
+ { color: "#9D96F5", percentage: 10 },
+ { color: "#FF9F7F", percentage: 20 },
+ { color: "#FB7293", percentage: 30 },
+ { color: "#37A2DA", percentage: 40 },
+ { color: "#67E0E3", percentage: 50 },
+ { color: "#9FE6B8", percentage: 60 },
+ { color: "#E690D1", percentage: 80 },
+ { color: "#E7BCF3", percentage: 100 },
+ ],
+ };
+ },
+ mounted() {
+ this.tableH = window.innerHeight - 135;
+ this.getData();
+ },
+ methods: {
+ dateFormatter(time) {
+ if (time) {
+ var year = time.getFullYear();
+ var month = time.getMonth() + 1;
+ var date = time.getDate();
+ var hour = time.getHours();
+ var minute = time.getMinutes();
+ var second = time.getSeconds();
+ return (
+ this.add0(year) +
+ "-" +
+ this.add0(month) +
+ "-" +
+ this.add0(date) +
+ " " +
+ this.add0(hour) +
+ ":" +
+ this.add0(minute) +
+ ":" +
+ this.add0(second)
+ );
+ } else {
+ return 0;
+ }
+ },
+ socketReplay() {
+ if (this.playVideo) {
+ this.playVideo.pause();
+ this.playVideo = null;
+ }
+ },
+ rePlay(scope) {
+ this.loading = true;
+ if (scope.row.stopTime) {
+ let startTime = this.dateFormatter(
+ new Date(new Date(scope.row.startTime).getTime())
+ );
+ let endTime = this.dateFormatter(
+ new Date(new Date(scope.row.stopTime).getTime() + 1000 * 60 * 180)
+ );
+
+ let param = new URLSearchParams();
+ param.append("method", "mutipleReview");
+ param.append("instruct", 1);
+ param.append("playType", 1);
+ param.append("hls", 1);
+ param.append("key", 123456);
+ param.append("monitorpointId", scope.row.monitorpointId);
+ param.append("frequencyValue", scope.row.frequency);
+ param.append("startTime", startTime);
+ param.append("endTime", endTime);
+
+ this.$post(window.equipmentURL + "FRP/NetRequest.do", param).then(
+ (res) => {
+ if (res.success == "true") {
+ this.socketPlay = true;
+ this.playVideo = this.$refs.socketVidoPlay;
+ if (Hls.isSupported()) {
+ var hls = new Hls();
+ hls.loadSource(res.url);
+ hls.attachMedia(this.playVideo);
+ hls.on(Hls.Events.MANIFEST_PARSED, function () {
+ this.playVideo.play();
+ });
+ this.loading = false;
+ } else if (
+ this.playVideo.canPlayType("application/vnd.apple.mpegurl")
+ ) {
+ this.playVideo.src = res.url;
+ this.playVideo.addEventListener("loadedmetadata", function () {
+ this.playVideo.play();
+ });
+ this.loading = false;
+ }
+ } else {
+ this.$message.error(res.msg);
+ this.loading = false;
+ }
+ }
+ );
+ } else {
+ this.$message.warning("灏氭湭鏈夊洖鏀�");
+ this.loading = false;
+ }
+ },
+ handleSizeChange(size) {
+ this.pageSize = size;
+ this.getData();
+ },
+ handleCurrentChange(page) {
+ this.pageNo = page;
+ this.getData();
+ },
+ getOptions() {
+ this.$getJSON(
+ window.backstageURL +
+ "dataservice/getNoTokenData?bid=getChannelSettingB"
+ ).then((res) => {
+ this.options = [];
+ let tmpArr = res.data.data[0];
+ tmpArr.forEach((item) => {
+ let oneOption = {
+ value: item.monitorpointId,
+ label: item.monitorpointName,
+ };
+ this.options.push(oneOption);
+ });
+ });
+ },
+ handleChange(value) {
+ this.queryParams.determine = value;
+ },
+ getData() {
+ this.loading = true;
+ let typeValue = this.formatType(this.type);
+
+ let dateValue =
+ this.search.valueDay == ""
+ ? "2021"
+ : this.formatDate(this.search.valueDay);
+
+ let tmeValue =
+ this.type == "鏃堕棿娈�" ? this.search.valueTime.split(":")[0] : "";
+
+ this.$getJSON(window.backstageURL + "dataservice/getNoTokenData", {
+ bid: "getRecordHistory",
+ isUnderWay: this.isUnderWayValue,
+ querymode: typeValue,
+ timevalue1: dateValue,
+ timevalue2: tmeValue,
+ monitorpointid: this.determine,
+ frequency: this.search.search_fm,
+ pageno: this.pageNo,
+ pagesize: this.pageSize,
+ }).then((res) => {
+ this.loading = false;
+ this.tableData = res.data.data[0];
+ this.totalCount = Number(res.data.data[1][0].counter);
+ });
+ },
+
+ formatType(type) {
+ if (type == "鏃堕棿娈�") {
+ return "time";
+ } else if (type == "鍗曟棩") {
+ return "day";
+ } else if (type == "鍗曟湀") {
+ return "month";
+ } else if (type == "骞村害") {
+ return "year";
+ }
+ },
+
+ formatDate(date) {
+ if (date) {
+ let year = date.getFullYear();
+ let month = date.getMonth() + 1;
+ let day = date.getDate();
+
+ if (this.type == "骞村害") {
+ return year;
+ } else if (this.type == "鍗曟湀") {
+ return year + "-" + this.add0(month);
+ } else if (this.type == "鍗曟棩" || this.type == "鏃堕棿娈�") {
+ return year + "-" + this.add0(month) + "-" + this.add0(day);
+ } else {
+ return "";
+ }
+ }
+ },
+
+ add0(val) {
+ return val < 10 ? "0" + val : val;
+ },
+ },
+};
+</script>
+<style lang="scss" scope>
+</style>
\ No newline at end of file
diff --git a/bigScreen/src/views/whiteList/components/WhiteListEdit.vue b/bigScreen/src/views/whiteList/components/WhiteListEdit.vue
new file mode 100644
index 0000000..634cbc9
--- /dev/null
+++ b/bigScreen/src/views/whiteList/components/WhiteListEdit.vue
@@ -0,0 +1,144 @@
+<template>
+ <el-dialog :title="title" :visible.sync="visible" width="60%" top="3vh">
+ <el-form label-position="right" label-width="80px" size="mini">
+ <el-form-item label="鐢靛彴">
+ <el-input v-model="form.name" auto-complete="off"></el-input>
+ </el-form-item>
+ <el-form-item label="棰戠巼">
+ <el-slider
+ v-model="form.frequency"
+ show-input
+ :min="540"
+ :max="1600"
+ :step="9"
+ >
+ </el-slider>
+ </el-form-item>
+ <el-form-item label="鍦板尯">
+ <el-select v-model="form.area" filterable placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="(item, i) in areas"
+ :key="i"
+ :label="item"
+ :value="item"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鏃堕棿娈�">
+ <week-time
+ :weekTimes="typeof form.runtime == 'object' ? form.runtime : {}"
+ @change="weekTimeChange"
+ ></week-time>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="visible = false" size="mini">鍙� 娑�</el-button>
+ <el-button type="primary" @click="save" size="mini">淇濆瓨</el-button>
+ </div>
+ </el-dialog>
+</template>
+<script>
+import WeekTime from "vue-week-time";
+export default {
+ props: ["data"],
+ watch: {
+ data: {
+ handler(n, o) {
+ if (this.data != "" && this.data != null) {
+ this.title = "缂栬緫鐧藉悕鍗�";
+ this.form = JSON.parse(JSON.stringify(this.data));
+ this.form.frequency = Number(this.form.frequency);
+ } else {
+ this.title = "鏂板鐧藉悕鍗�";
+ this.form = {};
+ }
+ },
+ deep: true,
+ },
+ },
+ components: {
+ "week-time": WeekTime,
+ },
+ mounted() {},
+
+ methods: {
+ weekTimeChange(weekTime, weekTimeStr) {
+ this.form.runtime = weekTime;
+ },
+ save() {
+ this.visible = false;
+ if (this.form.id) {
+ this.$getJSON(
+ window.backstageURL +
+ "dataservice/getNoTokenData?bid=update_white_freq",
+ this.form
+ ).then((res) => {
+ this.$message.success("淇敼鎴愬姛");
+ });
+ } else {
+ this.form.runtime = JSON.stringify(this.form.runtime);
+ this.form.id = "";
+ this.form.status = "搴旂敤涓�";
+ this.form.bid = "update_white_freq";
+ this.$getJSON(
+ window.backstageURL + "dataservice/getNoTokenData",
+ this.form
+ ).then((res) => {
+ this.$message.success("鏂板鎴愬姛");
+ });
+ }
+ this.$emit("getData");
+ },
+ show() {
+ this.visible = true;
+ },
+ addTime(day) {
+ day.timespan.push({
+ value: [new Date(), new Date()],
+ });
+ },
+ addDay() {
+ this.form.runtime.push({
+ weekday: "鍛ㄤ竴",
+ timespan: [
+ {
+ value: [new Date(), new Date()],
+ },
+ ],
+ });
+ },
+ },
+ data() {
+ return {
+ title: "鏂板鐧藉悕鍗�",
+ areas: [
+ "鍏ㄥ競",
+ "闂佃",
+ "鍢夊畾",
+ "娴︿笢",
+ "鏉炬睙",
+ "濂夎搐",
+ "瀹濆北",
+ "閲戝北",
+ "闈掓郸",
+ "宕囨槑",
+ ],
+ visible: false,
+ form: {
+ name: "",
+ frequency: "",
+ runtime: [],
+ area: "",
+ status: "",
+ id: "",
+ },
+ };
+ },
+};
+</script>
+<style scoped>
+.week-time table {
+ height: 400px;
+}
+</style>
diff --git a/bigScreen/src/views/whiteList/components/WhiteListOfTask.vue b/bigScreen/src/views/whiteList/components/WhiteListOfTask.vue
new file mode 100644
index 0000000..c4d740a
--- /dev/null
+++ b/bigScreen/src/views/whiteList/components/WhiteListOfTask.vue
@@ -0,0 +1,113 @@
+<template>
+ <div>
+ <el-table
+ :data="data"
+ style="width: 100%; margin-bottom: 10px"
+ height="400"
+ border
+ stripe
+ size="mini"
+ v-loading="loading"
+ >
+ <el-table-column type="index" label="#"> </el-table-column>
+ <el-table-column
+ prop="frequency"
+ label="棰戠巼"
+ sortable
+ width="80"
+ class-name="custom-column"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="name"
+ label="鍚嶇О"
+ sortable
+ width="300"
+ class-name="custom-column"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="area"
+ label="鍦板尯"
+ align="center"
+ class-name="custom-column"
+ >
+ </el-table-column>
+ <el-table-column label="褰曢煶" align="center" class-name="custom-column">
+ <template slot-scope="scope">
+ <el-switch
+ v-model="scope.row.is_recording"
+ :active-value="1"
+ :inactive-value="0"
+ :width="35"
+ :ref="scope.row.id"
+ disabled
+ >
+ </el-switch>
+ </template>
+ </el-table-column>
+ </el-table>
+ <Pagination
+ ref="pagination"
+ totalCountOrURL="Terminal/cnt_WhiteListOfTask"
+ :params="queryParams"
+ @change="handlePageChange"
+ ></Pagination>
+ </div>
+</template>
+
+<script>
+import Pagination from "@/components/pageNations/Pagnations";
+export default {
+ props: ["whiteListIdArr"],
+ components: {
+ Pagination,
+ },
+ mounted() {
+ this.getData();
+ },
+ watch: {
+ whiteListIdArr() {
+ this.getData();
+ },
+ },
+ data() {
+ return {
+ data: [],
+ queryParams: {
+ page: 1,
+ size: 10,
+ },
+ loading: false,
+ };
+ },
+ methods: {
+ handlePageChange(params) {
+ this.queryParams.page = params.page;
+ this.queryParams.size = params.size;
+ this.getData();
+ },
+ getData() {
+ if (this.whiteListIdArr) {
+ this.loading = true;
+ let idArr = [];
+ for (let key in this.whiteListIdArr) {
+ idArr.push(key);
+ }
+ this.queryParams.options = [
+ {
+ type: "6",
+ name: "id",
+ value: idArr,
+ },
+ ];
+ } else {
+ this.data = [];
+ }
+ },
+ },
+};
+</script>
+
+<style scoped>
+</style>
diff --git a/bigScreen/src/views/whiteList/index.vue b/bigScreen/src/views/whiteList/index.vue
new file mode 100644
index 0000000..1ed3d74
--- /dev/null
+++ b/bigScreen/src/views/whiteList/index.vue
@@ -0,0 +1,283 @@
+<template>
+ <div class="app-container">
+ <el-row style="margin-top:20px">
+ <el-col :span="17" style="height: 45px;text-align: left;">
+ <span style="margin-left:50px">鐢靛彴鍚嶇О:</span>
+ <el-input
+ v-model="filterValue"
+ placeholder="璇疯緭鍏ョ數鍙板悕绉�"
+ style="width: 170px; margin-left: 20px"
+ size="mini"
+ >
+ </el-input>
+
+ <el-button
+ type="primary"
+ icon="el-icon-search"
+ size="mini"
+ @click="handleSearch"
+ style="margin-left: 20px"
+ >鏌ヨ</el-button
+ >
+ <el-button
+ type="info"
+ icon="el-icon-delete"
+ size="mini"
+ @click="handleClear"
+ >娓呯┖鏌ヨ</el-button
+ >
+ </el-col>
+ <el-col :span="3">
+ <el-button
+ type="danger"
+ plain
+ icon="el-icon-delete"
+ size="mini"
+ @click="deleteData"
+ >鎵归噺鍒犻櫎</el-button
+ >
+ </el-col>
+ <el-col :span="4" class="dropActions">
+ <drop-down :dropOption="dropOptions" @handleAct="dropActions">
+ </drop-down>
+ </el-col>
+ <el-col :span="24" class="Device">
+ <el-table
+ :data="tableData"
+ :height="tableH"
+ v-loading="loading"
+ stripe
+ size="small"
+ @selection-change="handleSelectionChange"
+ :key="key"
+ >
+ <el-table-column type="selection" width="35"> </el-table-column>
+ <el-table-column fixed prop="name" label="鐢靛彴" width="300">
+ </el-table-column>
+ <el-table-column prop="frequency" label="棰戠巼" width="80">
+ </el-table-column>
+ <el-table-column prop="area" label="鍦板尯" width="80">
+ </el-table-column>
+ <el-table-column label="杩愯鏃舵">
+ <template slot-scope="scope">
+ <span v-for="(time, i) in scope.row.runtime" :key="i">
+ <el-tag v-if="time.length > 0" size="small">
+ {{ PraseWeekday(i) }}
+ <el-tag type="warning" size="mini">{{
+ PraseHour(time)
+ }}</el-tag>
+ </el-tag>
+ </span>
+ </template>
+ </el-table-column>
+ <el-table-column fixed="right" label="鎿嶄綔" width="60">
+ <template slot-scope="scope">
+ <el-button type="text" size="small" @click="edit(scope.$index)"
+ >缂栬緫</el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-col>
+ <el-col :span="3"></el-col>
+ <!--缂栬緫-->
+ <white-list-edit
+ ref="edit"
+ :data="tableData[selectd_index]"
+ @save="getData"
+ >
+ </white-list-edit>
+ </el-row>
+ </div>
+</template>
+<script>
+import Search from "@/components/searchs/Search.vue";
+import DropDown from "@/components/dropdowns/DropDown.vue";
+import WhiteListEdit from "./components/WhiteListEdit.vue";
+import WhiteListOfTask from "./components/WhiteListOfTask";
+import filterOptions from "@/utils/filterOptions.js";
+
+export default {
+ components: {
+ Search,
+ WhiteListEdit,
+ DropDown,
+ WhiteListOfTask,
+ },
+
+ data() {
+ return {
+ filterValue: "",
+ key: false,
+ allData: [],
+ tableData: [],
+ tableH: null,
+ otherAct: [{ item: "缂栬緫", id: "", type: "text" }],
+ dropOptions: [{ item: "鏂板鐢靛彴鐧藉悕鍗�", id: 1 }],
+ filter: filterOptions.WhiteList,
+ queryParams: {
+ page: 1,
+ size: 10,
+ },
+ loading: false,
+ selectdList: [],
+ selectd_index: "",
+ whiteListVisible: false,
+ whitelist: null,
+ };
+ },
+ mounted() {
+ this.tableH = window.innerHeight - 125 + "px";
+ this.getData();
+ },
+ methods: {
+ handleClear() {
+ this.filterValue = "";
+ this.getData();
+ },
+ handleSearch() {
+ let tmpData = [];
+ this.allData.forEach((item) => {
+ if (item.name == this.filterValue) {
+ tmpData.push(item);
+ }
+ });
+ this.tableData = tmpData;
+ this.tableData.forEach((item) => {
+ item.runtime = JSON.parse(item.runtime);
+ });
+ this.key = !this.key;
+ },
+ handleSelectionChange(a) {
+ let ids = [];
+ for (let i = 0; i < a.length; i++) {
+ const element = a[i];
+ ids.push(element.id);
+ }
+ this.selectdList = ids;
+ },
+ parseFreqRange(range) {
+ if (range.length == 1) {
+ return `${range[0]}`;
+ } else {
+ return `${range[0]}-${range[1]}`;
+ }
+ },
+ deleteData() {
+ if (this.selectdList && this.selectdList.length > 0) {
+ this.$confirm(
+ `${this.selectdList.length}鏉$櫧鍚嶅崟灏嗚鍒犻櫎,鏄惁缁х画?`,
+ "鎻愮ず",
+ {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ type: "warning",
+ }
+ )
+ .then(() => {
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData",
+ {
+ bid: "delete_white_freq",
+ ids: JSON.stringify(this.selectdList),
+ }
+ ).then((res) => {
+ this.getData();
+ this.$message.success("鍒犻櫎鎴愬姛");
+ });
+ })
+ .catch(() => {});
+ } else {
+ this.$message.error("灏氭湭閫夋嫨!");
+ }
+ },
+ showWhiteList(data) {
+ this.whitelist = data;
+ this.whiteListVisible = true;
+ },
+ handlePageChange(params) {
+ this.queryParams.page = params.page;
+ this.queryParams.size = params.size;
+ this.getData();
+ },
+ handleTotal(data) {},
+ getData() {
+ this.loading = true;
+ this.tableData = [];
+ this.$getJSON(window.backstageURL +
+ "dataservice/getNoTokenData?bid=getWhiteFreqs"
+ ).then((res) => {
+ this.allData = JSON.parse(JSON.stringify(res.data.data));
+ this.tableData = JSON.parse(JSON.stringify(this.allData));
+
+ this.tableData.forEach((item) => {
+ if (item.runtime) {
+ item.runtime = JSON.parse(item.runtime);
+ }
+ else{
+ item.runtime = null
+ }
+ });
+ this.key = !this.key;
+ this.loading = false;
+ });
+ },
+ SearchFilter(filter) {
+ this.queryParams.options = filter;
+ this.queryParams.page = 1;
+ this.getData();
+ },
+ dropActions(command) {
+ switch (command.id) {
+ case 1: //鏂板
+ (this.selectd_index = ""), this.$refs["edit"].show();
+ break;
+ }
+ },
+ edit(index) {
+ this.selectd_index = index;
+ this.$refs["edit"].show();
+ },
+ PraseWeekday(i) {
+ switch (i * 1) {
+ case 1:
+ return "鍛ㄤ竴";
+ case 2:
+ return "鍛ㄤ簩";
+ case 3:
+ return "鍛ㄤ笁";
+ case 4:
+ return "鍛ㄥ洓";
+ case 5:
+ return "鍛ㄤ簲";
+ case 6:
+ return "鍛ㄥ叚";
+ case 7:
+ return "鍛ㄦ棩";
+ }
+ },
+ PraseHour(array) {
+ let result = "";
+ for (let i = 0; i < array.length; i++) {
+ const element = array[i];
+ if (i == 0) {
+ result += element;
+ } else if (i == array.length - 1) {
+ result += `~${element}`;
+ } else if (element + 1 < array[i + 1]) {
+ result += `~${element} ${element}`;
+ }
+ }
+ return result;
+ },
+ updata(data) {
+ for (var key in data) {
+ this.data[this.selectd_index][key] = data[key];
+ }
+ },
+ },
+};
+</script>
+<style lang="scss">
+
+</style>
\ No newline at end of file
diff --git a/bigScreen/vue.config.js b/bigScreen/vue.config.js
new file mode 100644
index 0000000..3a23501
--- /dev/null
+++ b/bigScreen/vue.config.js
@@ -0,0 +1,32 @@
+const path = require("path");
+function resolve(dir) {
+ return path.join(__dirname, dir);
+}
+
+module.exports = {
+ outputDir: "dist", //build杈撳嚭鐩綍
+ assetsDir: "assets", //闈欐�佽祫婧愮洰褰曪紙js, css, img锛�
+ lintOnSave: false, //鏄惁寮�鍚痚slint
+ configureWebpack: {
+ externals: {
+ BMap: "BMap",
+ },
+ },
+ runtimeCompiler: true,
+ publicPath: "./",
+ chainWebpack(config) {
+ // set svg-sprite-loader
+ config.module.rule("svg").exclude.add(resolve("src/icons")).end();
+ config.module
+ .rule("icons")
+ .test(/\.svg$/)
+ .include.add(resolve("src/icons"))
+ .end()
+ .use("svg-sprite-loader")
+ .loader("svg-sprite-loader")
+ .options({
+ symbolId: "icon-[name]",
+ })
+ .end();
+ },
+};
diff --git a/deploy/2021-11-24-deploy/dist-s.zip b/deploy/2021-11-24-deploy/dist-s.zip
new file mode 100644
index 0000000..905e2de
--- /dev/null
+++ b/deploy/2021-11-24-deploy/dist-s.zip
Binary files differ
diff --git a/deploy/2021-11-24-deploy/dist.zip b/deploy/2021-11-24-deploy/dist.zip
new file mode 100644
index 0000000..63fdc58
--- /dev/null
+++ b/deploy/2021-11-24-deploy/dist.zip
Binary files differ
--
Gitblit v1.9.1