Browse Source

Feature: 初始化

wudi 5 years ago
commit
d4244d7e20

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
+node_modules/

+ 10 - 0
README.md

@@ -0,0 +1,10 @@
+# Photopea 本地化
+
+## Get started
+### 使用node
+```
+yarn install # npm install
+yarn start # npm start
+```
+### 使用Web server
+挂载public目录即可

+ 22 - 0
index.js

@@ -0,0 +1,22 @@
+const Koa = require('koa')
+const koaBody = require('koa-body')
+const send = require('koa-send')
+const path = require('path')
+
+const root = path.resolve(__dirname, 'public')
+
+const app = new Koa()
+
+app.use(async (ctx, next) => {
+    console.log(`${ctx.method} ${ctx.path}`)
+    return next()
+})
+
+app.use(koaBody())
+
+app.use(async (ctx) => {
+    return send(ctx, ctx.path, { root, index: 'index.html' })
+})
+
+app.listen(8040)
+console.log('Server started')

+ 16 - 0
package.json

@@ -0,0 +1,16 @@
+{
+  "name": "photopea",
+  "version": "1.0.0",
+  "main": "index.js",
+  "license": "MIT",
+  "private": true,
+  "scripts": {
+    "start": "node index.js"
+  },
+  "dependencies": {
+    "koa": "^2.13.0",
+    "koa-body": "^4.2.0",
+    "koa-router": "^10.0.0",
+    "koa-send": "^5.0.1"
+  }
+}

File diff suppressed because it is too large
+ 3 - 0
public/code/DBS.js


File diff suppressed because it is too large
+ 44 - 0
public/code/ext.js


File diff suppressed because it is too large
+ 80 - 0
public/code/pp.js


BIN
public/font/mem5YaGs126MiZpBA-UN7rgOUuhs.ttf


BIN
public/font/mem6YaGs126MiZpBA-UFUK0Zdcg.ttf


BIN
public/font/mem8YaGs126MiZpBA-UFVZ0e.ttf


BIN
public/font/memnYaGs126MiZpBA-UFUKWiUNhrIqY.ttf


+ 24 - 0
public/font/open-sans.css

@@ -0,0 +1,24 @@
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 400;
+  src: url(mem6YaGs126MiZpBA-UFUK0Zdcg.ttf) format('truetype');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: italic;
+  font-weight: 700;
+  src: url(memnYaGs126MiZpBA-UFUKWiUNhrIqY.ttf) format('truetype');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 400;
+  src: url(mem8YaGs126MiZpBA-UFVZ0e.ttf) format('truetype');
+}
+@font-face {
+  font-family: 'Open Sans';
+  font-style: normal;
+  font-weight: 700;
+  src: url(mem5YaGs126MiZpBA-UN7rgOUuhs.ttf) format('truetype');
+}

BIN
public/img/cta.png


+ 20 - 0
public/index.html

@@ -0,0 +1,20 @@
+<!DOCTYPE html> 
+
+<html>
+	<head>
+		<meta charset="utf-8" />
+		<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0" />
+		<meta name="theme-color" content="#474747">
+		<title>Photopea | Online Photo Editor</title>
+		<meta name="description" content="Photopea Online Photo Editor lets you edit photos, apply effects, filters, add text, crop or resize pictures. Do Online Photo Editing in your browser for free!" />
+		<link rel="stylesheet" href="style/all.css" />
+		<link rel="stylesheet" href="font/open-sans.css" />
+	</head>
+
+	<body class="theme0">
+		<script> window.jsLoadedOK=true; </script> <!-- ads.js -->
+		<script src="code/ext.js"></script>	
+		<script src="code/DBS.js"></script>
+		<script src="code/pp.js"></script>	
+	</body>
+</html>

BIN
public/rsrc/basic/basic.zip


+ 1154 - 0
public/style/all.css

@@ -0,0 +1,1154 @@
+
+
+	*{
+		border-style: solid;
+		border-width: 0;
+		border-color: var(--brdr);
+		column-rule-style:solid;
+		column-rule-color: var(--bg-panel);	
+	}
+	
+	body, button, input, textarea, select {  font-family: "Open Sans", Sans-Serif;  }
+	
+	.autoscale
+	{
+		width : var(--img20);
+		height: var(--img20);
+	}
+	
+	.listitem {
+		border-bottom-width: 1px;
+		padding: 0.2em;
+	}
+	
+	.gsicon {  
+		filter: invert(  var(--gs-invert)  )  drop-shadow(0 var(--sh-dy) 0 var(--sh-clr));
+		-webkit-user-drag: none;
+		user-drag: none;
+		-moz-user-drag: none;
+	}
+	
+	.svggallery {
+		text-shadow:none;
+		line-height:0;
+	}
+	.svggallery svg {
+		margin:0 4px 4px 0;
+		cursor: pointer;
+	}
+	
+	.colorpicker .fitem .flabel, .numlist .flabel {
+		display: inline-block;
+		min-width : 17px;
+		margin-left:15px;
+	}
+	
+	body, input, select, button {
+		font-size: 13px;
+	}
+
+	body, button{
+		margin:0;
+		padding: 0;
+		background-color: var(--bg-color);
+		
+		user-select: none;
+		-moz-user-select: none;
+		-webkit-user-select: none;
+		
+		cursor: default;
+		overflow-x: hidden;
+		/*overflow: hidden;*/
+	}
+	.app , button {
+		text-shadow:  0 var(--sh-dy) 0 var(--sh-clr);
+	}
+	
+	.app {
+		background-color: var(--bg-color);
+		color: var(--text-color);
+		position:relative;
+	}
+	
+	.intro {
+		box-shadow: 0px 40px 70px rgba(0,0,0,0.35);
+		border-radius:20px;
+		color: #e6e6e6;
+		text-shadow:  none;
+		line-height:1.7em;
+	}
+	
+	.intro .labelitem {
+		padding: 0.15em 0.3em;
+	}
+	
+	.intro button {
+		color: #e6e6e6;
+		font-size: 1em;
+		margin: 0 0em 0 0;
+		cursor: pointer;
+		text-shadow:  none;
+		background-color:rgba(255,255,255,0);
+		padding: 0.15em 0.4em;
+		border-radius: 0.4em;
+	}
+	.intro button:hover {
+		background-color:rgba(0,0,0,0.35);
+	}
+	
+	
+	
+	hr {
+		border: 0;
+		height: 1px;
+		
+		background: var(--bg-panel);
+	}
+	
+	.disabled
+	{
+		opacity:0.5; 
+		pointer-events: none;
+	}
+	
+	.bordered
+	{
+		border: 1px solid rgba(0,0,0,0.33);
+	}
+	
+	.padded
+	{
+		padding:0.5em;
+	}
+	
+	.marged
+	{
+		margin:0.5em;
+	}
+	
+	.flexrow 
+	{
+		display:flex;
+		flex-flow:row;
+	}
+	
+	.cell
+	{
+		display:table-cell;
+		vertical-align:top;
+	}
+	
+	.form 
+	{
+		line-height:2.3em;
+	}
+	.form .fitem {
+		margin-right: 6px;
+	}
+	
+	.vlist .fitem
+	{
+		display:block;
+	}
+	
+	.sbar{
+		border-left-width: 1px;
+		position:relative;
+	}
+	
+	.sbar .top {
+		color: #e0e0e0;
+		background-color: #252525; /*#413d39;*/
+		font-weight: bold;
+		font-size:0.8em;
+		text-align: center;
+		padding: 0px 2px;
+		cursor:pointer;
+		height:11px;
+	}
+	
+	.toolbar{
+		border-right-width:1px;
+	}
+	.toolbar hr{
+		margin:2px 0;
+	}
+	
+	.toolbar .tools {
+		padding:2px;
+		display: inline-flex;
+		flex-flow: column wrap;
+	}
+	
+	.toolbar .tools .toolbtn {
+		border-radius:3px;
+		margin:2px 3px 1px 3px;
+		padding:4px 4px;
+	}
+	.toolbar .tools button {  position:relative;  }
+	
+	.toolbar .tools button img 
+	{
+		width:var(--img20);
+		height:var(--img20);
+		/*width:20px;
+		height:20px;*/
+		vertical-align:middle;
+	}
+	.toolbar .scont {
+		margin: 3px 0 -6px 0;
+	}
+	.toolbar .switch
+	{
+		margin: 0 1px 0 1px;
+		width: 15px;
+		height: 16px;
+		display:inline-block;
+		padding: 0px;
+		text-align:center;
+		border-width: 1px;
+		border-radius: 4px;
+		font-size: 12px;
+		background-color:var(--bg-color);
+		overflow:hidden;
+	}
+	
+	
+	
+	.rightbar {
+		display:flex; 
+		flex-flow: row;
+	}
+	.rightbar .block{
+		/*min-width: 18em;*/
+	}
+	.rightbar .collapsed{
+		width:3em;
+	}
+	.rightbar .collapsed button {
+		display: block;
+		margin:0.3em;
+	}
+	
+	.rightbar .float
+	{
+		position:absolute;
+		right: 105%;
+		/*border-width: 1px;*/
+		box-shadow: 0px 8px 40px rgba(0,0,0,0.35);
+		background-color: var(--bg-color);
+	}
+	
+	.mainblock
+	{
+		background-color: var(--bg-canvas);
+		border-bottom-width:0 !important;
+	}
+	.mainblock canvas {  display:block;  }
+	
+	.alertcont
+	{
+		position:absolute;
+		width:50%;
+		left:25%;
+		max-width:700px;
+		/*pointer-events:none;*/
+		z-index: 10;
+		margin-top:1em;
+	}
+	
+	.alertpanel
+	{
+		font-size: 1.4em;
+		margin-bottom:1em;
+		background-color:#ffffff;
+		color: #000000;
+		padding:0.4em;
+		border-radius:0.5em;
+		text-align:center;
+		text-shadow:none;
+		box-shadow: rgba(0,0,0,0.5) 0 0 1em;
+	}
+	.tpanel {  /*  temporary panel  */
+		transition: all 0.2s cubic-bezier(0.240, 0.575, 0.665, 1.565);
+		transform: scale(0.6);
+		opacity:0;
+	}
+	
+	
+	.panelblock
+	{
+		/*border-top-width:1px;*/
+		border-bottom-width:1px;
+		border-bottom-color: var(--bg-panel);
+	}
+	
+	.highlight 
+	{
+		box-shadow: inset 0 0 10px #33aaff  !important;
+	}
+	
+	.block .panelhead
+	{
+		/*background: linear-gradient(to bottom, rgba(255,255,255,0.06) 0%,  rgba(255,255,255,0.02) 50%, rgba(255,255,255,0) 100%);*/
+		background-color: var(--bg-panel);
+		/*box-shadow: inset 0px -10px 16px rgba(0,0,0,0.08);*/
+		padding-top: 3px;
+		/*border-bottom-width: 1px;*/
+		/*height:1.6em;*/
+	}
+	.block .panelhead .label {
+		pointer-events: none;
+	}
+	
+	
+	.block .panelhead div
+	{
+		font-weight: bold;
+		padding:0.1em 0.4em 0.2em 0.4em;
+		display:inline-block;
+		border-right-width: 1px;
+		border-right-color: var(--brdrDrk);
+		
+		border-top-width: 1px;
+		border-top-color: var(--brdrLgt);
+	}
+	
+	.block .panelhead .active
+	{
+		background-color: var(--bg-color);
+	}
+	
+	.block .panelhead div .cross
+	{
+		background-image: var(--icon_cross);
+		filter: invert(  var(--icon_cross_invrt)  );
+		background-repeat: no-repeat;
+		background-position: center; 
+		background-size: cover;         /* Generic*/
+		margin: 0.2em 0.2em 0 0.8em;
+		display:inline-block;
+		width: 0.8em;
+		height: 0.8em;
+		cursor: pointer;
+	}
+	
+	
+	.block .pbody .fitem
+	{
+		margin-right: 6px;
+	}
+	
+	
+	.scrollable
+	{
+		overflow-x: hidden;
+		overflow-y: scroll;
+		/* for Firefox: */
+		scrollbar-color: var(--brdrDrk) rgba(0,0,0, var(--alphaDark) );
+		scrollbar-width: thin;
+	}
+	
+	
+	.scrollable::-webkit-scrollbar {
+	  width: 10px;
+	  background: rgba(0,0,0, var(--alphaDark) ); 
+	}
+	.scrollable::-webkit-scrollbar-thumb {
+		background: var(--brdrDrk); 
+		margin:2px;
+	}
+	
+	.selected
+	{
+		background-color: rgba(0,0,0, var(--alphaDark) );	
+	}
+	
+	
+	
+	
+	
+	
+	
+		
+	
+	
+
+	.lpbody {
+		/*width: 21em;*/
+	}
+	
+	.lphead, .lpfoot 
+	{
+		padding:2px;
+	}
+	.lpineck {
+		/*font-size: 12px;*/
+	}
+	
+	.lphead {
+		border-bottom-width: 1px;
+		margin-bottom:-1px;
+	}
+	.block .pbody .lphead .fitem button {
+		margin-right:0;
+	}
+	
+	.lpfoot
+	{
+		border-top-width: 1px;
+		text-align:right;
+		height:22px;
+	}
+	.lpfoot  img
+	{
+		width:15px;
+		height:15px;
+	}
+	.lpfoot button { padding-bottom:0; }
+	
+	.layeritem
+	{
+		margin-top: -1px;
+		border-top-width: 1px;
+		cursor: pointer;
+	}
+	
+	
+	.styleitem  .head
+	{
+		border: none;
+		height:22px;
+	}
+	
+	
+	.layeritem  .artb 
+	{
+		/*border-right-width: 3px;*/
+		border-bottom-width: 2px;
+		border-top-width: 2px;
+		/*box-shadow:         inset 0 0 4px var(--bg-panel);*/
+		/*background-color: var(--bg-panel);*/
+	}
+	.layeritem  .artb.selected 
+	{
+		/*background-color: var(--brdr);*/
+	}
+	
+
+	
+	.layeritem .headL div, .layeritem .headR div, .styleitem .head div
+	{
+		display:inline-block;
+		height:100%;
+		background-repeat: no-repeat;
+		background-position: center; 
+	}
+	
+	.layeritem  .head div, .styleitem .head
+	{
+		overflow:hidden;
+		white-space: nowrap;
+	}
+	
+	.head .headL
+	{	
+		height:100%;
+		width:100%;
+		display:inline-block;
+	}
+	
+	.head { position:relative; }
+	.head .headR
+	{
+		position:absolute;
+		right:0;
+		display:inline-block;
+		height:100%;
+	}
+	
+	.head div {
+		vertical-align:top;  /*  a bug in Safari  */
+	}
+	
+	.head .label 
+	{
+		padding: 0 7px;
+		line-height: 27px;
+		/*max-width: 140px;*/
+	}
+	.head textarea
+	{
+		
+	}
+	
+	.head .eye
+	{
+		width: 28px;
+		background-image: var(--icon_eye);/*url("../img/lrs/eye.png");*/
+		filter: invert(  var(--icon_eye_invrt)  );
+		/*background-size: 15px 15px;*/
+	}
+	.head .cmark
+	{
+		width: 22px;
+		background-image: var(--icon_checkmark);/*url("../img/lrs/eye.png");*/
+		filter: invert(  var(--icon_checkmark_invrt)  );
+		/*background-size: 15px 15px;*/
+	}
+	
+	
+	.head  .open
+	{
+		background-image: var(--icon_arrow_down);
+		filter: invert(  var(--icon_arrow_down_invrt)  );
+		background-size: 15px 15px;
+		width:15px;
+	}
+	
+	.head  .closed
+	{
+		background-image: var(--icon_arrow_right);
+		filter: invert(  var(--icon_arrow_right_invrt)  );
+		background-size: 15px 15px;
+		width:15px;
+	}
+	
+	.head .chain
+	{
+		width:8px;
+		background-image: var(--icon_chain);
+		filter: invert(  var(--icon_chain_invrt)  );
+		background-size: 18px 18px;
+	}
+	
+	.head .clipp
+	{
+		width:1em;
+		background-image: var(--icon_clipping);
+		filter: invert(  var(--icon_clipping_invrt)  );
+		background-size: 11px 11px;
+	}
+	
+	.head .link
+	{
+		width:1.5em;
+		background-image: var(--icon_link);
+		filter: invert(  var(--icon_link_invrt)  );
+		background-size: 15px 15px;
+	}
+	
+	.head .lock
+	{
+		width:1.5em;
+		background-image: var(--icon_lock);
+		filter: invert(  var(--icon_lock_invrt)  );
+		background-size: 14px 14px;
+	}
+	
+	.head .lrfx
+	{
+		width:1.5em;
+		background-image: var(--icon_fx);
+		filter: invert(  var(--icon_fx_invrt)  );
+		background-size: 15px 15px;
+	}
+	
+	.head .arfx
+	{
+		width:1em;
+		border-left-width:1px;
+	}
+	
+	.head .folder
+	{
+		width:1.7em;
+		background-image: var(--icon_folder);
+		filter: invert(  var(--icon_folder_invrt)  );
+		background-size: 15px 15px;
+	}
+	.head  canvas
+	{
+		border:1px solid black;
+		margin:3px;
+	}
+	
+	.head .active canvas
+	{
+		outline: 2px dashed var(--text-color);
+		outline-offset:0px;
+		/*border: 1px dashed var(--text-color);
+		margin: 3px;*/
+	}
+	
+
+	
+	
+	
+	
+	
+	
+	
+	
+	
+		
+	
+	
+	
+	
+	.hpbody  .listitem {  cursor: pointer;  padding:0.3em; }
+	
+	.topbar{
+		/*
+		border-bottom-width: 1px;
+		border-bottom-color:    var(--brdrDrk);
+		*/
+		/*height:32px;*/
+	}
+	
+	.topbar  button {
+		padding-left:6px;
+		padding-right:6px;
+		margin:4px;
+	}
+	
+	.topbar .bbtn {
+		margin: 3px 4px 2px 4px;
+	}
+	
+	
+	.contextpanel{
+		background-color: #fff;
+		min-width : 10em;
+		box-shadow: 0px 0px 20px rgba(0,0,0,0.2);
+		color: #000000;
+		text-shadow:  none;
+	}
+	
+	.contextpanel .check {
+		display: inline-block;
+		width:15px;
+	}
+	
+	.contextpanel .thumb
+	{
+		width : var(--img20);
+		height: var(--img20);
+		vertical-align: middle;
+		margin: -0.6em 0.8em -0.5em -0.5em;
+		filter: invert(  0.2  );
+	}
+	
+	.contextpanel hr{
+		margin:0.25em 0;
+		background: #bebebe;
+	}
+	
+	.contextpanel div {
+		padding: 0.5em 1em 0.5em 0.7em;
+	}
+	
+	.contextpanel .enab
+	{
+		/*cursor:pointer;*/
+	}
+	
+	.contextpanel .enab:hover, .contextpanel .active {
+		/*color:#fff;*/
+		background-color: rgba(190,230,255,1);
+	}
+	
+	.contextpanel  .disab {
+		color:#bbb;
+		pointer-events: none;
+	}
+	
+	.contextpanel .right
+	{
+		float:right;
+		margin-left:2em;
+		opacity:0.7;
+	}
+			
+	.fitem {
+		display:inline-block;
+	}
+	
+	input, textarea, .labelitem {
+		margin: 2px;
+		padding: 3px;
+		box-sizing: border-box;
+	}
+	input, textarea {		
+		background-color: var(--bg-input);
+		color: var(--text-color);
+		border-radius: 3px;
+	}
+	textarea {  vertical-align:top;  }
+	
+	
+	input[type='range']
+	{
+		vertical-align:middle;
+		height: 1.6em;
+		padding: 0;
+		/*background-color: #000000;*/
+		/*box-shadow:  inset 0 0 60px rgba(0,0,0,0.5)*/
+	}
+	.rangecont 
+	{
+		/*background-color: var(--bg-input);*/
+		/*background-color:rgba(0,0,0,0.1);*/
+		background-color: var(--bg-color);
+		padding-top: 0.2em;
+		padding-bottom: 0.3em;
+	}
+	
+	.mbox input {
+		margin-left: 0.7em;
+	}
+
+	
+	.tinput input
+	{
+		width:8em;
+	}
+	
+	.brushbutton img, .gradientbutton img  .contourbutton img{
+		display: inline-block;
+	}
+
+	.brushbutton {
+		
+	}
+	
+	.contourbutton {
+		line-height:2.1em;
+		
+	}
+	
+	
+	.ddmenu {
+		display:inline-block;
+	}
+	
+	.multicheck .slabel {
+		margin-right: 1em;
+	}
+	
+	.colorsample {
+		cursor:pointer;
+		width:2.2em;
+		height: 1.5em;
+		display:inline-block;
+		border-width: 3px;
+		margin-bottom:-0.65em
+	}
+	
+	.cswatch .colorsample {
+		width:1.3em;  height:1.3em;
+		margin-right: 0.1em;
+		border-width: 1px;
+		margin-bottom:-0.3em;
+	}
+	
+	
+	
+	.angleinput input {  width:3em;  }
+
+	
+	/*button img, button canvas, button svg, .mbox img*/
+	.fitem img, .fitem canvas, .fitem svg {
+		vertical-align: middle;
+	}
+	
+	.fillbutton canvas {
+		vertical-align:middle;
+		border-radius: 3px;
+		cursor:pointer;
+	}
+	
+	button, select {
+		padding: 2px 5px 3px 5px;
+		border-radius:3px;
+		color: var(--text-color);
+		-webkit-appearance: none;
+	}
+	
+	button {
+		text-align:center;
+		white-space: nowrap;
+		background-color: rgba(0,0,0,0);
+	}
+	
+	select {
+		margin-left:2px;
+		padding-right: 17px;
+		
+		 background-image:
+			linear-gradient(45deg, transparent 50%, var(--text-color) 50%),
+			linear-gradient(135deg, var(--text-color) 50%, transparent 50%);
+		  background-position:
+			calc(100% -  9px) calc(10px),
+			calc(100% -  4px) calc(10px);
+		  background-size:
+			5px 5px,
+			5px 5px;
+		  background-repeat: no-repeat;
+	}
+	
+	.active, button:hover { 
+		background-color: rgba(0,0,0, var(--alphaDark) );
+	}
+	.bactive, .bactive:hover { 
+		background-color: var(--bg-input);
+	}
+	.bbtn {
+		/*padding-left:5px;
+		padding-right:5px;*/
+		background-color: var(--bg-bbtn);
+		
+		border-top-width: 1px;
+		border-top-color: var(--brdrLgt);
+		border-bottom-width: 1px;
+		border-bottom-color:    var(--brdrDrk);
+		overflow:hidden;
+	}
+	.bbtn:hover {
+		background-color: var(--bg-bbtnOver);
+	}
+	
+	.spread {
+		width: 100%;
+	}	
+	
+	.nopadding {
+		margin: 0;
+		padding: 0;
+	}
+	
+	
+	
+	.imageset
+	{
+		/*overflow-y: scroll;*/
+		background-color: rgba(0,0,0, var(--alphaDark) );
+	}
+	
+	.imageset  .image
+	{
+		border-right: 1px solid rgba(0,0,0,0.2);
+		border-bottom: 1px solid rgba(0,0,0,0.2);
+		cursor: pointer;
+		float:left;
+	}
+	
+	.imageset .active
+	{
+		background-color: rgba(0,0,0,0.15);
+	}
+	
+	input[type='checkbox']
+	{
+		margin-right: 0.3em;
+		vertical-align:middle;
+		background-color: var(--bg-input); /**/
+		background-color: white;
+		opacity:0.8;
+	}
+	/*
+	input[type="checkbox"] + label:before {
+  border: 1px solid #333;
+  content: "";
+  display: inline-block;
+  font: 12px sans-serif;
+  font-weight:bold;
+  height: 12px;
+  margin-right:4px;
+  padding: 0;
+  vertical-align: middle;
+  width: 12px;
+  background: #fff;
+  color: #333;
+}
+input[type="checkbox"]:checked + label:before {  content: "\2713";  }
+*/
+
+
+	.rangedropinput button
+	{
+		margin:0;
+		padding:0.3em 0.1em;
+	}
+	
+	.rangedropinput input
+	{
+		margin-right:0;
+	}
+	
+	.trangeinput input[type='text']
+	{
+		margin-left:0;
+		margin-right:0;
+		width:32%;
+		text-align:right;
+	}
+	.trangeinput label
+	{
+		display:inline-block;
+		width:66%;
+	}
+	.trangeinput input[type='range']
+	{
+		margin-top: -10px;
+	}
+	
+	
+	
+	.cbox
+	{
+		padding:0em 0;
+	}
+	
+	
+	.fontitem
+	{
+		padding:3px 6px;
+		border-radius:0.3em;
+	}
+	.fontitem:hover {
+		/*background-color: rgba(255,255,255, 0.6);*/
+		box-shadow:  inset 0 0 0.2em rgba(0,0,0,1); /*bottom internal shadow*/ 
+	}
+	.fontitem  .label
+	{
+		display:inline-block; width:9em; overflow:hidden; white-space: nowrap;
+	}
+	.fontitem .thumb
+	{
+		display:inline-block; width:120px; height:20px;  margin-left:0.5em;
+		background: url(../rsrc/fonts/fonts.png);
+	}
+	
+	.fontitem .star {
+		display: inline-block;
+		background-position: center; 
+		background-repeat: no-repeat;
+		background-image: var(--icon_cshape);
+		filter: invert(  var(--icon_cshape_invrt)  );
+		background-size: var(--img20) var(--img20);
+		width: 20px;  height: 20px;
+		vertical-align: top;
+		margin-right:4px;
+	}
+	
+	
+	
+
+	.window
+	{
+		position:absolute;
+		z-index: 10;
+		background-color: var(--bg-color);
+		/*border: 1px solid;*/
+		min-width : 3em;
+		min-height: 2em;
+		top: 150px;
+		left: 150px;
+		box-shadow: 0px 8px 40px rgba(0,0,0,0.2);
+	}
+	
+	.wdisabled {
+		pointer-events: none;
+	}
+	
+	.window .vmargin
+	{
+		margin:0.5em 0;
+	}
+	
+	.window  .whead
+	{
+		font-size: 1.3em;
+		color: #ffffff;
+		background: linear-gradient(to bottom, #595959 0%,#626262 3%,#575757 7%,#3c3c3c 90%,#3a3a3a 97%,#2e2e2e 100%);
+		/*background: linear-gradient(to bottom, #59574e 0%,#626055 3%,#59574f 7%,#403f3a 90%,#41403b 97%,#383734 100%);*/
+		background-size: auto 100%;
+	}
+	
+	.window .whead  .wname
+	{
+		display: inline-block;
+		padding: 0.3em 0.5em;
+		text-shadow:  0 -1px 0 rgba(0,0,0,0.45);
+		font-weight: bold;
+	}
+	
+	.window .whead  .cross
+	{
+		width:0.8em;  
+		height:0.8em;
+		display:inline-block;
+		background-size: cover;  
+		font-size: 1.3em;
+		margin: 0.3em;
+		position:absolute;  right:0;
+		/*float : right;*/
+		cursor: pointer;
+	}
+	
+	
+	.window .wide
+	{
+		font-size: 1.2em;
+		display: block;
+	}
+	
+	.window .cbox{
+		margin-left:0.4em;
+	}
+	
+	.window .cbox, .window .angleinput {
+		display:inline-block;
+	}
+	
+	.window .body
+	{
+		padding: 1em;
+		/*line-height:1.6em;*/
+	}
+	
+	.window .body .form  .block
+	{
+		padding:1em;
+		border: 0.1em solid rgba(0,0,0,0.33);
+	}
+	
+	
+	.window .hbar > .fitem 
+	{
+		margin-right: 1em;
+	}
+	
+	
+	
+	
+	.window .imgcont
+	{
+		/*width:512px;
+		height:512px;*/
+		/*background-color: rgba(0,0,0,0.1);*/
+		text-shadow:none;
+		background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAAXNSR0IB2cksfwAAAAZQTFRF////yMjIXOIDQgAAABJJREFUeJxjYPjPgBXhEB7uAABycQ/xMT/uAgAAAABJRU5ErkJggg==);
+	}
+	
+	/*
+	.window .body .form .tinput .label,  .window .body .form .ddmenu .label
+	{
+		display:inline-block;
+		min-width:4em;
+	}
+	*/
+	
+	.window  .flabel
+	{
+		display:inline-block;
+		min-width:4em;
+	}
+	.label12  .flabel
+	{
+		display:inline-block;
+		min-width:12em;
+	}
+	
+	.window .noalign  .flabel
+	{
+		min-width:0;
+	}
+	.window .noalign .fitem
+	{
+		margin-right:1em;
+	}
+	
+	.window  h2 {
+		margin-bottom: 0.2em;
+	}
+	
+	table {
+		border-width:2px;
+		font-size: 1.2em;
+		text-align: center;
+		border-collapse: collapse;
+		margin: 6px 0 6px 0;
+	}
+	
+	table .left {
+		text-align:left;
+		width: 240px;
+	}
+	
+	table td, table th {
+		width:140px;
+		margin:0;
+		padding: 3px 10px;
+		border-width:1px 2px;
+	}
+	
+	table th { font-size: 1.3em; border-bottom-width: 2px; background-color:rgba(0,0,0, var(--alphaDark) );  }
+	table .lastrow { font-weight:bold; }
+	
+	
+	table .yes, table .no  { font-weight: bold; font-size:1.6em; }
+	
+	table .yes { background-color: rgba(0,255,0,0.2); }
+	
+	
+	
+	
+	
+	
+	
+
+	.confbar
+	{
+		border-top-width: 1px;
+		border-top-color: var(--brdr);
+		line-height:2.5em;
+	}
+	
+	.toolconf
+	{
+		display:flex;
+		flex-flow: row;
+	}
+
+	.confbar  .toolicon
+	{
+		width : var(--img20);
+		height: var(--img20);
+		margin: 5px 12px -4px 12px;
+		display: absolute;
+	}
+	
+	.confbar .body
+	{
+		
+	}
+	
+	.confbar .fitem {
+		margin-right: 0.35em;
+	}
+	
+	.confbar .body  > .fitem
+	{
+		margin-right: 1.2em;
+	}
+	
+	.floatcont
+	{
+		padding:0.5em;
+		background-color:var(--bg-color);
+		border-width: 1px;
+		/*box-shadow: 0px 8px 40px rgba(0,0,0,0.35);*/
+	}
+	

+ 1 - 0
public/sw.js

@@ -0,0 +1 @@
+self.addEventListener("fetch",function(e){});

+ 448 - 0
yarn.lock

@@ -0,0 +1,448 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@types/events@*":
+  version "3.0.0"
+  resolved "https://registry.npm.taobao.org/@types/events/download/@types/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
+  integrity sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc=
+
+"@types/formidable@^1.0.31":
+  version "1.0.31"
+  resolved "https://registry.npm.taobao.org/@types/formidable/download/@types/formidable-1.0.31.tgz#274f9dc2d0a1a9ce1feef48c24ca0859e7ec947b"
+  integrity sha1-J0+dwtChqc4f7vSMJMoIWefslHs=
+  dependencies:
+    "@types/events" "*"
+    "@types/node" "*"
+
+"@types/node@*":
+  version "14.14.10"
+  resolved "https://registry.npm.taobao.org/@types/node/download/@types/node-14.14.10.tgz?cache=0&sync_timestamp=1606763117372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-14.14.10.tgz#5958a82e41863cfc71f2307b3748e3491ba03785"
+  integrity sha1-WVioLkGGPPxx8jB7N0jjSRugN4U=
+
+accepts@^1.3.5:
+  version "1.3.7"
+  resolved "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
+  integrity sha1-UxvHJlF6OytB+FACHGzBXqq1B80=
+  dependencies:
+    mime-types "~2.1.24"
+    negotiator "0.6.2"
+
+any-promise@^1.1.0:
+  version "1.3.0"
+  resolved "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
+  integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
+
+bytes@3.1.0:
+  version "3.1.0"
+  resolved "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
+  integrity sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=
+
+cache-content-type@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.npm.taobao.org/cache-content-type/download/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c"
+  integrity sha1-A1zeKwjuISn0qDFeqPAKANuhRTw=
+  dependencies:
+    mime-types "^2.1.18"
+    ylru "^1.2.0"
+
+co-body@^5.1.1:
+  version "5.2.0"
+  resolved "https://registry.npm.taobao.org/co-body/download/co-body-5.2.0.tgz#5a0a658c46029131e0e3a306f67647302f71c124"
+  integrity sha1-WgpljEYCkTHg46MG9nZHMC9xwSQ=
+  dependencies:
+    inflation "^2.0.0"
+    qs "^6.4.0"
+    raw-body "^2.2.0"
+    type-is "^1.6.14"
+
+co@^4.6.0:
+  version "4.6.0"
+  resolved "https://registry.npm.taobao.org/co/download/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
+  integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
+
+content-disposition@~0.5.2:
+  version "0.5.3"
+  resolved "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
+  integrity sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=
+  dependencies:
+    safe-buffer "5.1.2"
+
+content-type@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
+  integrity sha1-4TjMdeBAxyexlm/l5fjJruJW/js=
+
+cookies@~0.8.0:
+  version "0.8.0"
+  resolved "https://registry.npm.taobao.org/cookies/download/cookies-0.8.0.tgz?cache=0&sync_timestamp=1570851324736&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcookies%2Fdownload%2Fcookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90"
+  integrity sha1-EpPOSzkXQKhAbjyYcOgoxLVPP5A=
+  dependencies:
+    depd "~2.0.0"
+    keygrip "~1.1.0"
+
+debug@^4.1.1:
+  version "4.3.1"
+  resolved "https://registry.npm.taobao.org/debug/download/debug-4.3.1.tgz?cache=0&sync_timestamp=1606566568533&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
+  integrity sha1-8NIpxQXgxtjEmsVT0bE9wYP2su4=
+  dependencies:
+    ms "2.1.2"
+
+debug@~3.1.0:
+  version "3.1.0"
+  resolved "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz?cache=0&sync_timestamp=1606566568533&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+  integrity sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=
+  dependencies:
+    ms "2.0.0"
+
+deep-equal@~1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.0.1.tgz?cache=0&sync_timestamp=1606859943631&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeep-equal%2Fdownload%2Fdeep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
+  integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=
+
+delegates@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+  integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+depd@^1.1.2, depd@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+  integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
+
+depd@~2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npm.taobao.org/depd/download/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
+  integrity sha1-tpYWPMdXVg0JzyLMj60Vcbeedt8=
+
+destroy@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+  integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
+
+ee-first@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+  integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
+
+encodeurl@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+  integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+
+escape-html@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+  integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
+
+formidable@^1.1.1:
+  version "1.2.2"
+  resolved "https://registry.npm.taobao.org/formidable/download/formidable-1.2.2.tgz#bf69aea2972982675f00865342b982986f6b8dd9"
+  integrity sha1-v2muopcpgmdfAIZTQrmCmG9rjdk=
+
+fresh@~0.5.2:
+  version "0.5.2"
+  resolved "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+  integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
+
+http-assert@^1.3.0:
+  version "1.4.1"
+  resolved "https://registry.npm.taobao.org/http-assert/download/http-assert-1.4.1.tgz#c5f725d677aa7e873ef736199b89686cceb37878"
+  integrity sha1-xfcl1neqfoc+9zYZm4lobM6zeHg=
+  dependencies:
+    deep-equal "~1.0.1"
+    http-errors "~1.7.2"
+
+http-errors@1.7.3, http-errors@~1.7.2:
+  version "1.7.3"
+  resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.3.tgz?cache=0&sync_timestamp=1593407676273&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06"
+  integrity sha1-bGGeT5xgMIw4UZSYwU+7EKrOuwY=
+  dependencies:
+    depd "~1.1.2"
+    inherits "2.0.4"
+    setprototypeof "1.1.1"
+    statuses ">= 1.5.0 < 2"
+    toidentifier "1.0.0"
+
+http-errors@^1.6.3, http-errors@^1.7.3:
+  version "1.8.0"
+  resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.8.0.tgz?cache=0&sync_timestamp=1593407676273&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507"
+  integrity sha1-ddG75JfhBE9R5O6ecEpi8o0zZQc=
+  dependencies:
+    depd "~1.1.2"
+    inherits "2.0.4"
+    setprototypeof "1.2.0"
+    statuses ">= 1.5.0 < 2"
+    toidentifier "1.0.0"
+
+http-errors@~1.6.2:
+  version "1.6.3"
+  resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz?cache=0&sync_timestamp=1593407676273&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhttp-errors%2Fdownload%2Fhttp-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
+  integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
+  dependencies:
+    depd "~1.1.2"
+    inherits "2.0.3"
+    setprototypeof "1.1.0"
+    statuses ">= 1.4.0 < 2"
+
+iconv-lite@0.4.24:
+  version "0.4.24"
+  resolved "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+  integrity sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=
+  dependencies:
+    safer-buffer ">= 2.1.2 < 3"
+
+inflation@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npm.taobao.org/inflation/download/inflation-2.0.0.tgz#8b417e47c28f925a45133d914ca1fd389107f30f"
+  integrity sha1-i0F+R8KPklpFEz2RTKH9OJEH8w8=
+
+inherits@2.0.3:
+  version "2.0.3"
+  resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+  integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+inherits@2.0.4:
+  version "2.0.4"
+  resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+  integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=
+
+is-generator-function@^1.0.7:
+  version "1.0.8"
+  resolved "https://registry.npm.taobao.org/is-generator-function/download/is-generator-function-1.0.8.tgz?cache=0&sync_timestamp=1606926721224&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-generator-function%2Fdownload%2Fis-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b"
+  integrity sha1-37XCsSDgKwqNnSxoBs1WIaqSL3s=
+
+keygrip@~1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npm.taobao.org/keygrip/download/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226"
+  integrity sha1-hxsWgdXhWcYqRFsMdLYV4JF+ciY=
+  dependencies:
+    tsscmp "1.0.6"
+
+koa-body@^4.2.0:
+  version "4.2.0"
+  resolved "https://registry.npm.taobao.org/koa-body/download/koa-body-4.2.0.tgz#37229208b820761aca5822d14c5fc55cee31b26f"
+  integrity sha1-NyKSCLggdhrKWCLRTF/FXO4xsm8=
+  dependencies:
+    "@types/formidable" "^1.0.31"
+    co-body "^5.1.1"
+    formidable "^1.1.1"
+
+koa-compose@^3.0.0:
+  version "3.2.1"
+  resolved "https://registry.npm.taobao.org/koa-compose/download/koa-compose-3.2.1.tgz?cache=0&sync_timestamp=1599805339337&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkoa-compose%2Fdownload%2Fkoa-compose-3.2.1.tgz#a85ccb40b7d986d8e5a345b3a1ace8eabcf54de7"
+  integrity sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=
+  dependencies:
+    any-promise "^1.1.0"
+
+koa-compose@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.npm.taobao.org/koa-compose/download/koa-compose-4.1.0.tgz?cache=0&sync_timestamp=1599805339337&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkoa-compose%2Fdownload%2Fkoa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877"
+  integrity sha1-UHMGuTcZAdtBEhyBLpI9DWfT6Hc=
+
+koa-convert@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.npm.taobao.org/koa-convert/download/koa-convert-1.2.0.tgz?cache=0&sync_timestamp=1599761789317&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkoa-convert%2Fdownload%2Fkoa-convert-1.2.0.tgz#da40875df49de0539098d1700b50820cebcd21d0"
+  integrity sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA=
+  dependencies:
+    co "^4.6.0"
+    koa-compose "^3.0.0"
+
+koa-router@^10.0.0:
+  version "10.0.0"
+  resolved "https://registry.npm.taobao.org/koa-router/download/koa-router-10.0.0.tgz#7bc76a031085731e61fc92c1683687b2f44de6a4"
+  integrity sha1-e8dqAxCFcx5h/JLBaDaHsvRN5qQ=
+  dependencies:
+    debug "^4.1.1"
+    http-errors "^1.7.3"
+    koa-compose "^4.1.0"
+    methods "^1.1.2"
+    path-to-regexp "^6.1.0"
+
+koa-send@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.npm.taobao.org/koa-send/download/koa-send-5.0.1.tgz?cache=0&sync_timestamp=1594227553150&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkoa-send%2Fdownload%2Fkoa-send-5.0.1.tgz#39dceebfafb395d0d60beaffba3a70b4f543fe79"
+  integrity sha1-Odzuv6+zldDWC+r/ujpwtPVD/nk=
+  dependencies:
+    debug "^4.1.1"
+    http-errors "^1.7.3"
+    resolve-path "^1.4.0"
+
+koa@^2.13.0:
+  version "2.13.0"
+  resolved "https://registry.npm.taobao.org/koa/download/koa-2.13.0.tgz?cache=0&sync_timestamp=1592756866340&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fkoa%2Fdownload%2Fkoa-2.13.0.tgz#25217e05efd3358a7e5ddec00f0a380c9b71b501"
+  integrity sha1-JSF+Be/TNYp+Xd7ADwo4DJtxtQE=
+  dependencies:
+    accepts "^1.3.5"
+    cache-content-type "^1.0.0"
+    content-disposition "~0.5.2"
+    content-type "^1.0.4"
+    cookies "~0.8.0"
+    debug "~3.1.0"
+    delegates "^1.0.0"
+    depd "^1.1.2"
+    destroy "^1.0.4"
+    encodeurl "^1.0.2"
+    escape-html "^1.0.3"
+    fresh "~0.5.2"
+    http-assert "^1.3.0"
+    http-errors "^1.6.3"
+    is-generator-function "^1.0.7"
+    koa-compose "^4.1.0"
+    koa-convert "^1.2.0"
+    on-finished "^2.3.0"
+    only "~0.0.2"
+    parseurl "^1.3.2"
+    statuses "^1.5.0"
+    type-is "^1.6.16"
+    vary "^1.1.2"
+
+media-typer@0.3.0:
+  version "0.3.0"
+  resolved "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+  integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
+
+methods@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+  integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
+
+mime-db@1.44.0:
+  version "1.44.0"
+  resolved "https://registry.npm.taobao.org/mime-db/download/mime-db-1.44.0.tgz?cache=0&sync_timestamp=1600831175828&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-db%2Fdownload%2Fmime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
+  integrity sha1-+hHF6wrKEzS0Izy01S8QxaYnL5I=
+
+mime-types@^2.1.18, mime-types@~2.1.24:
+  version "2.1.27"
+  resolved "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.27.tgz?cache=0&sync_timestamp=1587700357245&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-types%2Fdownload%2Fmime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
+  integrity sha1-R5SfmOJ56lMRn1ci4PNOUpvsAJ8=
+  dependencies:
+    mime-db "1.44.0"
+
+ms@2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+  integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@2.1.2:
+  version "2.1.2"
+  resolved "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+  integrity sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=
+
+negotiator@0.6.2:
+  version "0.6.2"
+  resolved "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
+  integrity sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=
+
+on-finished@^2.3.0:
+  version "2.3.0"
+  resolved "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+  integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
+  dependencies:
+    ee-first "1.1.1"
+
+only@~0.0.2:
+  version "0.0.2"
+  resolved "https://registry.npm.taobao.org/only/download/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4"
+  integrity sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=
+
+parseurl@^1.3.2:
+  version "1.3.3"
+  resolved "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+  integrity sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=
+
+path-is-absolute@1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+  integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-to-regexp@^6.1.0:
+  version "6.2.0"
+  resolved "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-6.2.0.tgz?cache=0&sync_timestamp=1601400247487&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-to-regexp%2Fdownload%2Fpath-to-regexp-6.2.0.tgz#f7b3803336104c346889adece614669230645f38"
+  integrity sha1-97OAMzYQTDRoia3s5hRmkjBkXzg=
+
+qs@^6.4.0:
+  version "6.9.4"
+  resolved "https://registry.npm.taobao.org/qs/download/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687"
+  integrity sha1-kJCykNH5FyjTwi5UhDykSupatoc=
+
+raw-body@^2.2.0:
+  version "2.4.1"
+  resolved "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c"
+  integrity sha1-MKyC+Yu1rowVLmcUnayNVRU7Fow=
+  dependencies:
+    bytes "3.1.0"
+    http-errors "1.7.3"
+    iconv-lite "0.4.24"
+    unpipe "1.0.0"
+
+resolve-path@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.npm.taobao.org/resolve-path/download/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7"
+  integrity sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc=
+  dependencies:
+    http-errors "~1.6.2"
+    path-is-absolute "1.0.1"
+
+safe-buffer@5.1.2:
+  version "5.1.2"
+  resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz?cache=0&sync_timestamp=1589129103371&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafe-buffer%2Fdownload%2Fsafe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+  integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0=
+
+"safer-buffer@>= 2.1.2 < 3":
+  version "2.1.2"
+  resolved "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+  integrity sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=
+
+setprototypeof@1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
+  integrity sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=
+
+setprototypeof@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
+  integrity sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=
+
+setprototypeof@1.2.0:
+  version "1.2.0"
+  resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
+  integrity sha1-ZsmiSnP5/CjL5msJ/tPTPcrxtCQ=
+
+"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@^1.5.0:
+  version "1.5.0"
+  resolved "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz?cache=0&sync_timestamp=1587327902535&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstatuses%2Fdownload%2Fstatuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+  integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
+
+toidentifier@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
+  integrity sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=
+
+tsscmp@1.0.6:
+  version "1.0.6"
+  resolved "https://registry.npm.taobao.org/tsscmp/download/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb"
+  integrity sha1-hbmVg6w1iexL/vgltQAKqRHWBes=
+
+type-is@^1.6.14, type-is@^1.6.16:
+  version "1.6.18"
+  resolved "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
+  integrity sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=
+  dependencies:
+    media-typer "0.3.0"
+    mime-types "~2.1.24"
+
+unpipe@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+  integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
+
+vary@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
+  integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
+
+ylru@^1.2.0:
+  version "1.2.1"
+  resolved "https://registry.npm.taobao.org/ylru/download/ylru-1.2.1.tgz#f576b63341547989c1de7ba288760923b27fe84f"
+  integrity sha1-9Xa2M0FUeYnB3nuiiHYJI7J/6E8=

Some files were not shown because too many files changed in this diff