Commit 6a9ffbcccf2c953c7a0e1fb8b385a05b1642130c
1 parent
1bc516df
地图点击事件
Showing
4345 changed files
with
355710 additions
and
2 deletions
Too many changes.
To preserve performance only 100 of 4345 files are displayed.
.idea/cityOperationCenter.iml
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<module type="WEB_MODULE" version="4"> | |
3 | + <component name="NewModuleRootManager"> | |
4 | + <content url="file://$MODULE_DIR$"> | |
5 | + <excludeFolder url="file://$MODULE_DIR$/.tmp" /> | |
6 | + <excludeFolder url="file://$MODULE_DIR$/temp" /> | |
7 | + <excludeFolder url="file://$MODULE_DIR$/tmp" /> | |
8 | + </content> | |
9 | + <orderEntry type="inheritedJdk" /> | |
10 | + <orderEntry type="sourceFolder" forTests="false" /> | |
11 | + </component> | |
12 | +</module> | |
0 | 13 | \ No newline at end of file | ... | ... |
.idea/misc.xml
0 → 100644
.idea/modules.xml
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<project version="4"> | |
3 | + <component name="ProjectModuleManager"> | |
4 | + <modules> | |
5 | + <module fileurl="file://$PROJECT_DIR$/.idea/cityOperationCenter.iml" filepath="$PROJECT_DIR$/.idea/cityOperationCenter.iml" /> | |
6 | + </modules> | |
7 | + </component> | |
8 | +</project> | |
0 | 9 | \ No newline at end of file | ... | ... |
dist/index.html
1 | -<!DOCTYPE html><html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=viewport content="width=device-width,initial-scale=1"><meta http-equiv=X-UA-Compatible content="IE=EDGE"><meta http-equiv=refresh content=60><title>城市智慧停车大数据中心</title><script src="static/config/config.js?t= + new Date().getTime()"></script><link href=./static/css/app.f118a0199c6c3c8035ec235444d203d9.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.381a43687f6dcf16e248.js></script><script type=text/javascript src=./static/js/app.b68f80dab7297a845848.js></script></body></html> | |
2 | 1 | \ No newline at end of file |
2 | +<!DOCTYPE html><html><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=viewport content="width=device-width,initial-scale=1"><meta http-equiv=X-UA-Compatible content="IE=EDGE"><meta http-equiv=refresh content=60><title>城市智慧停车大数据中心</title><script src="static/config/config.js?t= + new Date().getTime()"></script><link href=./static/css/app.486594723352c619415766ad398dcdb5.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.381a43687f6dcf16e248.js></script><script type=text/javascript src=./static/js/app.e88b4cfdc33eee44ac63.js></script></body></html> | |
3 | 3 | \ No newline at end of file | ... | ... |
dist/static/css/app.486594723352c619415766ad398dcdb5.css
0 → 100644
1 | +@charset "UTF-8";.mainApp{width:100%;height:100%}.app-Main[data-v-8dbec550]{position:relative;width:100%;height:100%;margin:0;padding:0}.app-Main .app-header[data-v-8dbec550]{height:65px;border:0 solid red;position:relative}.app-Main .app-body[data-v-8dbec550]{height:calc(100% - 65px);border:0 solid green}.app-Main .el-row[data-v-8dbec550],.app-Main .grid-content[data-v-8dbec550]{height:100%}.app-Main .el-row[data-v-8dbec550]{padding:5px;padding-top:0}.app-Main .el-col[data-v-8dbec550]{border-radius:4px;height:100%}.app-Main .aside-padding[data-v-8dbec550]{padding-left:0!important;padding-right:0!important;padding:5px 0}.app-Main .middle-padding[data-v-8dbec550]{padding:5px}.app-Main .el-row[data-v-8dbec550]{margin-left:0!important;margin-right:0!important}.app-Main .bg-purple[data-v-8dbec550]{background:transparent;border:0 solid #74c7d9}.app-Main .grid-content[data-v-8dbec550]{border-radius:4px;min-height:500px}.app-Main .u-marginTop[data-v-8dbec550]{margin-top:10px}.app-Main .u-videoMonitor[data-v-8dbec550],.app-Main .u-weather[data-v-8dbec550],.app-Main .u-weatherForecast[data-v-8dbec550]{height:30%}.app-Main .u-appHeader[data-v-8dbec550]{width:100%;height:100%}.app-Main .u-berth[data-v-8dbec550],.app-Main .u-device[data-v-8dbec550],.app-Main .u-incomeOverview[data-v-8dbec550],.app-Main .u-memberNum[data-v-8dbec550],.app-Main .u-orderMessage[data-v-8dbec550],.app-Main .u-tollman[data-v-8dbec550]{height:calc((100% - 20px)/3)}.app-Main .u-chinaMap[data-v-8dbec550]{height:calc(66.66% - 5px)}.app-Main .u-weekAndDay[data-v-8dbec550]{height:calc(33.33% - 5px);position:relative;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iLTM0MCAtODkuNyA2NTMuNSAyMTkuNyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtMzQwIC04OS43IDY1My41IDIxOS43OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6bm9uZTtzdHJva2U6IzIzOTFGQTtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9Cgkuc3Qxe29wYWNpdHk6MC44O2ZpbGw6IzIzOTFGQTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDJ7ZmlsbDojMjM5MUZBO30KCS5zdDN7ZGlzcGxheTpub25lO29wYWNpdHk6MC4yO2ZpbGw6dXJsKCNYTUxJRF80Xyk7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9Cgkuc3Q0e2Rpc3BsYXk6bm9uZTtvcGFjaXR5OjAuMjtmaWxsOnVybCgjWE1MSURfNV8pO2VuYWJsZS1iYWNrZ3JvdW5kOm5ldyAgICA7fQo8L3N0eWxlPgo8cGF0aCBpZD0iWE1MSURfMTFfIiBjbGFzcz0ic3QwIiBkPSJNLTMzOS41LTg5LjJIMjk3bDE2LDE2VjExNGwtMTUuOCwxNS41aC02MjAuN2wtMTYtMTUuMVYtODkuMnoiLz4KPHBhdGggaWQ9IlhNTElEXzJfIiBjbGFzcz0ic3QxIiBkPSJNMzEyLjUsMTE3LjV2M2wtOSw5aC0zTDMxMi41LDExNy41eiIvPgo8cGF0aCBpZD0iWE1MSURfMV8iIGNsYXNzPSJzdDIiIGQ9Ik0zMTAuNS04Ni44aC04bDgsOCIvPgo8bGluZWFyR3JhZGllbnQgaWQ9IlhNTElEXzRfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii0zMzguOSIgeTE9IjExNC40IiB4Mj0iLTMxLjU2NjciIHkyPSIxMTQuNCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDQwLjYpIj4KCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMzRTlBRjEiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNjEzOSIgc3R5bGU9InN0b3AtY29sb3I6IzNFOUFGMTtzdG9wLW9wYWNpdHk6MC4yODYyIi8+Cgk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojM0U5QUYxO3N0b3Atb3BhY2l0eTowIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGlkPSJYTUxJRF83XyIgY2xhc3M9InN0MyIgZD0iTS0zMzguOS04OC44aDMwM3YzMGgtMzAzVi04OC44eiIvPgo8cGF0aCBpZD0iWE1MSURfOV8iIGNsYXNzPSJzdDIiIGQ9Ik0tMzM4LjktODkuMmg0djRoLTRDLTMzOC45LTg1LjItMzM4LjktODkuMi0zMzguOS04OS4yeiIvPgo8bGluZWFyR3JhZGllbnQgaWQ9IlhNTElEXzVfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii0xMy41IiB5MT0iMTE1LjMiIHgyPSIyOTMuODMzMyIgeTI9IjExNS4zIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgNDAuNikiPgoJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzNFOUFGMSIvPgoJPHN0b3AgIG9mZnNldD0iMC42MTM5IiBzdHlsZT0ic3RvcC1jb2xvcjojM0U5QUYxO3N0b3Atb3BhY2l0eTowLjI4NjIiLz4KCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiMzRTlBRjE7c3RvcC1vcGFjaXR5OjAiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzM5XyIgY2xhc3M9InN0NCIgZD0iTS0xMy41LTg5LjdoMzAzdjMwaC0zMDNWLTg5Ljd6Ii8+Cjwvc3ZnPgo=) no-repeat;background-size:100% 100%}.app-WeatherForecast[data-v-04bc8fb2]{width:100%}.app-WeatherForecast .theme-card[data-v-04bc8fb2]{height:100%}.app-WeatherForecast .lineChart[data-v-04bc8fb2]{position:absolute;margin:0 auto;top:0;bottom:0;left:0;width:100%;height:100%}.app-videoMonitor[data-v-0b28dd79]{width:100%}.app-videoMonitor .theme-card[data-v-0b28dd79]{height:100%}.app-videoMonitor .theme-card .content>span[data-v-0b28dd79]{color:red;font-size:12px;text-align:left}.app-videoMonitor .el-carousel__item h3[data-v-0b28dd79]{color:#475669;font-size:14px;opacity:.75;line-height:150px;margin:0}.app-videoMonitor .el-carousel__item[data-v-0b28dd79]:nth-child(2n){background-color:#99a9bf}.app-videoMonitor .el-carousel__item[data-v-0b28dd79]:nth-child(odd){background-color:#d3dce6}.app-videoMonitor .videoContainer[data-v-0b28dd79]{height:100%;width:100%;position:relative}.app-videoMonitor .video-js .vjs-big-play-button[data-v-0b28dd79]{display:none}.app-Weather[data-v-473e90ff]{width:100%}.app-Weather .theme-card[data-v-473e90ff]{height:100%}.app-Weather .theme-card .content>span[data-v-473e90ff]{color:red;font-size:12px;text-align:left}.app-headBox[data-v-23878d08]{display:table;border:0 solid red;font-size:18px;position:relative}.app-headBox .head-inner[data-v-23878d08]{display:table-cell;text-align:center;vertical-align:middle}.app-headBox .head-name>span[data-v-23878d08]:first-child{position:relative;z-index:666}.app-headBox .head-name[data-v-23878d08],.app-headBox .head-time[data-v-23878d08]{display:inline-block}.app-headBox .head-name[data-v-23878d08]{font-size:23px;width:884px;height:60px;line-height:60px;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IuWbvuWxgl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgODg0LjcgNTYuNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgODg0LjcgNTYuNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfNTRfKTt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfNTRfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjMuMzMzMyIgeTE9IjI4LjMwNCIgeDI9Ijg4NC42NjY3IiB5Mj0iMjguMzA0Ij4KCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAiLz4KCTxzdG9wICBvZmZzZXQ9IjAuMTk2NCIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQiIvPgoJPHN0b3AgIG9mZnNldD0iMC40OTk3IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjc3NDEiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREIiLz4KCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzY3XyIgY2xhc3M9InN0MCIgZD0iTTY3OS41LDI5SDY3OWwtMi44LTEyaDAuNWwyLjYsMTFoMjA1LjR2MUg2NzkuNXogTTY2MS4yLDE3aDdsNiwxMmgtN0w2NjEuMiwxN3ogTTY0Ni4yLDE3aDcKCWw2LDEyaC03TDY0Ni4yLDE3eiBNNjMxLjIsMTdoN2w2LDEyaC03TDYzMS4yLDE3eiBNNjIyLjIsMjloLTE2LjVsLTEzLjcsMTguM2wtMC4zLDAuNWwtMC42LTAuMWwtNy4zLTAuOWwtNS43LDkuOGwtMjcyLDBsLTIuMSwwCglsLTUuMi05LjVsLTcuMywwLjlsLTAuNiwwLjFsLTAuNC0wLjVMMjc2LjcsMjloLTE1LjVoLTZoLTFsMS0ybDUtMTBoN2wtNSwxMGgxNWwwLjUsMGwwLjMsMC40bDEzLjcsMTguNUwyOTksNDVsMC43LTAuMWwwLjMsMC42CglsNSw5LjFsMC4xLDBINTc3bDUuMi05LjRsMC4zLTAuNmwwLjcsMC4xbDcuNCwwLjlsMTMuNy0xOC4ybDAuMy0wLjRsMC41LDBoMTYuMWwtNS0xMGg3bDYsMTJMNjIyLjIsMjlMNjIyLjIsMjl6IE01OTUuNywySDI4NS40CglsLTYuMywxNC40bC0xLjgtMC44TDI4NC4yLDBoMWgzMTFoMC4ybDAuNywwbDcuMSwxNi4ybC0xLjksMC44TDU5NS43LDJ6IE0yMzkuMiwyOWw2LTEyaDdsLTYsMTJIMjM5LjJ6IE0yMjQuMiwyOWw2LTEyaDdsLTYsMTIKCUgyMjQuMnogTTIwOS4yLDI5bDYtMTJoN2wtNiwxMkgyMDkuMnogTTIwNC45LDI5SDMuM3YtMWgyMDEuOGwyLjYtMTFoMC41bC0yLjgsMTJIMjA0Ljl6Ii8+Cjwvc3ZnPgo=) no-repeat;background-size:100% 100%;position:relative}.app-headBox .head-name-bg[data-v-23878d08]{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAAA5CAYAAABHyvIXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjY1NzlCNDlDRjc4MTFFODhGREFFNUE0QTAxNTEwQjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjY1NzlCNEFDRjc4MTFFODhGREFFNUE0QTAxNTEwQjgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCNjU3OUI0N0NGNzgxMUU4OEZEQUU1QTRBMDE1MTBCOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNjU3OUI0OENGNzgxMUU4OEZEQUU1QTRBMDE1MTBCOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrP33lcAACNASURBVHja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) no-repeat;background-size:100% 100%;height:60px;width:320px;position:absolute;top:-4px;left:280px;z-index:10}.app-headBox .header-fullscreen[data-v-23878d08]{width:18px;height:18px;line-height:18px;position:absolute;right:158px;top:25px;cursor:pointer;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAAASCAYAAADixHhYAAADeElEQVRYhcWYT2hdRRTGf6+VYCRpBGkFMbFEkIhIwVV3rTFa0UVtkyapUkQqolCEtoTuWrC4cOFGu/FPq2gLWqoouqmlVpCiuNCV4kKIJjW1wRhpE8GC+bmYeWS8776Xe+9Te+Dw3v3mOzNzv3dmzsyrqVxDGwTG4mdfxKaAT4GTwNk2+n4aeBG4oSB/EdiP+ouN9ppKxo/n8C7m8Ir4gHpOnVafVzer/dE3R2w6cgYqjrEQ+yvKv11dIL7YkjqRTKo7J2BN0n4gEaXsRDep8+pzamcLXmfkzMeYsuOo9uTgg9GzeI9J4D51UR0pMNAO9Q/1YAVBBuILjpeIGYsxZTOlmSAnorcUpE8djqLsWEGMRXW7endJQWrqF+rhHHxYPaYeVR+JWMo5HGOz+H8qCOo2w68/toIYVBBkSL1g4zJ5U500ZNwhdcrGPazTsKcM/R+CHFW7koatOaKMZMTAsKccKTHBV+NLp9jDUYCbEmydOmPjOj8Y+6gqyG05gqzNCrIK2A0sJOXnQ2AU2JJgDwKPAe8n2GVgT4kyOEgop6ndD5wA5hJsFngnjpna2dhHFbsL+AEYT7CdwE/A+pR4XZMOPo5etycrTiS1XmAyg10FOnK41wO/ZrDJ2EcV+xaYAN4Gfo7YaMR+/AezRAq265fV3gy2UZ1V1yfYHeqcek+Ge6v6ZxtLBvVZwxFjKX5v2EOaZch2Qso+FZ9fJyyljyr+QgAzQD8wnWBfAmeAb4D3gFoc+wPg60x8P3ChjfEBXgKMfiSPsCo2dCXYMCG1TifYaeBdYGuCdQHHSkzmK+De5Hkc+A4YAj4j7ElzwCfAQ7FtLOFvAs6XGK+ZvUwTMQDqqVUvu/WzSN4BbdRQfbbF574YWzSFtxgqSo96ylCCH1VX53BXqzsj56R6Y4x9oM0l08rbOpgNVxCkfjCbMdxR1hSc5DnDnanKwWxe/a2gz6eC7C0gRt3rZ5J9JQXBcPz+Xd1VImZXjLmz5FiqG1y+f63kG1JBlgwXtlaXu+6kfUL9q4IguHy5O6R2tOB1RM6/fblDPZOD9WhIwUvAuszW8hbweAZ7heWqU7dZ4OYKG9sA8AZwC3CcsJFOxbZewga6G7gIPAF8X2GMRWAjxStTH3C+ptfsD6Ia4aQ6AtxHEOIqoSx/DpwilOSqE3wGeAHoLsi/Ahz4G0IJrsSY0uKeAAAAAElFTkSuQmCC)}.app-headBox .head-time[data-v-23878d08]{font-size:14px;color:#b2c2cf;width:101px;float:right;right:0;top:0;bottom:0;text-align:left;position:absolute;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.app-headBox .head-time[data-v-23878d08]:before{content:" ";width:35px;height:35px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTYzODJFMzZDRjY1MTFFODhGREFFNUE0QTAxNTEwQjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTYzODJFMzdDRjY1MTFFODhGREFFNUE0QTAxNTEwQjgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFNjM4MkUzNENGNjUxMUU4OEZEQUU1QTRBMDE1MTBCOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFNjM4MkUzNUNGNjUxMUU4OEZEQUU1QTRBMDE1MTBCOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pid3YSAAAAlrSURBVHja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Da4BCy0TpNq/vg8MBTChGRQqSzNka7dcV12upW67ck2P94LneNwMqixT5H+D+6yZQK6/RmWylHwVdRHq1pMvR+hVoKVcA1bYrB4dcJ/GA1abptLGEH33apUlh3esoC4d1G20Rxus6YL17EwsBkttlofLrcdDvgrOjYPbn9cUuKQMds9YSh36qJObpYMluagLbODxcjDfloiEh/yVvauxbB3eAjeDnTkSpK6i7EJdukz35UqUbOV8un4xrgGXWtLklA5wC3gU9IWYHqfP/glYDNrELrvK+iBlf9HX083Oe5iyeTjfyJ2XKnsOPAHeGTW4GTN+a38frJJgU2U12+tXmTNYhlxlHdf4EXt8eVNlnYoteRd2+JOldTxdk6UPehcNubrepjNO9+ksLVggpSVL62e4Tm09q6M3ppsycpWLT5au2FrQyhZruvxgrMAJilS6vM4zXi3pdPm4r//upcsf5MhUC/vsuQVLG+A2SWWmV7DkC0uXj24reGmPccEEPGBcF0zAA8paMOFE/1z02qaJtGRGF2DoIonSl8xE/lLS4i7ToqntptGkkDZ971dYnXQrfdFU5PmSV7eZls2pIbxlc27ASuv7NKnh8xLksjlne9nL+3R87bPgM75m7wxdcR/nGspZOHklWCTZCydfAn+XchdOOjsCW9/oLZ29VWQk68SbivaWzh5jtD8v5qWzcbYOl0l66Wyl71k6h/GKBLl0NkAD+DedY/ikpBZPl5tfcIpDdK9JCIunHdk5HHbA8pbPXyKjl89rdblA+1KSXj7fI+nl88dlDJbP/1+AAQBfwVZ2R8rVYQAAAABJRU5ErkJggg==) no-repeat 50%;background-size:100%;position:absolute;left:0;margin-left:-45px}.app-incomeBox[data-v-9bab11a8]{width:100%}.app-incomeBox .theme-card[data-v-9bab11a8]{height:100%}.app-incomeBox .incomeBar[data-v-9bab11a8]{position:absolute;margin:0 auto;top:0;bottom:0;left:0;width:100%;height:100%}.app-berthBox[data-v-a2e6ab38]{width:100%}.app-berthBox .theme-card[data-v-a2e6ab38]{height:100%}.app-berthBox .berthPie[data-v-a2e6ab38]{position:absolute;margin:0 auto;top:0;bottom:0;left:0;width:100%;height:100%}.app-berthBox .bottomBoxLeft[data-v-a2e6ab38],.app-berthBox .bottomBoxRight[data-v-a2e6ab38]{display:inline-block;width:50%;height:100%;border:0 solid red;position:relative}.app-berthBox .havefreeTb[data-v-a2e6ab38]{height:100%;width:100%}.app-berthBox .havefreeTb td[data-v-a2e6ab38]{text-align:center;vertical-align:middle}.app-berthBox .havefreeTb>tr>td[data-v-a2e6ab38]:last-child{font-size:12px;text-align:left}.app-berthBox .havefreeTb .free[data-v-a2e6ab38]{background-image:-webkit-linear-gradient(bottom,#00cafe,#2772f4);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:24px}.app-berthBox .havefreeTb .have[data-v-a2e6ab38]{background-image:-webkit-linear-gradient(bottom,#ffba00,#ff8100);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:24px}.app-berthBox .freeText[data-v-a2e6ab38],.app-berthBox .haveText[data-v-a2e6ab38]{margin-top:5px}.app-orderMessageBox[data-v-f3e050cc]{width:100%}.app-orderMessageBox .content[data-v-f3e050cc]{padding:0}.app-orderMessageBox .theme-card[data-v-f3e050cc]{height:100%}.app-orderMessageBox .news-wrap[data-v-f3e050cc]{height:40px;line-height:40px;font-size:14px}.app-orderMessageBox .news-wrap .roll-ul[data-v-f3e050cc]{height:100%;position:relative;transition:top .5s}.app-orderMessageBox .news-wrap li[data-v-f3e050cc]{height:40px;float:left;padding-left:0;padding-left:30px;background-size:14px 14px;background-position:10px;background-repeat:no-repeat;list-style:none;overflow:hidden}.app-orderMessageBox .news-wrap .orderNum[data-v-f3e050cc]{width:60px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAyIDE0IDE0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMiAxNCAxNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOnVybCgjWE1MSURfM18pO30KCS5zdDF7ZmlsbDojOTRDNEYxO30KCS5zdDJ7ZmlsbDojRkZGRkZGO30KPC9zdHlsZT4KPGcgaWQ9IlhNTElEXzFfIj4KCQoJCTxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfM18iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNy4xMTMxIiB5MT0iNC45MjcyIiB4Mj0iNi44NzAyIiB5Mj0iMTguNDI1IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMjApIj4KCQk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojMDBENUZFIi8+CgkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzAwQjlGRSIvPgoJPC9saW5lYXJHcmFkaWVudD4KCTxwYXRoIGlkPSJYTUxJRF8zNF8iIGNsYXNzPSJzdDAiIGQ9Ik03LDE1LjZjLTMuNywwLTYuOC0zLTYuOC02LjhDMC4yLDUuMSwzLjIsMiw3LDJjMy43LDAsNi44LDMsNi44LDYuOFMxMC43LDE1LjYsNywxNS42eiIvPgoJPHBhdGggaWQ9IlhNTElEXzI3XyIgY2xhc3M9InN0MSIgZD0iTTcsMi41YzMuNiwwLDYuNSwyLjksNi41LDYuNXMtMi45LDYuNS02LjUsNi41UzAuNSwxMi42LDAuNSw5UzMuNCwyLjUsNywyLjUgTTcsMgoJCUMzLjEsMiwwLDUuMSwwLDlzMy4xLDcsNyw3czctMy4xLDctN1MxMC45LDIsNywyTDcsMnoiLz4KPC9nPgo8ZyBpZD0iWE1MSURfNF8iPgoJPGcgaWQ9IlhNTElEXzQ5XyI+CgkJPHBhdGggaWQ9IlhNTElEXzUwXyIgY2xhc3M9InN0MiIgZD0iTTkuMyw2LjRINC43QzQuMyw2LjQsNC4xLDYuNyw0LjEsN3YwLjJjMCwwLjMsMC4yLDAuNSwwLjUsMC41aDQuNmMwLjIsMCwwLjUtMC4yLDAuNS0wLjVWNwoJCQlDOS44LDYuNSw5LjMsNi40LDkuMyw2LjR6IE00LjcsOS42aDIuN0M3LjcsOS42LDgsOS40LDgsOS4xVjguOWMwLTAuMy0wLjItMC41LTAuNS0wLjVINC43Yy0wLjMsMC0wLjUsMC4yLTAuNSwwLjVWOQoJCQlDNC4yLDkuNCw0LjQsOS42LDQuNyw5LjZ6IE04LjcsMTAuM2gtNGMtMC4zLDAtMC41LDAuMi0wLjUsMC41VjExYzAsMC4zLDAuMiwwLjUsMC41LDAuNWg0YzAuMywwLDAuNS0wLjIsMC41LTAuNXYtMC4yCgkJCUM5LjIsMTAuNSw5LDEwLjMsOC43LDEwLjN6Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+Cg==)}.app-orderMessageBox .news-wrap .orderMoney[data-v-f3e050cc]{width:70px;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAyIDE0IDE0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMiAxNCAxNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOnVybCgjWE1MSURfM18pO30KCS5zdDF7ZmlsbDojOTRDNEYxO30KCS5zdDJ7ZmlsbDojRkZGRkZGO30KPC9zdHlsZT4KPGcgaWQ9IlhNTElEXzFfIj4KCQoJCTxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfM18iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNy4xMTMxIiB5MT0iMTEuMTgyMiIgeDI9IjYuODcwMiIgeTI9Ii0yLjMxNTYiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgMSAwIDQpIj4KCQk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojMDBENUZFIi8+CgkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzAwQjlGRSIvPgoJPC9saW5lYXJHcmFkaWVudD4KCTxwYXRoIGlkPSJYTUxJRF8zNF8iIGNsYXNzPSJzdDAiIGQ9Ik03LDE1LjdjLTMuNywwLTYuOC0zLTYuOC02LjhjMC0zLjcsMy02LjgsNi44LTYuOGMzLjcsMCw2LjgsMyw2LjgsNi44UzEwLjcsMTUuNyw3LDE1Ljd6Ii8+Cgk8cGF0aCBpZD0iWE1MSURfMjdfIiBjbGFzcz0ic3QxIiBkPSJNNywyLjVjMy42LDAsNi41LDIuOSw2LjUsNi41cy0yLjksNi41LTYuNSw2LjVTMC41LDEyLjYsMC41LDlTMy40LDIuNSw3LDIuNSBNNywyCgkJQzMuMSwyLDAsNS4xLDAsOXMzLjEsNyw3LDdzNy0zLjEsNy03UzEwLjksMiw3LDJMNywyeiIvPgo8L2c+CjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMC4xLDkuMmwtMi4zLDBjMCwwLDAsMCwwLDAuMXYwLjhoMS40YzAuMiwwLDAuNCwwLjIsMC40LDAuNGwwLDBjMCwwLjItMC4yLDAuNS0wLjQsMC41SDcuN3YxLjQKCWMwLDAuMi0wLjIsMC40LTAuNCwwLjRINy4xYy0wLjIsMC0wLjQtMC4yLTAuNC0wLjRWMTFINWMtMC4yLDAtMC40LTAuMy0wLjQtMC41bDAsMGMwLTAuMiwwLjItMC40LDAuNC0wLjRoMS43VjkuMwoJYzAtMC4xLDAtMC4xLDAtMC4xbDAsMEgzLjljLTAuMiwwLTAuNC0wLjMtMC40LTAuNVY4LjdjMC0wLjIsMC4yLTAuNSwwLjQtMC41aDEuN0wzLjksNi43QzMuNyw2LjUsMy43LDYuMiwzLjksNgoJYzAuMi0wLjIsMC41LTAuMiwwLjcsMEw3LDguMUw5LjQsNmMwLjItMC4yLDAuNS0wLjIsMC43LDBzMC4yLDAuNSwwLDAuN0w4LjQsOC4yaDEuN2MwLjIsMCwwLjQsMC4zLDAuNCwwLjV2MAoJQzEwLjUsOC45LDEwLjQsOS4yLDEwLjEsOS4yeiIvPgo8L3N2Zz4K)}.app-orderMessageBox .news-wrap .orderPark[data-v-f3e050cc]{width:calc(100% - 220px);background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAyIDE0IDE0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMiAxNCAxNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOnVybCgjWE1MSURfM18pO30KCS5zdDF7ZmlsbDojOTRDNEYxO30KCS5zdDJ7ZmlsbDojRkZGRkZGO30KPC9zdHlsZT4KPGcgaWQ9IlhNTElEXzFfIj4KCQoJCTxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfM18iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNy4xMTMxIiB5MT0iMTEuMTgyMiIgeDI9IjYuODcwMiIgeTI9Ii0yLjMxNTYiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgMSAwIDQpIj4KCQk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojMDBENUZFIi8+CgkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzAwQjlGRSIvPgoJPC9saW5lYXJHcmFkaWVudD4KCTxwYXRoIGlkPSJYTUxJRF8zNF8iIGNsYXNzPSJzdDAiIGQ9Ik03LDE1LjdjLTMuNywwLTYuOC0zLTYuOC02LjhjMC0zLjcsMy02LjgsNi44LTYuOGMzLjcsMCw2LjgsMyw2LjgsNi44UzEwLjcsMTUuNyw3LDE1Ljd6Ii8+Cgk8cGF0aCBpZD0iWE1MSURfMjdfIiBjbGFzcz0ic3QxIiBkPSJNNywyLjVjMy42LDAsNi41LDIuOSw2LjUsNi41cy0yLjksNi41LTYuNSw2LjVTMC41LDEyLjYsMC41LDlTMy40LDIuNSw3LDIuNSBNNywyCgkJQzMuMSwyLDAsNS4xLDAsOXMzLjEsNyw3LDdzNy0zLjEsNy03UzEwLjksMiw3LDJMNywyeiIvPgo8L2c+CjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik01LDUuOGMwLjMsMCwwLjUsMC4yLDAuNSwwLjV2NWMwLDAuMy0wLjIsMC41LTAuNSwwLjVzLTAuNS0wLjItMC41LTAuNXYtNUM0LjUsNiw0LjcsNS44LDUsNS44eiIvPgo8cGF0aCBjbGFzcz0ic3QyIiBkPSJNNy41LDYuOGMwLjYsMCwxLDAuNCwxLDFzLTAuNCwxLTEsMWgtMnYtMkg3LjUgTTcuNSw1LjhoLTN2NGgzYzEuMSwwLDItMC45LDItMlM4LjYsNS44LDcuNSw1LjhMNy41LDUuOHoiLz4KPC9zdmc+Cg==)}.app-orderMessageBox .nwwest-roll[data-v-f3e050cc]{width:100%;height:calc(100% - 60px);overflow:hidden;transition:all .5s}.app-orderMessageBox .nwwest-roll li[data-v-f3e050cc]{width:100%;height:26px;line-height:26px;font-size:12px;padding-left:10px;color:#fff;background:hsla(0,0%,100%,.1);margin-bottom:5px}.app-orderMessageBox .nwwest-roll li div[data-v-f3e050cc]{float:left;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.app-orderMessageBox .nwwest-roll li div[data-v-f3e050cc]:first-of-type{width:90px}.app-orderMessageBox .nwwest-roll li div[data-v-f3e050cc]:nth-of-type(2){width:calc(100% - 190px)}.app-orderMessageBox .nwwest-roll li div[data-v-f3e050cc]:nth-of-type(3){width:70px}.anim[data-v-f3e050cc]{ transition:all .5s}.app-memberNumBox[data-v-7002a226]{width:100%}.app-memberNumBox .theme-card[data-v-7002a226]{height:100%}.app-memberNumBox .bottomBox[data-v-7002a226],.app-memberNumBox .topBox[data-v-7002a226]{border:0 solid red}.app-memberNumBox .memberNumTb[data-v-7002a226]{margin:0 auto;width:100%;height:100%}.app-memberNumBox .memberNumTb>tr[data-v-7002a226]{width:100%;height:100%}.app-memberNumBox .memberNumTb>tr>td[data-v-7002a226]{height:100%;width:33.333%}.app-memberNumBox .memberNumTb>tr>td[data-v-7002a226]:nth-child(2){vertical-align:middle;text-align:center;position:relative}.app-memberNumBox .memberNumTb>tr>td[data-v-7002a226]:first-child{vertical-align:middle;text-align:right;padding-right:5px}.app-memberNumBox .memberNumTb>tr>td[data-v-7002a226]:last-child{vertical-align:middle;text-align:left;padding-left:5px}.app-memberNumBox .memberRadar[data-v-7002a226]{background:url(../images/memberRadar.64f2262.png) no-repeat;background-size:100% 100%;width:90%;height:0;padding-bottom:90%;margin:auto;background-position:50%;background-repeat:no-repeat;background-size:cover;-webkit-background-size:cover;-moz-background-size:cover}.app-memberNumBox .memberRadarBox[data-v-7002a226]:before{content:" ";display:block;height:30px;width:30px;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDMyIDMyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMiAzMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfMzJfKTt9Cgkuc3Qxe2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMzJfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjE1Ljk3NzgiIHkxPSIzMi4zMDEiIHgyPSIxNi4wMjIxIiB5Mj0iLTAuMTU5NCI+Cgk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojNTFFQzUxIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjIwMzYiIHN0eWxlPSJzdG9wLWNvbG9yOiM0OEU3NDgiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNTQxOSIgc3R5bGU9InN0b3AtY29sb3I6IzJFRDkyRSIvPgoJPHN0b3AgIG9mZnNldD0iMC45NzEyIiBzdHlsZT0ic3RvcC1jb2xvcjojMDVDNDA1Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojMDJDMjAyIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGlkPSJYTUxJRF8yXyIgY2xhc3M9InN0MCIgZD0iTTE2LDBjOC44LDAsMTYsNy4yLDE2LDE2cy03LjIsMTYtMTYsMTZTMCwyNC44LDAsMTZTNy4yLDAsMTYsMHoiLz4KPHBhdGggaWQ9IlhNTElEXzMwXyIgY2xhc3M9InN0MSIgZD0iTTI1LjYsMTIuNmwtNC41LDcuOGMtMC43LDEtMi4xLDAuMy0yLjQsMC4xbC02LjgtNi40YzAsMC0wLjEtMC4xLTAuMS0wLjFsLTMuNyw2LjQKCWMtMC4zLDAuNS0wLjksMC42LTEuNCwwLjRjLTAuNS0wLjMtMC42LTAuOS0wLjQtMS40bDQuMy03LjRjMC4zLTAuNSwxLjEtMS4xLDEuNy0wLjZjMC40LDAuMywwLjgsMC45LDEsMS4xbDYuNiw2LjFsNC03CgljMC4zLTAuNSwwLjktMC42LDEuNC0wLjRDMjUuNywxMS41LDI1LjksMTIuMSwyNS42LDEyLjZ6Ii8+Cjwvc3ZnPgo=) no-repeat;background-size:100%;position:absolute;left:0;top:15px;z-index:8}.app-memberNumBox .memberRadarBox[data-v-7002a226]:after{content:" ";display:block;height:30px;width:30px;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfMTlfKTt9Cgkuc3Qxe2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMTlfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjExLjgzOTEiIHkxPSIyNC4wMzc2IiB4Mj0iMTIuMTU4NiIgeTI9IjAuMTI4MyI+Cgk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojRkZBQjAwIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjM3NCIgc3R5bGU9InN0b3AtY29sb3I6I0ZFQTIwNSIvPgoJPHN0b3AgIG9mZnNldD0iMC45OTQxIiBzdHlsZT0ic3RvcC1jb2xvcjojRkQ4ODExIi8+Cgk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojRkQ4ODExIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGlkPSJYTUxJRF8yXyIgY2xhc3M9InN0MCIgZD0iTTEyLDBjNi42LDAsMTIsNS40LDEyLDEycy01LjQsMTItMTIsMTJDNS40LDI0LDAsMTguNiwwLDEyUzUuNCwwLDEyLDB6Ii8+CjxwYXRoIGlkPSJYTUxJRF8xN18iIGNsYXNzPSJzdDEiIGQ9Ik0xOC42LDEyLjlDMTguNSwxMywxOC40LDEzLDE4LjIsMTNoLTV2NWMwLDAuNi0wLjQsMS0xLDFjLTAuNiwwLTEtMC40LTEtMXYtNWgtNQoJYy0wLjEsMC0wLjMsMC0wLjQtMC4xYy0wLjQtMC4yLTAuNi0wLjUtMC42LTAuOXMwLjMtMC44LDAuNi0wLjlDNiwxMSw2LjEsMTEsNi4yLDExaDVWNmMwLTAuNiwwLjQtMSwxLTFjMC42LDAsMSwwLjQsMSwxdjVoNQoJYzAuMSwwLDAuMywwLDAuNCwwLjFjMC40LDAuMiwwLjYsMC41LDAuNiwwLjlTMTksMTIuOCwxOC42LDEyLjl6Ii8+Cjwvc3ZnPgo=) no-repeat;background-size:100%;position:absolute;right:0;bottom:15px;z-index:8}.app-memberNumBox .activeUserNum[data-v-7002a226]{background-image:-webkit-linear-gradient(bottom,#67f967,#05c405);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:24px}.app-memberNumBox .newUerNum[data-v-7002a226]{background-image:-webkit-linear-gradient(bottom,#ffba00,#ff8100);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:24px}.app-memberNumBox .activeUserText[data-v-7002a226],.app-memberNumBox .newUerNumText[data-v-7002a226]{font-size:12px}.app-memberNumBox .activeUserText[data-v-7002a226]:after{content:" ";display:inline-block;height:12px;width:13px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAMCAYAAAC5tzfZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZGOUUwRTlDRjVEMTFFODhGREFFNUE0QTAxNTEwQjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZGOUUwRUFDRjVEMTFFODhGREFFNUE0QTAxNTEwQjgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkY5RTBFN0NGNUQxMUU4OEZEQUU1QTRBMDE1MTBCOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkY5RTBFOENGNUQxMUU4OEZEQUU1QTRBMDE1MTBCOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pk3z1YkAAADqSURBVHjaYvz//z8DMmA7yuYNpDqBWBWIbwBx6S/rX7uQ1TAia+I+we0HpDaAxJHUgBR4fLX4CtfIgmwCOzN7GZoGBii/HIixa+Jg5VBgwA4UkTkomjhZOe8BKWksmu7h1MTFytUHpGzRNID81IczIEDA/L55CpBqA2JRIH4BxGUnFU8uxqrJ8akjKBA0gbgDiO8AsQAQfwBiQSBugRrQuF96/3+w87xfeRcAndYJNSgAiOcD8W0glgLiWCCWh8r9ARnAGPwuGBQy10CBx0AY/AS5hgUYzC1EagBHJRDXswAjVIuBNGAMEGAAY6E5QSJwW/0AAAAASUVORK5CYII=) no-repeat;background-size:100%;margin-left:5px}.app-memberNumBox .newUerNumText[data-v-7002a226]:before{content:" ";display:inline-block;height:12px;width:13px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAMCAYAAAC5tzfZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjVDQjI4NzhDRjVEMTFFODhGREFFNUE0QTAxNTEwQjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjVDQjI4NzlDRjVEMTFFODhGREFFNUE0QTAxNTEwQjgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyNUNCMjg3NkNGNUQxMUU4OEZEQUU1QTRBMDE1MTBCOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyNUNCMjg3N0NGNUQxMUU4OEZEQUU1QTRBMDE1MTBCOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmAhBIEAAADsSURBVHjaYvz//z8DCtjB6A0kO4FYFYhvAHEpg8f/XchKGJE1/d/J4QekNoDEkdSAFHgwuv+Aa2RCNuE/I2cZEDMCMQMSBvHLkdWxoGriVmDADhRxa2LiuQekpLFouodT0z9G3j4gZYumAeSnPpwBAQI/DjinAKk2IBYF4hdAXMbhsHcxVk3fDwaWASlNIO4A4jtALADEH4BYEIhboAY0ctqv/w923tfDcQUMTLydUIMCgHg+EN8GYikgjgVieajcH5ABjJ8PZ4JC5hoQczAQBj9BrmH5z8TdQqQGEGAH4noWYMRpMZAGjAECDAAKCESYsz2R+wAAAABJRU5ErkJggg==) no-repeat;background-size:100%;margin-right:5px}.app-tollmanBox[data-v-d7591a54]{width:100%}.app-tollmanBox .theme-card[data-v-d7591a54]{height:100%}.app-tollmanBox .tollmanTb[data-v-d7591a54]{margin:0 auto;width:100%;height:100%;position:relative}.app-tollmanBox .tollmanTb>tr>td[data-v-d7591a54]{width:50%;vertical-align:middle;text-align:center}.app-tollmanBox .onDutyImg[data-v-d7591a54]{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDU4LjYgNDguNSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTguNiA0OC41OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6dXJsKCNYTUxJRF8xMF8pO30KCS5zdDF7ZmlsbDojMTk5MUY4O30KCS5zdDJ7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI1hNTElEXzIwXyk7fQoJLnN0M3tmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiMwMzJEODU7fQoJLnN0NHtvcGFjaXR5OjAuODt9Cgkuc3Q1e2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMTBfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjI3IiB5MT0iMzciIHgyPSIyNyIgeTI9IjMiPgoJPHN0b3AgIG9mZnNldD0iNS4wMDMwNzllLTA0IiBzdHlsZT0ic3RvcC1jb2xvcjojMDBDQUZFIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjk5NDkiIHN0eWxlPSJzdG9wLWNvbG9yOiMyNzcyRjQiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzJfIiBjbGFzcz0ic3QwIiBkPSJNNSwzaDQ0YzEuMSwwLDIsMC45LDIsMnYzMGMwLDEuMS0wLjksMi0yLDJINWMtMS4xLDAtMi0wLjktMi0yVjVDMywzLjksMy45LDMsNSwzeiIvPgo8cGF0aCBpZD0iWE1MSURfMV8iIGNsYXNzPSJzdDEiIGQ9Ik01MCwxYzEuNywwLDMsMS4zLDMsM3YzMmMwLDEuNy0xLjMsMy0zLDNINGMtMS43LDAtMy0xLjMtMy0zVjRjMC0xLjcsMS4zLTMsMy0zSDUwIE01MCwwSDQKCUMxLjgsMCwwLDEuOCwwLDR2MzJjMCwyLjIsMS44LDQsNCw0aDQ2YzIuMiwwLDQtMS44LDQtNFY0QzU0LDEuOCw1Mi4yLDAsNTAsMEw1MCwweiIvPgo8bGluZWFyR3JhZGllbnQgaWQ9IlhNTElEXzIwXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyNiIgeTE9IjQ4LjUwODkiIHgyPSIyNiIgeTI9IjQ0LjUwODkiPgoJPHN0b3AgIG9mZnNldD0iNS4wMDMwNzllLTA0IiBzdHlsZT0ic3RvcC1jb2xvcjojMDBDQUZFIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjk5NDkiIHN0eWxlPSJzdG9wLWNvbG9yOiMyNzcyRjQiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzZfIiBjbGFzcz0ic3QyIiBkPSJNMTQuNSw0NC41aDIzYzEuMSwwLDIsMC45LDIsMnMtMC45LDItMiwyaC0yM2MtMS4xLDAtMi0wLjktMi0yUzEzLjQsNDQuNSwxNC41LDQ0LjV6Ii8+CjxnIGlkPSJYTUxJRF84XyI+Cgk8cGF0aCBpZD0iWE1MSURfMTdfIiBjbGFzcz0ic3QzIiBkPSJNMzcuNiw0OGMtMC4yLDAtMC42LDAtMC45LTAuMmMtMC4zLTAuMS0wLjUtMC4zLTAuNS0wLjZsMC44LTEuNmMwLDAsMS4zLTIuNywyLjgtNC4yCgkJYzAuNC0wLjQsMC44LTAuNiwxLjItMC42YzAuNywwLDEuNCwwLjQsMS42LDAuNmMwLjMsMC40LDEuMywxLjcsMy44LDEuN2gwLjljMi41LDAsMy42LTEuMywzLjgtMS43YzAuMi0wLjEsMC44LTAuNSwxLjQtMC41CgkJYzAuNCwwLDAuOCwwLjIsMS4yLDAuNmMxLjUsMS41LDIuNiw0LjIsMi43LDQuMmwwLjgsMS42Yy0wLjEsMC42LTAuNywwLjctMS4yLDAuN0wzNy42LDQ4eiBNNDYuNiwzOS41Yy0yLjksMC01LjMtMi42LTUuMy01LjgKCQljMC0zLjEsMi4zLTUuNiw1LjMtNS42czUuMywyLjQsNS4zLDUuNkM1MS45LDM2LjksNDkuNSwzOS41LDQ2LjYsMzkuNXoiLz4KCTxwYXRoIGlkPSJYTUxJRF81XyIgY2xhc3M9InN0MSIgZD0iTTQ2LjYsMjguNmMyLjcsMCw0LjgsMi4yLDQuOCw1LjFjMCwyLjktMi4xLDUuMy00LjgsNS4zYy0yLjYsMC00LjgtMi40LTQuOC01LjMKCQlDNDEuOSwzMC44LDQzLjksMjguNiw0Ni42LDI4LjYgTTQxLDQxLjNjMC41LDAsMSwwLjIsMS4yLDAuNGMwLjUsMC44LDEuOSwxLjgsNC4yLDEuOGwwLjksMGMyLjMsMCwzLjctMS4xLDQuMi0xLjkKCQljMC4yLTAuMSwwLjYtMC40LDEtMC40YzAuMiwwLDAuNSwwLDAuOCwwLjRjMS40LDEuNCwyLjUsNC4xLDIuNiw0LjFsMCwwbDAsMGwwLjcsMS40Yy0wLjEsMC4xLTAuMywwLjItMC43LDAuMmwtMC4xLDBsMCwwaDBIMzcuNwoJCWwwLDBsMCwwbC0wLjEsMGMtMC4xLDAtMC43LDAtMC45LTAuMmwwLjctMS41YzAsMCwxLjMtMi42LDIuNy00LjFDNDAuNCw0MS40LDQwLjYsNDEuMyw0MSw0MS4zIE00Ni42LDI3LjZjLTMuMiwwLTUuOCwyLjYtNS44LDYuMQoJCWMwLDMuNSwyLjYsNi4zLDUuOCw2LjNjMy4yLDAsNS44LTIuOCw1LjgtNi4zQzUyLjQsMzAuMiw0OS44LDI3LjYsNDYuNiwyNy42TDQ2LjYsMjcuNnogTTUyLjUsNDAuM2MtMSwwLTEuOCwwLjctMS44LDAuNwoJCXMtMC44LDEuNS0zLjQsMS41aC0wLjljLTIuNiwwLTMuNC0xLjUtMy40LTEuNVM0Miw0MC4zLDQxLDQwLjNjLTAuNSwwLTEuMSwwLjItMS42LDAuN2MtMS41LDEuNi0yLjksNC4zLTIuOSw0LjNsLTAuOCwxLjgKCQljMCwxLjMsMS41LDEuNCwxLjksMS40YzAuMSwwLDAuMSwwLDAuMSwwaDE4LjFjMCwwLDAsMCwwLjEsMGMwLjQsMCwxLjctMC4xLDEuNy0xLjRsLTAuOS0xLjdjMCwwLTEuMi0yLjgtMi43LTQuNAoJCUM1My41LDQwLjUsNTMsNDAuMyw1Mi41LDQwLjNMNTIuNSw0MC4zeiIvPgo8L2c+CjxnIGlkPSJYTUxJRF85XyIgY2xhc3M9InN0NCI+Cgk8ZyBpZD0iWE1MSURfNThfIj4KCQk8cGF0aCBpZD0iWE1MSURfNjBfIiBjbGFzcz0ic3Q1IiBkPSJNNDAuNSw5aC0yN0MxMi43LDksMTIsOS43LDEyLDEwLjVjMCwwLjgsMC43LDEuNSwxLjUsMS41aDI3YzAuOCwwLDEuNS0wLjcsMS41LTEuNQoJCQlDNDIsOS43LDQxLjMsOSw0MC41LDl6IE0zNS41LDI4aC0yMmMtMC44LDAtMS41LDAuNy0xLjUsMS41YzAsMC44LDAuNywxLjUsMS41LDEuNWgyMmMwLjgsMCwxLjUtMC43LDEuNS0xLjUKCQkJQzM3LDI4LjcsMzYuMywyOCwzNS41LDI4eiBNMTMuNSwyMmgxNmMwLjgsMCwxLjUtMC43LDEuNS0xLjVjMC0wLjgtMC43LTEuNS0xLjUtMS41aC0xNmMtMC44LDAtMS41LDAuNy0xLjUsMS41CgkJCUMxMiwyMS4zLDEyLjcsMjIsMTMuNSwyMnoiLz4KCTwvZz4KPC9nPgo8L3N2Zz4K) no-repeat;background-size:100% 100%;display:inline-block;width:45%;height:0;padding-bottom:40%;margin:auto}.app-tollmanBox .noDutyInfo[data-v-d7591a54],.app-tollmanBox .onDutyInfo[data-v-d7591a54]{display:inline-block}.app-tollmanBox .onDutyInfo>span[data-v-d7591a54]{background-image:-webkit-linear-gradient(bottom,#00cafe,#2772f4);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:24px}.app-tollmanBox .noDutyInfo>div[data-v-d7591a54],.app-tollmanBox .onDutyInfo>div[data-v-d7591a54]{font-size:12px;text-align:left}.app-tollmanBox .noDutyImg[data-v-d7591a54]{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDU4LjYgNDguNSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTguNiA0OC41OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6dXJsKCNYTUxJRF81NF8pO30KCS5zdDF7ZmlsbDojRkZCNzAwO30KCS5zdDJ7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI1hNTElEXzU1Xyk7fQoJLnN0M3tmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiMwMzJEODU7fQoJLnN0NHtmaWxsOiNGRUI4MDU7fQoJLnN0NXtvcGFjaXR5OjAuODt9Cgkuc3Q2e2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfNTRfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjI3IiB5MT0iMzciIHgyPSIyNyIgeTI9IjMiPgoJPHN0b3AgIG9mZnNldD0iMC4yMjg1IiBzdHlsZT0ic3RvcC1jb2xvcjojRjBDNzg0Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjk5NDQiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRkI3MDAiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzJfIiBjbGFzcz0ic3QwIiBkPSJNNSwzaDQ0YzEuMSwwLDIsMC45LDIsMnYzMGMwLDEuMS0wLjksMi0yLDJINWMtMS4xLDAtMi0wLjktMi0yVjVDMywzLjksMy45LDMsNSwzeiIvPgo8cGF0aCBpZD0iWE1MSURfMV8iIGNsYXNzPSJzdDEiIGQ9Ik01MCwxYzEuNywwLDMsMS4zLDMsM3YzMmMwLDEuNy0xLjMsMy0zLDNINGMtMS43LDAtMy0xLjMtMy0zVjRjMC0xLjcsMS4zLTMsMy0zSDUwIE01MCwwSDQKCUMxLjgsMCwwLDEuOCwwLDR2MzJjMCwyLjIsMS44LDQsNCw0aDQ2YzIuMiwwLDQtMS44LDQtNFY0QzU0LDEuOCw1Mi4yLDAsNTAsMEw1MCwweiIvPgo8bGluZWFyR3JhZGllbnQgaWQ9IlhNTElEXzU1XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyNiIgeTE9IjQ4LjUwODkiIHgyPSIyNiIgeTI9IjQ0LjUwODkiPgoJPHN0b3AgIG9mZnNldD0iMC4yMjg1IiBzdHlsZT0ic3RvcC1jb2xvcjojRjBDNzg0Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjk5NDQiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRkI3MDAiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzZfIiBjbGFzcz0ic3QyIiBkPSJNMTQuNSw0NC41aDIzYzEuMSwwLDIsMC45LDIsMnMtMC45LDItMiwyaC0yM2MtMS4xLDAtMi0wLjktMi0yUzEzLjQsNDQuNSwxNC41LDQ0LjV6Ii8+CjxnIGlkPSJYTUxJRF84XyI+Cgk8cGF0aCBpZD0iWE1MSURfMTdfIiBjbGFzcz0ic3QzIiBkPSJNMzcuNiw0OGMtMC4yLDAtMC42LDAtMC45LTAuMmMtMC4zLTAuMS0wLjUtMC4zLTAuNS0wLjZsMC44LTEuNmMwLDAsMS4zLTIuNywyLjgtNC4yCgkJYzAuNC0wLjQsMC44LTAuNiwxLjItMC42YzAuNywwLDEuNCwwLjQsMS42LDAuNmMwLjMsMC40LDEuMywxLjcsMy44LDEuN2gwLjljMi41LDAsMy42LTEuMywzLjgtMS43YzAuMi0wLjEsMC44LTAuNSwxLjQtMC41CgkJYzAuNCwwLDAuOCwwLjIsMS4yLDAuNmMxLjUsMS41LDIuNiw0LjIsMi43LDQuMmwwLjgsMS42Yy0wLjEsMC42LTAuNywwLjctMS4yLDAuN0wzNy42LDQ4eiBNNDYuNiwzOS41Yy0yLjksMC01LjMtMi42LTUuMy01LjgKCQljMC0zLjEsMi4zLTUuNiw1LjMtNS42czUuMywyLjQsNS4zLDUuNkM1MS45LDM2LjksNDkuNSwzOS41LDQ2LjYsMzkuNXoiLz4KCTxwYXRoIGlkPSJYTUxJRF81XyIgY2xhc3M9InN0NCIgZD0iTTQ2LjYsMjguNmMyLjcsMCw0LjgsMi4yLDQuOCw1LjFjMCwyLjktMi4xLDUuMy00LjgsNS4zYy0yLjYsMC00LjgtMi40LTQuOC01LjMKCQlDNDEuOSwzMC44LDQzLjksMjguNiw0Ni42LDI4LjYgTTQxLDQxLjNjMC41LDAsMSwwLjIsMS4yLDAuNGMwLjUsMC44LDEuOSwxLjgsNC4yLDEuOGwwLjksMGMyLjMsMCwzLjctMS4xLDQuMi0xLjkKCQljMC4yLTAuMSwwLjYtMC40LDEtMC40YzAuMiwwLDAuNSwwLDAuOCwwLjRjMS40LDEuNCwyLjUsNC4xLDIuNiw0LjFsMCwwbDAsMGwwLjcsMS40Yy0wLjEsMC4xLTAuMywwLjItMC43LDAuMmwtMC4xLDBsMCwwaDBIMzcuNwoJCWwwLDBsMCwwbC0wLjEsMGMtMC4xLDAtMC43LDAtMC45LTAuMmwwLjctMS41YzAsMCwxLjMtMi42LDIuNy00LjFDNDAuNCw0MS40LDQwLjYsNDEuMyw0MSw0MS4zIE00Ni42LDI3LjZjLTMuMiwwLTUuOCwyLjYtNS44LDYuMQoJCWMwLDMuNSwyLjYsNi4zLDUuOCw2LjNjMy4yLDAsNS44LTIuOCw1LjgtNi4zQzUyLjQsMzAuMiw0OS44LDI3LjYsNDYuNiwyNy42TDQ2LjYsMjcuNnogTTUyLjUsNDAuM2MtMSwwLTEuOCwwLjctMS44LDAuNwoJCXMtMC44LDEuNS0zLjQsMS41aC0wLjljLTIuNiwwLTMuNC0xLjUtMy40LTEuNVM0Miw0MC4zLDQxLDQwLjNjLTAuNSwwLTEuMSwwLjItMS42LDAuN2MtMS41LDEuNi0yLjksNC4zLTIuOSw0LjNsLTAuOCwxLjgKCQljMCwxLjMsMS41LDEuNCwxLjksMS40YzAuMSwwLDAuMSwwLDAuMSwwaDE4LjFjMCwwLDAsMCwwLjEsMGMwLjQsMCwxLjctMC4xLDEuNy0xLjRsLTAuOS0xLjdjMCwwLTEuMi0yLjgtMi43LTQuNAoJCUM1My41LDQwLjUsNTMsNDAuMyw1Mi41LDQwLjNMNTIuNSw0MC4zeiIvPgo8L2c+CjxnIGlkPSJYTUxJRF85XyIgY2xhc3M9InN0NSI+Cgk8ZyBpZD0iWE1MSURfNThfIj4KCQk8cGF0aCBpZD0iWE1MSURfNjBfIiBjbGFzcz0ic3Q2IiBkPSJNMTUsMTcuNWMtMS40LDAtMi41LDEuMS0yLjUsMi41YzAsMS40LDEuMSwyLjUsMi41LDIuNXMyLjUtMS4xLDIuNS0yLjUKCQkJQzE3LjUsMTguNiwxNi40LDE3LjUsMTUsMTcuNXogTTI3LDE3LjVjLTEuNCwwLTIuNSwxLjEtMi41LDIuNWMwLDEuNCwxLjEsMi41LDIuNSwyLjVzMi41LTEuMSwyLjUtMi41CgkJCUMyOS41LDE4LjYsMjguNCwxNy41LDI3LDE3LjV6IE0zOSwxNy41Yy0xLjQsMC0yLjUsMS4xLTIuNSwyLjVjMCwxLjQsMS4xLDIuNSwyLjUsMi41czIuNS0xLjEsMi41LTIuNQoJCQlDNDEuNSwxOC42LDQwLjQsMTcuNSwzOSwxNy41eiIvPgoJPC9nPgo8L2c+Cjwvc3ZnPgo=) no-repeat;background-size:100% 100%;display:inline-block;width:45%;height:0;padding-bottom:40%;margin:auto}.app-tollmanBox .noDutyInfo>span[data-v-d7591a54]{background-image:-webkit-linear-gradient(bottom,#ffba00,#ff8100);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:24px}.app-deviceBox[data-v-251b924e]{width:100%}.app-deviceBox .theme-card[data-v-251b924e]{height:100%}.app-deviceBox .content[data-v-251b924e]{padding:0}.app-deviceBox .marginTop[data-v-251b924e]{margin-top:8%!important}.app-deviceBox .deviceTb[data-v-251b924e]{margin:0 auto;width:100%;height:100%}.app-deviceBox .deviceTb>tr>td[data-v-251b924e]{vertical-align:middle;text-align:center;width:50%}.app-deviceBox .deviceBg[data-v-251b924e]{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDMwNS42IDE1OS40IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMDUuNiAxNTkuNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfMzJfKTt9Cgkuc3Qxe2ZpbGw6IzE1N0FEQjt9Cgkuc3Qye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6dXJsKCNYTUxJRF80N18pO30KCS5zdDN7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI1hNTElEXzU0Xyk7fQoJLnN0NHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfNTVfKTt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMzJfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIuNjI1IiB5MT0iMS41IiB4Mj0iMzAzLjYyNSIgeTI9IjEuNSI+Cgk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KCTxzdG9wICBvZmZzZXQ9IjUuNDIzMTUxZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yOTE1Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjQ3NDMiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREIiLz4KCTxzdG9wICBvZmZzZXQ9IjAuOTMyNyIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yOTg3Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjk5NzIiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8cGF0aCBpZD0iWE1MSURfMjhfIiBjbGFzcz0ic3QwIiBkPSJNMi42LDFoMzAxdjFIMi42VjF6Ii8+CjxwYXRoIGlkPSJYTUxJRF8yN18iIGNsYXNzPSJzdDEiIGQ9Ik0zMDQuNiwxdjFoLTFWMUgzMDQuNiBNMzA1LjYsMGgtM3YzaDNWMEwzMDUuNiwweiIvPgo8cGF0aCBpZD0iWE1MSURfMzFfIiBjbGFzcz0ic3QxIiBkPSJNMiwxdjFIMVYxSDIgTTMsMEgwdjNoM1YwTDMsMHoiLz4KPGxpbmVhckdyYWRpZW50IGlkPSJYTUxJRF80N18iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMS41IiB5MT0iMTU3IiB4Mj0iMS41IiB5Mj0iMiI+Cgk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iMC4xNjQiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjkxNSIvPgoJPHN0b3AgIG9mZnNldD0iMC41MDY4IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjgyOTkiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjk4NyIvPgoJPHN0b3AgIG9mZnNldD0iMC44NzUzIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzM0XyIgY2xhc3M9InN0MiIgZD0iTTEsMmgxdjE1NUgxVjJ6Ii8+CjxwYXRoIGlkPSJYTUxJRF82OV8iIGNsYXNzPSJzdDEiIGQ9Ik0yLDE1Ny40djFIMXYtMUgyIE0zLDE1Ni40SDB2M2gzVjE1Ni40TDMsMTU2LjR6Ii8+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfNTRfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIuMTI1IiB5MT0iMTU3Ljg3NSIgeDI9IjMwMy4xMjUiIHkyPSIxNTcuODc1Ij4KCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iNS40MjMxNTFlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjI5MTUiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNDc0MyIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQiIvPgoJPHN0b3AgIG9mZnNldD0iMC45MzI3IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjI5ODciLz4KCTxzdG9wICBvZmZzZXQ9IjAuOTk3MiIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGlkPSJYTUxJRF83MV8iIGNsYXNzPSJzdDMiIGQ9Ik0yLjEsMTU3LjRoMzAxdjFIMi4xVjE1Ny40eiIvPgo8cGF0aCBpZD0iWE1MSURfNzNfIiBjbGFzcz0ic3QxIiBkPSJNMzA0LjYsMTU3LjR2MWgtMXYtMUgzMDQuNiBNMzA1LjYsMTU2LjRoLTN2M2gzVjE1Ni40TDMwNS42LDE1Ni40eiIvPgo8bGluZWFyR3JhZGllbnQgaWQ9IlhNTElEXzU1XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIzMDQuMTE0NiIgeTE9IjE1NyIgeDI9IjMwNC4xMTQ2IiB5Mj0iMiI+Cgk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iMC4xNjQiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjkxNSIvPgoJPHN0b3AgIG9mZnNldD0iMC41MDY4IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjgyOTkiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjk4NyIvPgoJPHN0b3AgIG9mZnNldD0iMC44NzUzIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzc1XyIgY2xhc3M9InN0NCIgZD0iTTMwMy42LDJoMXYxNTVoLTFWMnoiLz4KPC9zdmc+Cg==) no-repeat;background-size:100% 100%;width:100%;margin:0 auto;height:40%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.app-deviceBox .daoZhacontent[data-v-251b924e],.app-deviceBox .diCicontent[data-v-251b924e],.app-deviceBox .PDAcontent[data-v-251b924e],.app-deviceBox .youDaocontent[data-v-251b924e]{margin:0 auto}.app-deviceBox .daoZhacontent div[data-v-251b924e],.app-deviceBox .diCicontent div[data-v-251b924e],.app-deviceBox .PDAcontent div[data-v-251b924e],.app-deviceBox .youDaocontent div[data-v-251b924e]{font-size:12px}.app-deviceBox .diCicontent span[data-v-251b924e],.app-deviceBox .PDAcontent span[data-v-251b924e]{background-image:-webkit-linear-gradient(bottom,#00cafe,#2772f4);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:24px}.app-deviceBox .daoZhacontent span[data-v-251b924e],.app-deviceBox .youDaocontent span[data-v-251b924e]{background-image:-webkit-linear-gradient(bottom,#ffba00,#ff8100);-webkit-background-clip:text;-webkit-text-fill-color:transparent;font-size:24px}.app-chinaMapBox[data-v-1f45fdc8]{margin:0;padding:0}.app-chinaMapBox .mapChart[data-v-1f45fdc8],.app-chinaMapBox[data-v-1f45fdc8]{position:relative;width:100%;height:100%}.app-chinaMapBox .cellBox[data-v-1f45fdc8]{width:33.333%;text-align:center}.app-chinaMapBox .mapTitle[data-v-1f45fdc8]{position:absolute;top:0;width:100%;height:70px;background-color:RGBA(0,45,140,.7);z-index:5}.app-chinaMapBox .parkTotalImg[data-v-1f45fdc8]{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDQ1IDQ1IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0NSA0NTsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMwMkMyMDI7fQoJLnN0MXtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiMwMkMyMDI7fQo8L3N0eWxlPgo8cGF0aCBpZD0iWE1MSURfMV8iIGNsYXNzPSJzdDAiIGQ9Ik0yMi41LDNDMzMuMiwzLDQyLDExLjcsNDIsMjIuNVMzMy4yLDQyLDIyLjUsNDJTMywzMy4zLDMsMjIuNVMxMS43LDMsMjIuNSwzIE0yMi41LDAKCUMxMC4xLDAsMCwxMC4xLDAsMjIuNVMxMC4xLDQ1LDIyLjUsNDVTNDUsMzQuOSw0NSwyMi41UzM0LjksMCwyMi41LDBMMjIuNSwweiIvPgo8ZyBpZD0iWE1MSURfMl8iPgoJPGcgaWQ9IlhNTElEXzNfIj4KCQk8cGF0aCBpZD0iWE1MSURfNV8iIGNsYXNzPSJzdDAiIGQ9Ik0yNSwxNWMyLjIsMCw0LDEuOCw0LDRzLTEuOCw0LTQsNGgtN3YtOEgyNSBNMjUsMTJIMTV2MTRoMTBjMy45LDAsNy0zLjEsNy03UzI4LjksMTIsMjUsMTIKCQkJTDI1LDEyeiIvPgoJPC9nPgoJPHBhdGggaWQ9IlhNTElEXzZfIiBjbGFzcz0ic3QxIiBkPSJNMTUsMTJoM3YyM2gtM1YxMnoiLz4KPC9nPgo8L3N2Zz4K) no-repeat;background-size:100% 100%;width:45px;height:45px}.app-chinaMapBox .memberTotalImg[data-v-1f45fdc8]{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDQ1IDQ1IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0NSA0NTsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiNGRkFCMDA7fQo8L3N0eWxlPgo8cGF0aCBpZD0iWE1MSURfMV8iIGNsYXNzPSJzdDAiIGQ9Ik0yMi41LDNDMzMuMywzLDQyLDExLjcsNDIsMjIuNVMzMy4zLDQyLDIyLjUsNDJTMywzMy4zLDMsMjIuNVMxMS43LDMsMjIuNSwzIE0yMi41LDAKCUMxMC4xLDAsMCwxMC4xLDAsMjIuNVMxMC4xLDQ1LDIyLjUsNDVTNDUsMzQuOSw0NSwyMi41UzM0LjksMCwyMi41LDBMMjIuNSwweiIvPgo8cGF0aCBpZD0iWE1MSURfM18iIGNsYXNzPSJzdDAiIGQ9Ik0yMi41LDE0LjFjMi43LDAsNSwyLjEsNSw0LjljMCwyLjgtMi4yLDUuMS01LDUuMWMtMi43LDAtNS0yLjMtNS01LjEKCUMxNy41LDE2LjEsMTkuNywxNC4xLDIyLjUsMTQuMSBNMjcuNSwyNC4zYzAuNCwwLDAuOSwwLjEsMS4zLDAuNmMxLjMsMS4zLDIuNCwzLjYsMi40LDMuNmwwLjgsMS40YzAsMS0xLjEsMS4xLTEuNSwxLjEKCWMtMC4xLDAtMC4xLDAtMC4xLDBIMTQuN2MwLDAsMCwwLTAuMSwwYy0wLjQsMC0xLjYtMC4xLTEuNi0xLjFsMC43LTEuNGMwLDAsMS4yLTIuMiwyLjUtMy41YzAuNC0wLjQsMC45LTAuNiwxLjQtMC42CgljMC45LDAsMiwxLjksNC42LDEuOEgyM0MyNi4yLDI2LjEsMjYuNywyNC4zLDI3LjUsMjQuMyBNMjIuNSwxMS4xYy00LjUsMC04LDMuNS04LDcuOWMwLDEuMSwwLjIsMi4xLDAuNiwzYy0wLjMsMC4yLTAuNywwLjQtMSwwLjcKCWMtMS42LDEuNi0yLjksNC0zLjEsNC4zbC0wLjcsMS40TDEwLDI5LjF2MC43YzAsMi40LDIsNC4xLDQuNiw0LjFjMC4xLDAsMC4xLDAsMC4xLDBoMTUuNWMwLjEsMCwwLjEsMCwwLjIsMGMyLjYsMCw0LjUtMS43LDQuNS00LjEKCXYtMC44bC0wLjQtMC43bC0wLjctMS4zYy0wLjMtMC41LTEuNC0yLjgtMy00LjRjLTAuMy0wLjMtMC43LTAuNi0xLjEtMC44YzAuNC0wLjksMC42LTEuOSwwLjYtM0MzMC41LDE0LjUsMjcsMTEuMSwyMi41LDExLjEKCUwyMi41LDExLjF6Ii8+Cjwvc3ZnPgo=) no-repeat;background-size:100% 100%;width:45px;height:45px}.app-chinaMapBox .dayTotalImg[data-v-1f45fdc8]{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDQ1IDQ1IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0NSA0NTsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiNGRkY4MDA7fQoJLnN0MXtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNGRkY4MDA7fQo8L3N0eWxlPgo8cGF0aCBpZD0iWE1MSURfMV8iIGNsYXNzPSJzdDAiIGQ9Ik0yMi41LDNDMzMuMywzLDQyLDExLjcsNDIsMjIuNVMzMy4zLDQyLDIyLjUsNDJTMywzMy4zLDMsMjIuNVMxMS43LDMsMjIuNSwzIE0yMi41LDAKCUMxMC4xLDAsMCwxMC4xLDAsMjIuNVMxMC4xLDQ1LDIyLjUsNDVTNDUsMzQuOSw0NSwyMi41UzM0LjksMCwyMi41LDBMMjIuNSwweiIvPgo8ZyBpZD0iWE1MSURfMl8iPgoJPGcgaWQ9IlhNTElEXzVfIj4KCQk8ZyBpZD0iWE1MSURfNDZfIj4KCQkJPHBhdGggaWQ9IlhNTElEXzQ3XyIgY2xhc3M9InN0MSIgZD0iTTMyLDEzSDEzYy0wLjgsMC0xLjUsMC43LTEuNSwxLjVjMCwwLjgsMC43LDEuNSwxLjUsMS41aDE5YzAuOCwwLDEuNS0wLjcsMS41LTEuNQoJCQkJQzMzLjUsMTMuNywzMi44LDEzLDMyLDEzeiBNMTMsMjRoMTFjMC44LDAsMS41LTAuNywxLjUtMS41YzAtMC44LTAuNy0xLjUtMS41LTEuNUgxM2MtMC44LDAtMS41LDAuNy0xLjUsMS41CgkJCQlDMTEuNSwyMy4zLDEyLjIsMjQsMTMsMjR6IE0yOSwyOUgxM2MtMC44LDAtMS41LDAuNy0xLjUsMS41YzAsMC44LDAuNywxLjUsMS41LDEuNWgxNmMwLjgsMCwxLjUtMC43LDEuNS0xLjUKCQkJCUMzMC41LDI5LjcsMjkuOCwyOSwyOSwyOXoiLz4KCQk8L2c+Cgk8L2c+CjwvZz4KPC9zdmc+Cg==) no-repeat;background-size:100% 100%;width:45px;height:45px}.app-chinaMapBox .parkTotalTb[data-v-1f45fdc8]{display:inline-block;margin-top:2px}.app-chinaMapBox .infoBox[data-v-1f45fdc8]{margin-left:5px;text-align:left}.app-chinaMapBox .infoBox>div[data-v-1f45fdc8]:first-child{font-size:24px}.app-chinaMapBox .infoBox>div[data-v-1f45fdc8]:last-child{color:#00cffe;font-size:14px}.app-weekAndDayBox[data-v-7d7e5312]{width:100%}.app-weekAndDayBox .theme-card[data-v-7d7e5312]{height:100%}.app-weekAndDayBox .lineChart[data-v-7d7e5312]{position:absolute;margin:0 auto;top:0;bottom:0;left:0;width:100%;height:100%}.app-weekAndDayBox .u-uDay[data-v-7d7e5312],.app-weekAndDayBox .u-uWeek[data-v-7d7e5312]{height:100%}.app-uDayBox[data-v-54faaf43]{width:100%}.app-uDayBox .theme-card2[data-v-54faaf43]{height:100%}.app-uDayBox .lineChart[data-v-54faaf43]{position:absolute;margin:auto;top:0;bottom:0;left:0;width:100%;height:100%}.app-uDayBox .contentBox[data-v-54faaf43]{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDMwNS42IDE1OS40IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMDUuNiAxNTkuNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfMzJfKTt9Cgkuc3Qxe2ZpbGw6IzE1N0FEQjt9Cgkuc3Qye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6dXJsKCNYTUxJRF80N18pO30KCS5zdDN7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI1hNTElEXzU0Xyk7fQoJLnN0NHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfNTVfKTt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMzJfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIuNjI1IiB5MT0iMS41IiB4Mj0iMzAzLjYyNSIgeTI9IjEuNSI+Cgk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KCTxzdG9wICBvZmZzZXQ9IjUuNDIzMTUxZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yOTE1Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjQ3NDMiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREIiLz4KCTxzdG9wICBvZmZzZXQ9IjAuOTMyNyIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yOTg3Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjk5NzIiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8cGF0aCBpZD0iWE1MSURfMjhfIiBjbGFzcz0ic3QwIiBkPSJNMi42LDFoMzAxdjFIMi42VjF6Ii8+CjxwYXRoIGlkPSJYTUxJRF8yN18iIGNsYXNzPSJzdDEiIGQ9Ik0zMDQuNiwxdjFoLTFWMUgzMDQuNiBNMzA1LjYsMGgtM3YzaDNWMEwzMDUuNiwweiIvPgo8cGF0aCBpZD0iWE1MSURfMzFfIiBjbGFzcz0ic3QxIiBkPSJNMiwxdjFIMVYxSDIgTTMsMEgwdjNoM1YwTDMsMHoiLz4KPGxpbmVhckdyYWRpZW50IGlkPSJYTUxJRF80N18iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMS41IiB5MT0iMTU3IiB4Mj0iMS41IiB5Mj0iMiI+Cgk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iMC4xNjQiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjkxNSIvPgoJPHN0b3AgIG9mZnNldD0iMC41MDY4IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjgyOTkiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjk4NyIvPgoJPHN0b3AgIG9mZnNldD0iMC44NzUzIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzM0XyIgY2xhc3M9InN0MiIgZD0iTTEsMmgxdjE1NUgxVjJ6Ii8+CjxwYXRoIGlkPSJYTUxJRF82OV8iIGNsYXNzPSJzdDEiIGQ9Ik0yLDE1Ny40djFIMXYtMUgyIE0zLDE1Ni40SDB2M2gzVjE1Ni40TDMsMTU2LjR6Ii8+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfNTRfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIuMTI1IiB5MT0iMTU3Ljg3NSIgeDI9IjMwMy4xMjUiIHkyPSIxNTcuODc1Ij4KCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iNS40MjMxNTFlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjI5MTUiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNDc0MyIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQiIvPgoJPHN0b3AgIG9mZnNldD0iMC45MzI3IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjI5ODciLz4KCTxzdG9wICBvZmZzZXQ9IjAuOTk3MiIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGlkPSJYTUxJRF83MV8iIGNsYXNzPSJzdDMiIGQ9Ik0yLjEsMTU3LjRoMzAxdjFIMi4xVjE1Ny40eiIvPgo8cGF0aCBpZD0iWE1MSURfNzNfIiBjbGFzcz0ic3QxIiBkPSJNMzA0LjYsMTU3LjR2MWgtMXYtMUgzMDQuNiBNMzA1LjYsMTU2LjRoLTN2M2gzVjE1Ni40TDMwNS42LDE1Ni40eiIvPgo8bGluZWFyR3JhZGllbnQgaWQ9IlhNTElEXzU1XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIzMDQuMTE0NiIgeTE9IjE1NyIgeDI9IjMwNC4xMTQ2IiB5Mj0iMiI+Cgk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iMC4xNjQiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjkxNSIvPgoJPHN0b3AgIG9mZnNldD0iMC41MDY4IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjgyOTkiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjk4NyIvPgoJPHN0b3AgIG9mZnNldD0iMC44NzUzIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzc1XyIgY2xhc3M9InN0NCIgZD0iTTMwMy42LDJoMXYxNTVoLTFWMnoiLz4KPC9zdmc+Cg==) no-repeat;background-size:100% 100%;width:100%;height:100%;position:relative}.app-uWeekBox[data-v-1ec678c6]{width:100%}.app-uWeekBox .theme-card2[data-v-1ec678c6]{height:100%}.app-uWeekBox .weekChart[data-v-1ec678c6]{position:absolute;margin:auto;top:0;bottom:0;left:0;width:100%;height:100%}.app-uWeekBox .contentBox[data-v-1ec678c6]{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDMwNS42IDE1OS40IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMDUuNiAxNTkuNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfMzJfKTt9Cgkuc3Qxe2ZpbGw6IzE1N0FEQjt9Cgkuc3Qye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6dXJsKCNYTUxJRF80N18pO30KCS5zdDN7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI1hNTElEXzU0Xyk7fQoJLnN0NHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfNTVfKTt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMzJfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIuNjI1IiB5MT0iMS41IiB4Mj0iMzAzLjYyNSIgeTI9IjEuNSI+Cgk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KCTxzdG9wICBvZmZzZXQ9IjUuNDIzMTUxZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yOTE1Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjQ3NDMiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREIiLz4KCTxzdG9wICBvZmZzZXQ9IjAuOTMyNyIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yOTg3Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjk5NzIiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8cGF0aCBpZD0iWE1MSURfMjhfIiBjbGFzcz0ic3QwIiBkPSJNMi42LDFoMzAxdjFIMi42VjF6Ii8+CjxwYXRoIGlkPSJYTUxJRF8yN18iIGNsYXNzPSJzdDEiIGQ9Ik0zMDQuNiwxdjFoLTFWMUgzMDQuNiBNMzA1LjYsMGgtM3YzaDNWMEwzMDUuNiwweiIvPgo8cGF0aCBpZD0iWE1MSURfMzFfIiBjbGFzcz0ic3QxIiBkPSJNMiwxdjFIMVYxSDIgTTMsMEgwdjNoM1YwTDMsMHoiLz4KPGxpbmVhckdyYWRpZW50IGlkPSJYTUxJRF80N18iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMS41IiB5MT0iMTU3IiB4Mj0iMS41IiB5Mj0iMiI+Cgk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iMC4xNjQiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjkxNSIvPgoJPHN0b3AgIG9mZnNldD0iMC41MDY4IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjgyOTkiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjk4NyIvPgoJPHN0b3AgIG9mZnNldD0iMC44NzUzIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzM0XyIgY2xhc3M9InN0MiIgZD0iTTEsMmgxdjE1NUgxVjJ6Ii8+CjxwYXRoIGlkPSJYTUxJRF82OV8iIGNsYXNzPSJzdDEiIGQ9Ik0yLDE1Ny40djFIMXYtMUgyIE0zLDE1Ni40SDB2M2gzVjE1Ni40TDMsMTU2LjR6Ii8+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfNTRfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIuMTI1IiB5MT0iMTU3Ljg3NSIgeDI9IjMwMy4xMjUiIHkyPSIxNTcuODc1Ij4KCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iNS40MjMxNTFlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjI5MTUiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNDc0MyIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQiIvPgoJPHN0b3AgIG9mZnNldD0iMC45MzI3IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjI5ODciLz4KCTxzdG9wICBvZmZzZXQ9IjAuOTk3MiIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGlkPSJYTUxJRF83MV8iIGNsYXNzPSJzdDMiIGQ9Ik0yLjEsMTU3LjRoMzAxdjFIMi4xVjE1Ny40eiIvPgo8cGF0aCBpZD0iWE1MSURfNzNfIiBjbGFzcz0ic3QxIiBkPSJNMzA0LjYsMTU3LjR2MWgtMXYtMUgzMDQuNiBNMzA1LjYsMTU2LjRoLTN2M2gzVjE1Ni40TDMwNS42LDE1Ni40eiIvPgo8bGluZWFyR3JhZGllbnQgaWQ9IlhNTElEXzU1XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIzMDQuMTE0NiIgeTE9IjE1NyIgeDI9IjMwNC4xMTQ2IiB5Mj0iMiI+Cgk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iMC4xNjQiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjkxNSIvPgoJPHN0b3AgIG9mZnNldD0iMC41MDY4IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjgyOTkiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjk4NyIvPgoJPHN0b3AgIG9mZnNldD0iMC44NzUzIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzc1XyIgY2xhc3M9InN0NCIgZD0iTTMwMy42LDJoMXYxNTVoLTFWMnoiLz4KPC9zdmc+Cg==) no-repeat;background-size:100% 100%;width:100%;height:100%;position:relative}.el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-pagination--small .arrow.disabled,.el-table--hidden,.el-table .hidden-columns,.el-table td.is-hidden>*,.el-table th.is-hidden>*{visibility:hidden}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing),.el-message__closeBtn:focus,.el-message__content:focus,.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing),.el-rate:active,.el-rate:focus,.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing),.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}@font-face{font-family:element-icons;src:url(data:application/font-woff;base64,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) format("woff"),url(static/fonts/element-icons.6f0a763.ttf) format("truetype");font-weight:400;font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-info:before{content:"\E61A"}.el-icon-error:before{content:"\E62C"}.el-icon-success:before{content:"\E62D"}.el-icon-warning:before{content:"\E62E"}.el-icon-question:before{content:"\E634"}.el-icon-back:before{content:"\E606"}.el-icon-arrow-left:before{content:"\E600"}.el-icon-arrow-down:before{content:"\E603"}.el-icon-arrow-right:before{content:"\E604"}.el-icon-arrow-up:before{content:"\E605"}.el-icon-caret-left:before{content:"\E60A"}.el-icon-caret-bottom:before{content:"\E60B"}.el-icon-caret-top:before{content:"\E60C"}.el-icon-caret-right:before{content:"\E60E"}.el-icon-d-arrow-left:before{content:"\E610"}.el-icon-d-arrow-right:before{content:"\E613"}.el-icon-minus:before{content:"\E621"}.el-icon-plus:before{content:"\E62B"}.el-icon-remove:before{content:"\E635"}.el-icon-circle-plus:before{content:"\E601"}.el-icon-remove-outline:before{content:"\E63C"}.el-icon-circle-plus-outline:before{content:"\E602"}.el-icon-close:before{content:"\E60F"}.el-icon-check:before{content:"\E611"}.el-icon-circle-close:before{content:"\E607"}.el-icon-circle-check:before{content:"\E639"}.el-icon-circle-close-outline:before{content:"\E609"}.el-icon-circle-check-outline:before{content:"\E63E"}.el-icon-zoom-out:before{content:"\E645"}.el-icon-zoom-in:before{content:"\E641"}.el-icon-d-caret:before{content:"\E615"}.el-icon-sort:before{content:"\E640"}.el-icon-sort-down:before{content:"\E630"}.el-icon-sort-up:before{content:"\E631"}.el-icon-tickets:before{content:"\E63F"}.el-icon-document:before{content:"\E614"}.el-icon-goods:before{content:"\E618"}.el-icon-sold-out:before{content:"\E63B"}.el-icon-news:before{content:"\E625"}.el-icon-message:before{content:"\E61B"}.el-icon-date:before{content:"\E608"}.el-icon-printer:before{content:"\E62F"}.el-icon-time:before{content:"\E642"}.el-icon-bell:before{content:"\E622"}.el-icon-mobile-phone:before{content:"\E624"}.el-icon-service:before{content:"\E63A"}.el-icon-view:before{content:"\E643"}.el-icon-menu:before{content:"\E620"}.el-icon-more:before{content:"\E646"}.el-icon-more-outline:before{content:"\E626"}.el-icon-star-on:before{content:"\E637"}.el-icon-star-off:before{content:"\E63D"}.el-icon-location:before{content:"\E61D"}.el-icon-location-outline:before{content:"\E61F"}.el-icon-phone:before{content:"\E627"}.el-icon-phone-outline:before{content:"\E628"}.el-icon-picture:before{content:"\E629"}.el-icon-picture-outline:before{content:"\E62A"}.el-icon-delete:before{content:"\E612"}.el-icon-search:before{content:"\E619"}.el-icon-edit:before{content:"\E61C"}.el-icon-edit-outline:before{content:"\E616"}.el-icon-rank:before{content:"\E632"}.el-icon-refresh:before{content:"\E633"}.el-icon-share:before{content:"\E636"}.el-icon-setting:before{content:"\E638"}.el-icon-upload:before{content:"\E60D"}.el-icon-upload2:before{content:"\E644"}.el-icon-download:before{content:"\E617"}.el-icon-loading:before{content:"\E61E"}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination:after,.el-pagination:before{display:table;content:""}.el-pagination:after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#409eff}.el-pagination button:disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:50% no-repeat #fff;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#c0c4cc;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .more:before,.el-pagination--small li.more:before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#409eff}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#c0c4cc}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#409eff}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#409eff;color:#fff}.el-dialog,.el-pager li{background:#fff;-webkit-box-sizing:border-box}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;font-size:0}.el-pager,.el-radio,.el-table th{-webkit-user-select:none}.el-date-table,.el-radio,.el-table th{-moz-user-select:none;-ms-user-select:none}.el-pager .more:before{line-height:30px}.el-pager li{padding:0 4px;font-size:13px;min-width:35.5px;height:28px;line-height:28px;box-sizing:border-box;text-align:center}.el-menu--collapse .el-menu .el-submenu,.el-menu--popup{min-width:200px}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#c0c4cc}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#409eff}.el-pager li.active{color:#409eff;cursor:default}.el-dialog{position:relative;margin:0 auto 50px;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#409eff}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px}.el-dialog__footer{padding:10px 20px 20px;text-align:right;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{animation:dialog-fade-in .3s}.dialog-fade-leave-active{animation:dialog-fade-out .3s}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #e4e7ed;overflow:hidden;box-sizing:border-box}.el-dropdown-menu,.el-menu--collapse .el-submenu .el-menu{z-index:10;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;box-sizing:border-box;overflow:auto;background-color:#fff}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#f5f7fa}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#fff}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button:before{content:"";position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:hsla(0,0%,100%,.5)}.el-dropdown .el-dropdown__caret-button:hover:before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown-menu{position:absolute;top:0;left:0;padding:10px 0;margin:5px 0;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#606266;cursor:pointer;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ecf5ff;color:#66b1ff}.el-dropdown-menu__item--divided:before,.el-menu,.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #ebeef5}.el-dropdown-menu__item--divided:before{content:"";height:6px;display:block;margin:0 -20px}.el-menu:after,.el-menu:before,.el-radio__inner:after,.el-switch__core:after{content:""}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:1px solid #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0}.el-menu:after,.el-menu:before{display:table}.el-menu:after{clear:both}.el-menu.el-menu--horizontal{border-bottom:1px solid #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #409eff;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #409eff;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;border:1px solid #e4e7ed;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;position:relative;-webkit-box-sizing:border-box;white-space:nowrap;list-style:none}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{transform:none}.el-menu--popup{z-index:100;border:none;padding:5px 0;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#ecf5ff}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#409eff}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#ecf5ff}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#ecf5ff}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;transition:transform .3s;font-size:12px}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-submenu.is-active .el-submenu__title{border-bottom-color:#409eff}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{transform:rotate(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio,.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{transition:.2s;opacity:0}.el-radio{color:#606266;font-weight:500;line-height:1;cursor:pointer;white-space:nowrap;outline:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#409eff}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio+.el-radio{margin-left:30px}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner:after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#409eff;background:#409eff}.el-radio__input.is-checked .el-radio__inner:after{transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#409eff}.el-radio__input.is-focus .el-radio__inner{border-color:#409eff}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;cursor:pointer;box-sizing:border-box}.el-radio-button__inner,.el-switch__core{-webkit-box-sizing:border-box;vertical-align:middle}.el-radio__inner:hover{border-color:#409eff}.el-radio__inner:after{width:4px;height:4px;border-radius:100%;background-color:#fff;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio-button,.el-radio-button__inner{display:inline-block;position:relative;outline:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px #409eff}.el-radio__label{font-size:14px;padding-left:10px}.el-radio-group{display:inline-block;line-height:1;vertical-align:middle;font-size:0}.el-radio-button__inner{line-height:1;white-space:nowrap;background:#fff;border:1px solid #dcdfe6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;margin:0;cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#409eff}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#409eff;border-color:#409eff;box-shadow:-1px 0 0 0 #409eff}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#f2f6fc}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-popover,.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){box-shadow:0 0 2px 2px #409eff}.el-switch{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#409eff}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #dcdfe6;outline:0;border-radius:10px;box-sizing:border-box;background:#dcdfe6;transition:border-color .3s,background-color .3s}.el-switch__core:after{position:absolute;top:1px;left:1px;border-radius:100%;transition:all .3s;width:16px;height:16px;background-color:#fff}.el-switch.is-checked .el-switch__core{border-color:#409eff;background-color:#409eff}.el-switch.is-checked .el-switch__core:after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #e4e7ed;border-radius:4px;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#409eff;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected:after{position:absolute;right:20px;font-family:element-icons;content:"\E611";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#f5f7fa}.el-select-dropdown__item.selected{color:#409eff;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type):after{content:"";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e4e7ed}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#c0c4cc}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#409eff}.el-select .el-input .el-select__caret{color:#c0c4cc;font-size:14px;transition:transform .3s;transform:rotate(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{transform:rotate(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;transform:rotate(180deg);border-radius:100%;color:#c0c4cc;transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#e4e7ed}.el-select .el-input.is-focus .el-input__inner{border-color:#409eff}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#c0c4cc;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;transform:translateY(-50%);display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select .el-tag__close{margin-top:-2px}.el-select .el-tag{box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5}.el-select .el-tag__close.el-icon-close{background-color:#c0c4cc;right:-7px;top:0;color:#fff}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#fff}.el-select .el-tag__close.el-icon-close:before{display:block;transform:translateY(.5px)}.el-table{position:relative;overflow:hidden;box-sizing:border-box;-ms-flex:1;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table--mini,.el-table--small,.el-table__expand-icon{font-size:12px}.el-table__empty-block{min-height:60px;text-align:center;width:100%;height:100%;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;transition:transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit td.gutter,.el-table--fit th.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th{background:#f5f7fa}.el-table th,.el-table tr{background-color:#fff}.el-table td,.el-table th{padding:12px 0;min-width:0;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table th>.cell,.el-table th div{-webkit-box-sizing:border-box;display:inline-block}.el-table td.is-center,.el-table th.is-center{text-align:center}.el-table td.is-right,.el-table th.is-right{text-align:right}.el-table td.gutter,.el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table--medium td,.el-table--medium th{padding:10px 0}.el-table--small td,.el-table--small th{padding:8px 0}.el-table--mini td,.el-table--mini th{padding:6px 0}.el-table .cell,.el-table th div{padding-right:10px;overflow:hidden;text-overflow:ellipsis}.el-table--border td:first-child .cell,.el-table--border th:first-child .cell,.el-table .cell,.el-table th div{padding-left:10px}.el-table tr input[type=checkbox]{margin:0}.el-table td,.el-table th.is-leaf{border-bottom:1px solid #ebeef5}.el-table th.is-sortable{cursor:pointer}.el-table th{white-space:nowrap;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-table th div{line-height:40px;box-sizing:border-box;white-space:nowrap}.el-table th>.cell{position:relative;word-wrap:normal;text-overflow:ellipsis;vertical-align:middle;width:100%;box-sizing:border-box}.el-table th>.cell.highlight{color:#409eff}.el-table th.required>div:before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td div{box-sizing:border-box}.el-table td.gutter{width:0}.el-table .cell{box-sizing:border-box;white-space:normal;word-break:break-all;line-height:23px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #ebeef5}.el-table--border:after,.el-table--group:after,.el-table:before{content:"";position:absolute;background-color:#ebeef5;z-index:1}.el-table--border:after,.el-table--group:after{top:0;right:0;width:1px;height:100%}.el-table:before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border td,.el-table--border th,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #ebeef5}.el-table--border th.gutter:last-of-type{border-bottom:1px solid #ebeef5;border-bottom-width:1px}.el-table--border th,.el-table__fixed-right-patch{border-bottom:1px solid #ebeef5}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right:before,.el-table__fixed:before{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#ebeef5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#fff}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td{border-top:1px solid #ebeef5;background-color:#f5f7fa;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td{border-top:1px solid #ebeef5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td,.el-table__header-wrapper tbody td{background-color:#f5f7fa;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{box-shadow:none}.el-picker-panel,.el-table-filter{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #ebeef5}.el-table .caret-wrapper{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#c0c4cc;top:5px}.el-table .sort-caret.descending{border-top-color:#c0c4cc;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#409eff}.el-table .descending .sort-caret.descending{border-top-color:#409eff}.el-table .hidden-columns{position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td{background:#fafafa}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td,.el-table__body tr.current-row>td,.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{background-color:#ecf5ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #ebeef5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;transform:scale(.75)}.el-table--enable-row-transition .el-table__body td{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#f5f7fa}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #ebeef5;border-radius:2px;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-sizing:border-box;margin:2px 0}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ecf5ff;color:#66b1ff}.el-table-filter__list-item.is-active{background-color:#409eff;color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #ebeef5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div,.el-date-table td.in-range div,.el-date-table td.in-range div:hover{background-color:#f2f6fc}.el-table-filter__bottom button:hover{color:#409eff}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-webkit-user-select:none;user-select:none}.el-date-table,.el-slider__button-wrapper,.el-time-panel{-moz-user-select:none;-ms-user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;height:30px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{height:30px;padding:3px 0;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;transform:translateX(-50%);border-radius:50%}.el-month-table td .cell,.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px}.el-date-table td.next-month,.el-date-table td.prev-month{color:#c0c4cc}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#409eff;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#fff}.el-date-table td.available:hover{color:#409eff}.el-date-table td.current:not(.disabled) span{color:#fff;background-color:#409eff}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#fff}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#409eff}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#f5f7fa;opacity:1;cursor:not-allowed;color:#c0c4cc}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#f2f6fc;border-radius:15px}.el-date-table td.selected div:hover{background-color:#f2f6fc}.el-date-table td.selected span{background-color:#409eff;color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:1px solid #ebeef5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-month-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-month-table td.disabled .cell:hover{color:#c0c4cc}.el-month-table td .cell{color:#606266;margin:0 auto}.el-month-table td .cell:hover,.el-month-table td.current:not(.disabled) .cell{color:#409eff}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-year-table td.disabled .cell:hover{color:#c0c4cc}.el-year-table td .cell{color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#409eff}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content.is-right .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:1px solid #ebeef5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#409eff}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#409eff;font-weight:700}.time-select-item.disabled{color:#e4e7ed;cursor:not-allowed}.time-select-item:hover{background-color:#f5f7fa;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input,.el-date-editor .el-range-separator{height:100%;margin:0;text-align:center;display:inline-block;font-size:14px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;padding:0;width:39%;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input:-ms-input-placeholder,.el-date-editor .el-range-input::-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{padding:0 5px;line-height:32px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active,.el-range-editor.is-active:hover{border-color:#409eff}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e4e7ed}.el-range-editor.is-disabled input{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input:-ms-input-placeholder,.el-range-editor.is-disabled input::-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e4e7ed;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-popover,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#409eff}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#409eff}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#409eff}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#409eff}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#c0c4cc;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #e4e7ed;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-sizing:content-box}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content:after,.el-time-panel__content:before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #e4e7ed;border-bottom:1px solid #e4e7ed}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds:after{left:66.66667%}.el-time-panel__content.has-seconds:before{padding-left:33.33333%}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#409eff}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #e4e7ed}.el-popover{position:absolute;background:#fff;min-width:150px;border:1px solid #ebeef5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.v-modal-enter{animation:v-modal-in .2s ease}.v-modal-leave{animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#fff;border-radius:4px;border:1px solid #ebeef5;font-size:18px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper:after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#f56c6c}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#409eff}.el-message-box__content{position:relative;padding:10px 15px;color:#606266;font-size:14px}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;transform:translateY(-50%);font-size:24px!important}.el-message-box__status:before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67c23a}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#e6a23c}.el-message-box__status.el-icon-error{color:#f56c6c}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#f56c6c;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{animation:msgbox-fade-out .3s}@keyframes msgbox-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes msgbox-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{display:table;content:""}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#c0c4cc}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner.is-link,.el-breadcrumb__inner a{font-weight:700;text-decoration:none;transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner.is-link:hover,.el-breadcrumb__inner a:hover{color:#409eff;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form-item__content .el-input-group,.el-form-item__label,.el-tag .el-icon-close{vertical-align:middle}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item:after,.el-form-item:before{display:table;content:""}.el-form-item:after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label{text-align:right;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content:after,.el-form-item__content:before{display:table;content:""}.el-form-item__content:after{clear:both}.el-form-item__error{color:#f56c6c;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:"*";color:#f56c6c;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#f56c6c}.el-form-item.is-success .el-input__inner,.el-form-item.is-success .el-input__inner:focus,.el-form-item.is-success .el-textarea__inner,.el-form-item.is-success .el-textarea__inner:focus{border-color:#67c23a}.el-form-item.is-success .el-input-group__append .el-input__inner,.el-form-item.is-success .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-success .el-input__validateIcon{color:#67c23a}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#409eff;z-index:1;transition:transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;transition:all .15s}.el-tabs__new-tab .el-icon-plus{transform:scale(.8)}.el-tabs__new-tab:hover{color:#409eff}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#e4e7ed;z-index:1}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after,.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){box-shadow:inset 0 0 2px 2px #409eff;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#c0c4cc;color:#fff}.el-tabs__item.is-active{color:#409eff}.el-tabs__item:hover{color:#409eff;cursor:pointer}.el-tabs__item.is-disabled{color:#c0c4cc;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #e4e7ed}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #e4e7ed;border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-alert,.el-tag{-webkit-box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #e4e7ed;transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--border-card{background:#fff;border:1px solid #dcdfe6;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin:-1px -1px 0;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#409eff;background-color:#fff;border-right-color:#dcdfe6;border-left-color:#dcdfe6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#409eff}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#c0c4cc}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--left .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--left .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card .el-tabs__item:last-child,.el-tabs--top.el-tabs--card .el-tabs__item:last-child,.el-tabs--top .el-tabs--left .el-tabs__item:last-child,.el-tabs--top .el-tabs--right .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #dcdfe6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #e4e7ed;border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #e4e7ed;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #e4e7ed;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #e4e7ed;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tag,.slideInLeft-transition,.slideInRight-transition{display:inline-block}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #e4e7ed;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #e4e7ed;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #e4e7ed;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInRight-enter{animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;animation:slideInRight-leave .3s}.slideInLeft-enter{animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;animation:slideInLeft-leave .3s}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}to{transform-origin:0 0;transform:translateX(100%);opacity:0}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(-100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}to{transform-origin:0 0;transform:translateX(-100%);opacity:0}}.el-tag{background-color:rgba(64,158,255,.1);padding:0 10px;height:32px;line-height:30px;font-size:12px;color:#409eff;border-radius:4px;box-sizing:border-box;border:1px solid rgba(64,158,255,.2);white-space:nowrap}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;top:-1px;right:-5px;color:#409eff}.el-tag .el-icon-close:before{display:block}.el-tag .el-icon-close:hover{background-color:#409eff;color:#fff}.el-tag--info,.el-tag--info .el-tag__close{color:#909399}.el-tag--info{background-color:hsla(220,4%,58%,.1);border-color:hsla(220,4%,58%,.2)}.el-tag--info.is-hit{border-color:#909399}.el-tag--info .el-tag__close:hover{background-color:#909399;color:#fff}.el-tag--success{background-color:rgba(103,194,58,.1);border-color:rgba(103,194,58,.2);color:#67c23a}.el-tag--success.is-hit{border-color:#67c23a}.el-tag--success .el-tag__close{color:#67c23a}.el-tag--success .el-tag__close:hover{background-color:#67c23a;color:#fff}.el-tag--warning{background-color:rgba(230,162,60,.1);border-color:rgba(230,162,60,.2);color:#e6a23c}.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--warning .el-tag__close:hover{background-color:#e6a23c;color:#fff}.el-tag--danger{background-color:hsla(0,87%,69%,.1);border-color:hsla(0,87%,69%,.2);color:#f56c6c}.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--danger .el-tag__close:hover{background-color:#f56c6c;color:#fff}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;transform:scale(.7)}.el-tree{position:relative;cursor:default;background:#fff;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#6f7180}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#409eff}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#f5f7fa}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#409eff;color:#fff}.el-tree-node__content{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#f5f7fa}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#c0c4cc;font-size:12px;transform:rotate(0);transition:transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#c0c4cc}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;transition:opacity .2s}.el-alert.is-center{-ms-flex-pack:center;justify-content:center}.el-alert--success{background-color:#f0f9eb;color:#67c23a}.el-alert--success .el-alert__description{color:#67c23a}.el-alert--info{background-color:#f4f4f5;color:#909399}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning{background-color:#fdf6ec;color:#e6a23c}.el-alert--warning .el-alert__description{color:#e6a23c}.el-alert--error{background-color:#fef0f0;color:#f56c6c}.el-alert--error .el-alert__description{color:#f56c6c}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;color:#c0c4cc;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active{opacity:0}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67c23a}.el-notification .el-icon-error{color:#f56c6c}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#e6a23c}.el-notification-fade-enter.right{right:0;transform:translateX(100%)}.el-notification-fade-enter.left{left:0;transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#409eff}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#409eff}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #dcdfe6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #dcdfe6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#e4e7ed;color:#e4e7ed}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#e4e7ed;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #dcdfe6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #dcdfe6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow:after{content:" ";border-width:5px}.el-progress-bar__inner:after,.el-row:after,.el-row:before,.el-slider:after,.el-slider:before,.el-slider__button-wrapper:after,.el-upload-cover:after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow:after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow:after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow:after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow:after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow:after{border-right-color:#fff}.el-slider:after,.el-slider:before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper:after{vertical-align:middle;display:inline-block}.el-slider:after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#e4e7ed;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button{border-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{transform:scale(1);cursor:not-allowed}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#409eff;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;position:absolute;z-index:1001;top:-15px;transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;user-select:none;line-height:normal}.el-slider__button,.el-slider__button-wrapper,.el-step__icon-inner{-moz-user-select:none;-ms-user-select:none}.el-slider__button-wrapper:after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #409eff;background-color:#fff;border-radius:50%;transition:.2s;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-button,.el-checkbox,.el-slider__button,.el-step__icon-inner{-webkit-user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{position:absolute;height:6px;width:6px;border-radius:100%;background-color:#fff;transform:translateX(-50%)}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #dcdfe6;line-height:20px;box-sizing:border-box;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#c0c4cc}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#409eff}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:hsla(0,0%,100%,.9);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-2,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-pull-10,.el-col-pull-11,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-push-0,.el-col-push-1,.el-col-push-2,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-row{position:relative}.el-loading-spinner .el-loading-text{color:#409eff;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409eff;stroke-linecap:round}.el-loading-spinner i{color:#409eff}@keyframes loading-rotate{to{transform:rotate(1turn)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{box-sizing:border-box}.el-row:after,.el-row:before{display:table}.el-row:after{clear:both}.el-row--flex{display:-ms-flexbox;display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-middle{-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;box-sizing:border-box}.el-upload--picture-card,.el-upload-dragger{-webkit-box-sizing:border-box;cursor:pointer}.el-col-0{width:0}.el-col-offset-0{margin-left:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#409eff;color:#409eff}.el-upload:focus .el-upload-dragger{border-color:#409eff}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;position:relative;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#c0c4cc;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #dcdfe6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#409eff;font-style:normal}.el-upload-dragger:hover{border-color:#409eff}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #409eff}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;position:relative;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67c23a}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#409eff}.el-upload-list__item:hover{background-color:#f5f7fa}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#409eff;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#409eff}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover:after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle{display:inline-block}.el-progress--circle .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;transform:translateY(-50%)}.el-progress--circle .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__inner:after,.el-progress-bar__innerText,.el-spinner{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67c23a}.el-progress.is-success .el-progress__text{color:#67c23a}.el-progress.is-exception .el-progress-bar__inner{background-color:#f56c6c}.el-progress.is-exception .el-progress__text{color:#f56c6c}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#409eff;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;transition:width .6s ease}.el-card,.el-message{border-radius:4px;overflow:hidden}.el-progress-bar__inner:after{height:100%}.el-progress-bar__innerText{color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner-inner{animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{to{transform:rotate(1turn)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;left:50%;top:20px;transform:translateX(-50%);background-color:#edf2fc;transition:opacity .3s,transform .4s;padding:15px 15px 15px 20px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.el-message.is-center{-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67c23a}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#e6a23c}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#f56c6c}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__closeBtn{position:absolute;top:50%;right:15px;transform:translateY(-50%);cursor:pointer;color:#c0c4cc;font-size:16px}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67c23a}.el-message .el-icon-error{color:#f56c6c}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#e6a23c}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#f56c6c;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#409eff}.el-badge__content--success{background-color:#67c23a}.el-badge__content--warning{background-color:#e6a23c}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#f56c6c}.el-card{border:1px solid #ebeef5;background-color:#fff;color:#303133;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #ebeef5;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#c0c4cc;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:-ms-flexbox;display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#f5f7fa}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#c0c4cc;border-color:#c0c4cc}.el-step__head.is-success{color:#67c23a;border-color:#67c23a}.el-step__head.is-error{color:#f56c6c;border-color:#f56c6c}.el-step__head.is-finish{color:#409eff;border-color:#409eff}.el-step__icon{position:relative;z-index:1;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;box-sizing:border-box;background:#fff;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;-webkit-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-button,.el-checkbox,.el-step__icon-inner{-moz-user-select:none;-ms-user-select:none}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#c0c4cc}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;transition:.15s ease-out;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#c0c4cc}.el-step__title.is-success{color:#67c23a}.el-step__title.is-error{color:#f56c6c}.el-step__title.is-finish{color:#409eff}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#c0c4cc}.el-step__description.is-success{color:#67c23a}.el-step__description.is-error{color:#f56c6c}.el-step__description.is-finish{color:#409eff}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:-ms-flexbox;display:flex}.el-step.is-vertical .el-step__head{-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-ms-flex-positive:1;flex-grow:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{content:"";display:inline-block;position:absolute;height:15px;width:1px;background:#c0c4cc}.el-step.is-simple .el-step__arrow:before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{overflow-x:hidden;position:relative}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;bottom:0;left:50%;transform:translateX(-50%);margin:0;padding:0;z-index:2}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#c0c4cc;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{display:inline-block;background-color:transparent;padding:12px 4px;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;transition:.3s}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{transform:translateY(-50%) translateX(10px);opacity:0}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;transition:opacity .34s ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:hsla(220,4%,58%,.3);transition:background-color .3s}.el-scrollbar__thumb:hover{background-color:hsla(220,4%,58%,.5)}.el-carousel__mask,.el-cascader-menu,.el-cascader-menu__item.is-disabled:hover,.el-collapse-item__header,.el-collapse-item__wrap{background-color:#fff}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;transition:opacity .12s ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-carousel__item,.el-carousel__mask{height:100%;top:0;left:0;position:absolute}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item--card,.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;opacity:.24;transition:.2s}.el-fade-in-enter,.el-fade-in-leave-active,.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active,.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active,.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:height .3s ease-in-out,padding-top .3s ease-in-out,padding-bottom .3s ease-in-out}.horizontal-collapse-transition{transition:width .3s ease-in-out,padding-left .3s ease-in-out,padding-right .3s ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;transform:translateY(-30px)}.el-opacity-transition{transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #ebeef5;border-bottom:1px solid #ebeef5}.el-collapse-item__header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;color:#303133;cursor:pointer;border-bottom:1px solid #ebeef5;font-size:13px;font-weight:500;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#409eff}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;overflow:hidden;box-sizing:border-box;border-bottom:1px solid #ebeef5}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;filter:drop-shadow(0 2px 12px rgba(0,0,0,.03))}.el-popper .popper__arrow:after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow:after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader .el-input,.el-cascader .el-input__inner{cursor:pointer}.el-cascader .el-input.is-focus .el-input__inner{border-color:#409eff}.el-cascader .el-input__icon{transition:none}.el-cascader .el-icon-arrow-down{transition:transform .3s;font-size:14px}.el-cascader .el-icon-arrow-down.is-reverse{transform:rotate(180deg)}.el-cascader .el-icon-circle-close{z-index:2;transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-cascader .el-icon-circle-close:hover{color:#909399}.el-cascader__clearIcon{z-index:2;position:relative}.el-cascader__label{position:absolute;left:0;top:0;height:100%;padding:0 25px 0 15px;color:#606266;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;box-sizing:border-box;cursor:pointer;text-align:left;font-size:inherit}.el-cascader__label span{color:#000}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#c0c4cc}.el-cascader-menus{white-space:nowrap;background:#fff;position:absolute;margin:5px 0;z-index:2;border:1px solid #e4e7ed;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader-menu{display:inline-block;vertical-align:top;height:204px;overflow:auto;border-right:1px solid #e4e7ed;box-sizing:border-box;margin:0;padding:6px 0;min-width:160px}.el-cascader-menu:last-child{border-right:0}.el-cascader-menu__item{font-size:14px;padding:8px 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:1.5;box-sizing:border-box;cursor:pointer;outline:0}.el-cascader-menu__item--extensible:after{font-family:element-icons;content:"\E604";font-size:14px;color:#bfcbd9;position:absolute;right:15px}.el-cascader-menu__item.is-disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-cascader-menu__item.is-active{color:#409eff}.el-cascader-menu__item:focus:not(:active),.el-cascader-menu__item:hover{background-color:#f5f7fa}.el-cascader-menu__item.selected{color:#fff;background-color:#f5f7fa}.el-cascader-menu__item__keyword{font-weight:700}.el-cascader-menu--flexible{height:auto;max-height:180px;overflow:auto}.el-cascader-menu--flexible .el-cascader-menu__item{overflow:visible}.el-color-predefine{display:-ms-flexbox;display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px #409eff}.el-color-predefine__color-selector>div{display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.el-color-svpanel__black{background:linear-gradient(0deg,#000,transparent)}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(180deg,hsla(0,0%,100%,0) 0,#fff)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#409eff;border-color:#409eff}.el-color-dropdown__link-btn{cursor:pointer;color:#409eff;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#409eff,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:hsla(0,0%,100%,.7)}.el-color-picker__trigger{display:inline-block;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty,.el-color-picker__icon{top:50%;left:50%;font-size:12px;position:absolute}.el-color-picker__empty{color:#999;transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;width:100%;transform:translate3d(-50%,-50%,0);color:#fff;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;box-sizing:content-box;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-textarea{display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner:-ms-input-placeholder,.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#409eff}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder,.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-button-group>.el-button.is-active,.el-button-group>.el-button.is-disabled,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;line-height:16px;cursor:pointer;transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__prefix,.el-input__suffix{position:absolute;top:0;-webkit-transition:all .3s;height:100%;color:#c0c4cc;text-align:center}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner:-ms-input-placeholder,.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#409eff;outline:0}.el-input__suffix{right:5px;transition:all .3s}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{left:5px;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;transition:all .3s;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner:-ms-input-placeholder,.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button:focus,.el-button:hover{color:#409eff;border-color:#c6e2ff;background-color:#ecf5ff}.el-button:active{color:#3a8ee6;border-color:#3a8ee6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#409eff;color:#409eff}.el-button.is-active,.el-button.is-plain:active{color:#3a8ee6;border-color:#3a8ee6}.el-button.is-plain:active{background:#fff;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:hsla(0,0%,100%,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#409eff;border-color:#409eff}.el-button--primary:focus,.el-button--primary:hover{background:#66b1ff;border-color:#66b1ff;color:#fff}.el-button--primary.is-active,.el-button--primary:active{background:#3a8ee6;border-color:#3a8ee6;color:#fff}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#a0cfff;border-color:#a0cfff}.el-button--primary.is-plain{color:#409eff;background:#ecf5ff;border-color:#b3d8ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#409eff;border-color:#409eff;color:#fff}.el-button--primary.is-plain:active{background:#3a8ee6;border-color:#3a8ee6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8cc5ff;background-color:#ecf5ff;border-color:#d9ecff}.el-button--success{color:#fff;background-color:#67c23a;border-color:#67c23a}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#fff}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#fff}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67c23a;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67c23a;border-color:#67c23a;color:#fff}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--text,.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--mini,.el-button--small{font-size:12px;border-radius:3px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small,.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{color:#409eff;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#66b1ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3a8ee6;background-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{display:table;content:""}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--primary:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--primary:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:first-child{border-right-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:last-child{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:hsla(0,0%,100%,.5);border-right-color:hsla(0,0%,100%,.5)}.el-checkbox{color:#606266;font-weight:500;font-size:14px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#409eff}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#409eff;border-color:#409eff}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner:after{transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#409eff}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#409eff}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{content:"";position:absolute;display:block;background-color:#fff;height:2px;transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#409eff}.el-checkbox__inner:after{box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);width:3px;transition:transform .15s ease-in .05s;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{position:relative;display:inline-block}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox+.el-checkbox{margin-left:30px}.el-checkbox-button__inner{line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;transition:all .3s cubic-bezier(.645,.045,.355,1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#409eff}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#409eff;border-color:#409eff;box-shadow:-1px 0 0 0 #8cc5ff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#409eff}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#409eff}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#fff;background-color:#409eff;font-size:0}.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #dcdfe6;background-color:#f5f7fa;color:#c0c4cc}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer-panel{border:1px solid #ebeef5;border-radius:4px;overflow:hidden;background:#fff;display:inline-block;vertical-align:middle;width:200px;max-height:100%;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#409eff}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#f5f7fa;margin:0;padding-left:15px;border-bottom:1px solid #ebeef5;box-sizing:border-box;color:#000}.el-container,.el-header{-webkit-box-sizing:border-box}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#fff;margin:0;padding:0;border-top:1px solid #ebeef5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner:after{height:6px;width:3px;left:4px}.el-container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;box-sizing:border-box;min-width:0}.el-container.is-vertical{-ms-flex-direction:column;flex-direction:column}.el-header{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside,.el-main{overflow:auto;-webkit-box-sizing:border-box}.el-aside{-ms-flex-negative:0;flex-shrink:0}.el-aside,.el-main{box-sizing:border-box}.el-main{display:block;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;padding:20px}.el-footer{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}*{margin:0;padding:0} | |
2 | + /*!*因为100%=16px,1px=6.25%,所以10px=62.5%,这是的1rem=10px,所以12px=1.2rem。px与rem的转换通过10就可以得来*!*/ | |
3 | + /*!*为了兼容IE的低级版本还要写font-size:12px,别忘了要写在rem的前面*!*/ | |
4 | +/*!*2 body{font-size:12px;font-size:1.2rem ;}*!*/ | |
5 | +/*!*为了兼容IE的低级版本还要写font-size:12px,别忘了要写在rem的前面*!*/ | |
6 | +/*!*3 p{font-size:14px;font-size:1.4rem;}*!*/body,html{height:100%;width:99.99%;font-family:Microsoft YaHei;background-color:#052675;user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;-moz-user-select:none}body{background:url(../images/bg.1d62dca.jpg) no-repeat;background-size:100% 100%;overflow:hidden;color:#fff}@font-face{font-family:display-free;src:url(data:application/font-woff;base64,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) format("woff"),url(static/fonts/display-free.f07da7a.ttf) format("truetype")}.theme-card{position:relative;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgd2lkdGg9IjMzMyIgaGVpZ2h0PSIyMTkiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMzMuMSAyMTkuNyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzMzLjEgMjE5Ljc7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDpub25lO3N0cm9rZTojMjM5MUZBO3N0cm9rZS1taXRlcmxpbWl0OjEwO30KCS5zdDF7b3BhY2l0eTowLjg7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojMjM5MUZBO30KCS5zdDJ7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojMjM5MUZBO30KPC9zdHlsZT4KPHBhdGggaWQ9IlhNTElEXzExXyIgY2xhc3M9InN0MCIgZD0iTTAuNiwwLjVoMzE2bDE2LDE2djE4Ny4ybC0xNS44LDE1LjVIMTYuNmwtMTYtMTUuMVYwLjV6Ii8+CjxwYXRoIGlkPSJYTUxJRF8yXyIgY2xhc3M9InN0MSIgZD0iTTMzMi42LDIwNy4ydjNsLTksOWgtM0wzMzIuNiwyMDcuMnoiLz4KPHBhdGggaWQ9IlhNTElEXzFfIiBjbGFzcz0ic3QyIiBkPSJNMzMwLjgsMS45aC04bDgsOCIvPgo8cGF0aCBpZD0iWE1MSURfOV8iIGNsYXNzPSJzdDIiIGQ9Ik0wLjYsMC41aDR2NGgtNFYwLjV6Ii8+Cjwvc3ZnPgo=) no-repeat;background-size:100% 100%}.theme-card2>.title,.theme-card>.title{color:#fff;font-size:14px;height:30px;line-height:30px;width:100%;text-align:left;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAS8AAAAeCAYAAAB9j5hkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzU4NzBBMzJEMDI3MTFFODhGREFFNUE0QTAxNTEwQjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzU4NzBBMzNEMDI3MTFFODhGREFFNUE0QTAxNTEwQjgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozNTg3MEEzMEQwMjcxMUU4OEZEQUU1QTRBMDE1MTBCOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozNTg3MEEzMUQwMjcxMUU4OEZEQUU1QTRBMDE1MTBCOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhYTL8EAAAUpSURBVHja7J1djqQwDIRTrbnRvu9B95Z7Au/TrDQtgqtsJ4Q0SC1oCCG/X8omAH7/+fur3X8x4ZgdbB+t38OdhVGPtcC2kg/1eCZ9mWNq3THtAIHzVm/TlXn6LqNo+Y5I03ucYAJ/bVLJIDuGBTqGifssEIeR8bBh7K1cjMyjieWWAVPlORngVQyWOABDKwaOByLlmhVlaAPLlYp7B3hBDGvC/izcouomo36MyJMF4cPCn1ViM4A0G2Y2MO4Vy8Y6iulI4fX+ezDGzsqLhZUlG0hELdkF+Y+ahxYEkKrYsjCbCabZbXbV+COWgPpfag87KS8rqkArquQKaCggUJVT5chtAzrC6rCyC687yq93q8FgZ+WFFldasyoYLefbUtLJQjPi78qMxiN9LLZp+1aV6cybGOa4Zx54FUKjChDVgBnViS1QNhGztAJclYpuVTAhARwTwlVBFMR1K0QDOmXx39LaGV5qhY0cnTJOalWZ2aA0zbwDtSu0rKij24S8W6JdVl//cHtneLEjAzud4Kr0o91PsViy414JrNVBaMVx3XZe3C4O+xVUFgoaA2OyjYJGVr2dTWC0xeBxp86abVO2UVn8WF4faB5652NAeiJxVjk3I5Mm389RJ9EyebliisQztWKdfKTNz6+NCqNKYSlxogM/Izu0LVSGanoUh60VxFkFLlu4LVfPzp81YVZpO2cA854WwCeZjZHOWA2V93gjwMtAchQ4R/irVp/aMrq8VgQWE++sGzU/AH93s3GWeoFo1oE4/h4HnHghpBODGrMNLE8Tw882v1c1+0bDarWbWd/psR18XqMgdAaYHqhAxKGkEx3zTgVpSx5ny6K6bu4KMHv7jQDKEWCsMN0rm9hbKK9Mw0QiPKOcPNCp6UAiD0gCwgTYNyKPNhEy1vaaaW9tDTX5wOtigEU7eUWcEICngDRjOjKQsoJy373zjc7fCCDfDvCvD2hEFeZGVHUhEJ96TbUcRvnbVPWFC+pzpsl4J0V3S2W6C7yyd0JYKGTMRQWSVdDMzi/rXavK93VmWmduiETqdmX1sss8rwdeyQ4SBRWjftBROj3lA0KdsR0Vwvk4UWTsdoX6YuvgagW+kzLcBoqf4POKzCpXgAIBAh5QPFAq0Omd7yk4VSWqAwTETo9BgDn6zWiPFWl+lrbX40FK40eiozGqzps+oZiHirpTTD9G9Si+sCzAIjCo7tArA+xZNoQXyEYe8b2wa09twQEXHKidmZpwVIViZrKqjFGBDMCYfSyoqkBWDbBHMT3wStvwlQ5eBmBonH+LARULNwZ4yhQNxR/WBJizEMsMRiOmvVTCLNO2q2CIB173V2yt8b4qBWC99Suo0Jh1JgyIfHgKslp1MUqLGWQQhMxIv5ga54hHdvDAa23VVVFxip+INfc8hcaqqIjpyexrJKA8kxJOGXidGkL5jzbjRjr4FR8k7g6f7LLTm1SZj1l4b2fwto/WvWt4358z4hpn+WDiBVEWENNujXi/eDv+Rp/3/b6zj7kedXLrACByhzkyAEa/PM0AzILQ2/29/1vCy6t4JCF49mobBIDgQamRwDw7n4UbC2LvXGYQaI37CGnvMSR1f0vATIXICjDApDw/8FqkctH57+3HCWRaJ1zrHFNHSw9UR69iBqFIWeXYHIiBUIpn0KoEFvOcpmqKsg+XX/nOtQo/mD3wWs+EVBVXOwESxM7dSLMMTTNF2WMZSLLKjc2npxKboChVBZIBDdvBGcU9AmJVJm0VjMuXfwIMALBGTzZ6XBZLAAAAAElFTkSuQmCC) no-repeat;background-size:100% 100%;position:relative}.theme-card2>.title>span,.theme-card>.title>span{margin-left:60px;position:relative}.theme-card2>.title>span:before,.theme-card>.title>span:before{left:-47px}.theme-card2>.title>span:after,.theme-card2>.title>span:before,.theme-card>.title>span:after,.theme-card>.title>span:before{content:"";background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAOCAYAAABZ/o57AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkMxNkNENzBDRjVEMTFFODhGREFFNUE0QTAxNTEwQjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0E4QkE1MkVDRjVEMTFFODhGREFFNUE0QTAxNTEwQjgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2QzE2Q0Q2RUNGNUQxMUU4OEZEQUU1QTRBMDE1MTBCOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2QzE2Q0Q2RkNGNUQxMUU4OEZEQUU1QTRBMDE1MTBCOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuG9B1AAAAJtSURBVHjanJZdSFRBFMdn7tzSxPceLMMMBK0wNbGIUoOIMIQgiw2JIHroOQk13b7UQkSKKNLKgnILeugh6KGHHnoJeshayj4MIys2gojA1ErzP9e5cJidc1s97I+Z/9mzZ8+cOzuzMmfDwCPpiWohpX5NYL5SejIlpBAYgRCeCuZHQLfWUmm/3AcGvWDuzcWqYCyGTgJPKgWtEhhjHpJI5Ys5nx/MPeUnMN9rfDPwrR46umJYOAxfK9qJXgKahdsughTR+nO+I+4VuE30HlDC5DwBpkktcSYuePMxeEh8h0CeI/YXOEN0EYhFFPCXaQa11yBB9O513Z/WcIUKK1E2aGESXwafM+jqWzBICwBrmZwnrUXFowp9Ah4Q/0GQ74ifBF1EF4L9GRQgTZfTLBkvfofhJnHtKutJlXKFCrOSf2a+GLQyBVwBH4luNfG2vQc3iK4HZRGL+hO1KFroU3Cf6AOgwJF0CnQSXWBiXXYa/P5fV18cKxrFcJ24dpb3fqvgCg33XNjVRaCNKeAaGLW6muWI+wAGiK4DlQtZlF3oELhHdCNY5UiqH1MH0cvNvnZZh3kK9ERIs+cthXo7XSWuHeXnvldxhYZ7dcbM/YijRe+/EaKbzTls25jZ16FtBxsjFjXpWpSr0CS4S3TMnJm26V/0KaLzzBnsMr2nJ6wfT5rhVtJHXz9xbas4/2MTV6i246SrymiX3QJvrK7mOOK+gD6it4LN81kUV+iwdWM0MNfgtLXnloLDTM4uc7tFdvVZ0zJ9TV8irpr1F35Wc4VmfGPA7oCXRDeBXEfcV/N/IbQtoJbJeRaM01pmBRgAyM6ET+/yw14AAAAASUVORK5CYII=) no-repeat;background-size:100% 100%;position:absolute;width:40px;height:13px;top:3px}.theme-card2>.title>span:after,.theme-card>.title>span:after{right:-47px}.theme-card2>.content,.theme-card>.content{height:calc(100% - 30px);position:relative;box-sizing:border-box;padding:10px}.theme-card2,.theme-map{position:relative}.theme-map{border:1px solid #1679de;margin-left:-1px!important}.eleVerHorCenter-flex{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.eleVerHorCenter-box{display:-moz-box;box-pack:center;box-orient:vertical;display:-webkit-box;-webkit-box-pack:center;-moz-box-pack:center}.eleVerHorCenter-table{display:table}.eleNumBg,.eleVerHorCenter-tableCell{display:table-cell;text-align:center;vertical-align:middle}.eleText{font-size:14px}.eleMarginLeft{margin-left:15px;padding:5px;background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDE1NSAzOSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTU1IDM5OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe29wYWNpdHk6MC4xO30KCS5zdDF7ZmlsbDojMTU3QURCO30KCS5zdDJ7b3BhY2l0eTowLjU7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojMTU3QURCO30KPC9zdHlsZT4KPGcgaWQ9IlhNTElEXzE0XyIgY2xhc3M9InN0MCI+Cgk8cGF0aCBpZD0iWE1MSURfNzdfIiBjbGFzcz0ic3QxIiBkPSJNMTU0LDF2MzdIMVYxSDE1NCBNMTU1LDBIMHYzOWgxNTVWMEwxNTUsMHoiLz4KPC9nPgo8cGF0aCBpZD0iWE1MSURfMTVfIiBjbGFzcz0ic3QyIiBkPSJNMTU0LDM5aC00di0xaDR2LTRoMXY0djFIMTU0eiBNMTU0LDFoLTRWMGg0aDF2MXY0aC0xVjF6IE0wLDM5di0xdi00aDF2NGg0djFIMUgweiBNMSw1SDBWMVYwCgloMWg0djFIMVY1eiIvPgo8L3N2Zz4K) no-repeat;background-size:100% 100%}.eleNumBg{background:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDIwIDI5IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAyOTsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfNDRfKTt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfNDRfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjEwIiB5MT0iMS4wMjgxMzNlLTA1IiB4Mj0iMTAiIHkyPSIyOSI+Cgk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojNTc0REZFIi8+Cgk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojNEJEM0ZGIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGlkPSJYTUxJRF8yXyIgY2xhc3M9InN0MCIgZD0iTTE4LDI5SDJjLTEuMSwwLTItMC45LTItMnYtOS41TDIuNSwxNWgxNC45bDIuNSwyLjVWMjdDMjAsMjguMSwxOS4xLDI5LDE4LDI5eiBNMi41LDE0TDAsMTEuNVYyCgljMC0xLjEsMC45LTIsMi0yaDE2YzEuMSwwLDIsMC45LDIsMnY5LjVMMTcuNSwxNEgyLjV6Ii8+Cjwvc3ZnPgo=) no-repeat;background-size:100% 100%;width:20px;height:30px;margin-left:5px;font-size:22px}.eleRotation{-webkit-transform:rotate(1turn);animation:rotation 5s linear infinite;-moz-animation:rotation 5s linear infinite;-webkit-animation:rotation 5s linear infinite;-o-animation:rotation 5s linear infinite}@keyframes rotation{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(1turn)}}.bottomBox,.topBox{border:0 solid red;position:relative}.topBox{height:30%;width:100%;-ms-flex-pack:left!important;justify-content:left!important}.bottomBox{height:70%;width:100%} | |
7 | +/*# sourceMappingURL=app.486594723352c619415766ad398dcdb5.css.map */ | |
0 | 8 | \ No newline at end of file | ... | ... |
dist/static/css/app.486594723352c619415766ad398dcdb5.css.map
0 → 100644
1 | +{"version":3,"sources":["app.486594723352c619415766ad398dcdb5.css"],"names":[],"mappings":"AA2YA,iBAEC,AA5YD,SACE,WAAY,WAAY,CACzB,AAGD,2BACE,kBAAmB,AACnB,WAAY,AACZ,YAAa,AACb,SAAY,AACZ,SAAa,CAed,AACD,uCACI,YAAa,AACb,mBAAsB,AACtB,iBAAmB,CACtB,AACD,qCACI,yBAA0B,AAC1B,oBAAwB,CAC3B,AACD,4EACI,WAAa,CAChB,AACD,mCACI,YAAa,AACb,aAAiB,CACpB,AACD,mCACI,kBAAmB,AACnB,WAAa,CAChB,AACD,0CACI,yBAA6B,AAC7B,0BAA8B,AAC9B,aAAuB,CAC1B,AACD,2CACI,WAAa,CAChB,AACD,mCACI,wBAA4B,AAC5B,wBAA6B,CAChC,AACD,sCACI,uBAAwB,AACxB,sBAA0B,CAC7B,AACD,yCACI,kBAAmB,AACnB,gBAAkB,CACrB,AACD,wCACI,eAAiB,CACpB,AAOD,+HACI,UAAY,CACf,AACD,wCACI,WAAY,AACZ,WAAa,CAChB,AAID,+OACI,4BAA8B,CACjC,AACD,uCACI,yBAA2B,CAC9B,AACD,yCACI,0BAA2B,AAC3B,kBAAmB,AACnB,ihFAAkhF,AAClhF,yBAA2B,CAC9B,AAED,sCACE,UAAY,CACb,AACD,kDACI,WAAa,CAChB,AACD,iDACI,kBAAmB,AACnB,cAAe,AACf,MAAO,AACP,SAAU,AACV,OAAQ,AACR,WAAY,AACZ,WAAa,CAChB,AAED,mCACE,UAAY,CACb,AACD,+CACI,WAAa,CAChB,AACD,6DACM,UAAW,AACX,eAAgB,AAChB,eAAiB,CACtB,AACD,yDACI,cAAe,AACf,eAAgB,AAChB,YAAc,AACd,kBAAmB,AACnB,QAAU,CACb,AACD,oEACI,wBAA0B,CAC7B,AACD,qEACI,wBAA0B,CAC7B,AACD,mDACI,YAAa,AACb,WAAY,AACZ,iBAAmB,CACtB,AACD,kEACI,YAAc,CACjB,AAED,8BACE,UAAY,CACb,AACD,0CACI,WAAa,CAChB,AACD,wDACM,UAAW,AACX,eAAgB,AAChB,eAAiB,CACtB,AAGD,8BAIE,cAAe,AACf,mBAAsB,AACtB,eAAgB,AAChB,iBAAmB,CACpB,AACD,0CA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","file":"app.486594723352c619415766ad398dcdb5.css","sourcesContent":["\n.mainApp{\n width: 100%;height:100%;\n}\n\n@charset \"UTF-8\";\n.app-Main[data-v-8dbec550] {\n position: relative;\n width: 100%;\n height: 100%;\n margin: 0px;\n padding: 0px;\n /*background url('../../assets/bg.jpg');*/\n /*background-size 100% 100%*/\n /*行*/\n /*列*/\n /*气象预警*/\n /*气象预报*/\n /*果园监控*/\n /*Head头*/\n /*会员数、收费员、设备*/\n /*收入概况、泊位、订单消息*/\n /*全国地图、周出场今日车流量*/\n /*收入概况*/\n /*泊位*/\n /*订单消息*/\n}\n.app-Main .app-header[data-v-8dbec550] {\n height: 65px;\n border: 0px solid red;\n position: relative;\n}\n.app-Main .app-body[data-v-8dbec550] {\n height: calc(100% - 65px);\n border: 0px solid green;\n}\n.app-Main .el-row[data-v-8dbec550], .app-Main .grid-content[data-v-8dbec550] {\n height: 100%;\n}\n.app-Main .el-row[data-v-8dbec550] {\n padding: 5px;\n padding-top: 0px;\n}\n.app-Main .el-col[data-v-8dbec550] {\n border-radius: 4px;\n height: 100%;\n}\n.app-Main .aside-padding[data-v-8dbec550] {\n padding-left: 0px !important;\n padding-right: 0px !important;\n padding: 5px 0 5px 0px;\n}\n.app-Main .middle-padding[data-v-8dbec550] {\n padding: 5px;\n}\n.app-Main .el-row[data-v-8dbec550] {\n margin-left: 0px !important;\n margin-right: 0px !important;\n}\n.app-Main .bg-purple[data-v-8dbec550] {\n background: transparent;\n border: 0px solid #74c7d9;\n}\n.app-Main .grid-content[data-v-8dbec550] {\n border-radius: 4px;\n min-height: 500px;\n}\n.app-Main .u-marginTop[data-v-8dbec550] {\n margin-top: 10px;\n}\n.app-Main .u-weather[data-v-8dbec550] {\n height: 30%;\n}\n.app-Main .u-weatherForecast[data-v-8dbec550] {\n height: 30%;\n}\n.app-Main .u-videoMonitor[data-v-8dbec550] {\n height: 30%;\n}\n.app-Main .u-appHeader[data-v-8dbec550] {\n width: 100%;\n height: 100%;\n}\n.app-Main .u-memberNum[data-v-8dbec550], .app-Main .u-tollman[data-v-8dbec550], .app-Main .u-device[data-v-8dbec550] {\n height: calc((100% - 20px)/3);\n}\n.app-Main .u-incomeOverview[data-v-8dbec550], .app-Main .u-berth[data-v-8dbec550], .app-Main .u-orderMessage[data-v-8dbec550] {\n height: calc((100% - 20px)/3);\n}\n.app-Main .u-chinaMap[data-v-8dbec550] {\n height: calc(66.66% - 5px);\n}\n.app-Main .u-weekAndDay[data-v-8dbec550] {\n height: calc(33.33% - 5px);\n position: relative;\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iLTM0MCAtODkuNyA2NTMuNSAyMTkuNyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAtMzQwIC04OS43IDY1My41IDIxOS43OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6bm9uZTtzdHJva2U6IzIzOTFGQTtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9Cgkuc3Qxe29wYWNpdHk6MC44O2ZpbGw6IzIzOTFGQTtlbmFibGUtYmFja2dyb3VuZDpuZXcgICAgO30KCS5zdDJ7ZmlsbDojMjM5MUZBO30KCS5zdDN7ZGlzcGxheTpub25lO29wYWNpdHk6MC4yO2ZpbGw6dXJsKCNYTUxJRF80Xyk7ZW5hYmxlLWJhY2tncm91bmQ6bmV3ICAgIDt9Cgkuc3Q0e2Rpc3BsYXk6bm9uZTtvcGFjaXR5OjAuMjtmaWxsOnVybCgjWE1MSURfNV8pO2VuYWJsZS1iYWNrZ3JvdW5kOm5ldyAgICA7fQo8L3N0eWxlPgo8cGF0aCBpZD0iWE1MSURfMTFfIiBjbGFzcz0ic3QwIiBkPSJNLTMzOS41LTg5LjJIMjk3bDE2LDE2VjExNGwtMTUuOCwxNS41aC02MjAuN2wtMTYtMTUuMVYtODkuMnoiLz4KPHBhdGggaWQ9IlhNTElEXzJfIiBjbGFzcz0ic3QxIiBkPSJNMzEyLjUsMTE3LjV2M2wtOSw5aC0zTDMxMi41LDExNy41eiIvPgo8cGF0aCBpZD0iWE1MSURfMV8iIGNsYXNzPSJzdDIiIGQ9Ik0zMTAuNS04Ni44aC04bDgsOCIvPgo8bGluZWFyR3JhZGllbnQgaWQ9IlhNTElEXzRfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii0zMzguOSIgeTE9IjExNC40IiB4Mj0iLTMxLjU2NjciIHkyPSIxMTQuNCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDQwLjYpIj4KCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMzRTlBRjEiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNjEzOSIgc3R5bGU9InN0b3AtY29sb3I6IzNFOUFGMTtzdG9wLW9wYWNpdHk6MC4yODYyIi8+Cgk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojM0U5QUYxO3N0b3Atb3BhY2l0eTowIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGlkPSJYTUxJRF83XyIgY2xhc3M9InN0MyIgZD0iTS0zMzguOS04OC44aDMwM3YzMGgtMzAzVi04OC44eiIvPgo8cGF0aCBpZD0iWE1MSURfOV8iIGNsYXNzPSJzdDIiIGQ9Ik0tMzM4LjktODkuMmg0djRoLTRDLTMzOC45LTg1LjItMzM4LjktODkuMi0zMzguOS04OS4yeiIvPgo8bGluZWFyR3JhZGllbnQgaWQ9IlhNTElEXzVfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii0xMy41IiB5MT0iMTE1LjMiIHgyPSIyOTMuODMzMyIgeTI9IjExNS4zIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgNDAuNikiPgoJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzNFOUFGMSIvPgoJPHN0b3AgIG9mZnNldD0iMC42MTM5IiBzdHlsZT0ic3RvcC1jb2xvcjojM0U5QUYxO3N0b3Atb3BhY2l0eTowLjI4NjIiLz4KCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiMzRTlBRjE7c3RvcC1vcGFjaXR5OjAiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzM5XyIgY2xhc3M9InN0NCIgZD0iTS0xMy41LTg5LjdoMzAzdjMwaC0zMDNWLTg5Ljd6Ii8+Cjwvc3ZnPgo=) no-repeat;\n background-size: 100% 100%;\n}\n\n.app-WeatherForecast[data-v-04bc8fb2] {\n width: 100%;\n}\n.app-WeatherForecast .theme-card[data-v-04bc8fb2] {\n height: 100%;\n}\n.app-WeatherForecast .lineChart[data-v-04bc8fb2] {\n position: absolute;\n margin: 0 auto;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.app-videoMonitor[data-v-0b28dd79] {\n width: 100%;\n}\n.app-videoMonitor .theme-card[data-v-0b28dd79] {\n height: 100%;\n}\n.app-videoMonitor .theme-card .content > span[data-v-0b28dd79] {\n color: red;\n font-size: 12px;\n text-align: left;\n}\n.app-videoMonitor .el-carousel__item h3[data-v-0b28dd79] {\n color: #475669;\n font-size: 14px;\n opacity: 0.75;\n line-height: 150px;\n margin: 0;\n}\n.app-videoMonitor .el-carousel__item[data-v-0b28dd79]:nth-child(2n) {\n background-color: #99a9bf;\n}\n.app-videoMonitor .el-carousel__item[data-v-0b28dd79]:nth-child(2n+1) {\n background-color: #d3dce6;\n}\n.app-videoMonitor .videoContainer[data-v-0b28dd79] {\n height: 100%;\n width: 100%;\n position: relative;\n}\n.app-videoMonitor .video-js .vjs-big-play-button[data-v-0b28dd79] {\n display: none;\n}\n\n.app-Weather[data-v-473e90ff] {\n width: 100%;\n}\n.app-Weather .theme-card[data-v-473e90ff] {\n height: 100%;\n}\n.app-Weather .theme-card .content > span[data-v-473e90ff] {\n color: red;\n font-size: 12px;\n text-align: left;\n}\n\n@charset \"UTF-8\";\n.app-headBox[data-v-23878d08] {\n /*display: flex;*/\n /*justify-content: center;*/\n /*align-items: center;*/\n display: table;\n border: 0px solid red;\n font-size: 18px;\n position: relative;\n}\n.app-headBox .head-inner[data-v-23878d08] {\n display: table-cell;\n /* 让子元素以表格的单元格形式渲染 */\n text-align: center;\n vertical-align: middle;\n}\n.app-headBox .head-name > span[data-v-23878d08]:first-child {\n position: relative;\n z-index: 666;\n}\n.app-headBox .head-name[data-v-23878d08], .app-headBox .head-time[data-v-23878d08] {\n display: inline-block;\n}\n.app-headBox .head-name[data-v-23878d08] {\n font-size: 23px;\n /*font-weight:bold;*/\n width: 884px;\n height: 60px;\n line-height: 60px;\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IuWbvuWxgl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgODg0LjcgNTYuNiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgODg0LjcgNTYuNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfNTRfKTt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfNTRfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjMuMzMzMyIgeTE9IjI4LjMwNCIgeDI9Ijg4NC42NjY3IiB5Mj0iMjguMzA0Ij4KCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAiLz4KCTxzdG9wICBvZmZzZXQ9IjAuMTk2NCIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQiIvPgoJPHN0b3AgIG9mZnNldD0iMC40OTk3IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjc3NDEiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREIiLz4KCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzY3XyIgY2xhc3M9InN0MCIgZD0iTTY3OS41LDI5SDY3OWwtMi44LTEyaDAuNWwyLjYsMTFoMjA1LjR2MUg2NzkuNXogTTY2MS4yLDE3aDdsNiwxMmgtN0w2NjEuMiwxN3ogTTY0Ni4yLDE3aDcKCWw2LDEyaC03TDY0Ni4yLDE3eiBNNjMxLjIsMTdoN2w2LDEyaC03TDYzMS4yLDE3eiBNNjIyLjIsMjloLTE2LjVsLTEzLjcsMTguM2wtMC4zLDAuNWwtMC42LTAuMWwtNy4zLTAuOWwtNS43LDkuOGwtMjcyLDBsLTIuMSwwCglsLTUuMi05LjVsLTcuMywwLjlsLTAuNiwwLjFsLTAuNC0wLjVMMjc2LjcsMjloLTE1LjVoLTZoLTFsMS0ybDUtMTBoN2wtNSwxMGgxNWwwLjUsMGwwLjMsMC40bDEzLjcsMTguNUwyOTksNDVsMC43LTAuMWwwLjMsMC42CglsNSw5LjFsMC4xLDBINTc3bDUuMi05LjRsMC4zLTAuNmwwLjcsMC4xbDcuNCwwLjlsMTMuNy0xOC4ybDAuMy0wLjRsMC41LDBoMTYuMWwtNS0xMGg3bDYsMTJMNjIyLjIsMjlMNjIyLjIsMjl6IE01OTUuNywySDI4NS40CglsLTYuMywxNC40bC0xLjgtMC44TDI4NC4yLDBoMWgzMTFoMC4ybDAuNywwbDcuMSwxNi4ybC0xLjksMC44TDU5NS43LDJ6IE0yMzkuMiwyOWw2LTEyaDdsLTYsMTJIMjM5LjJ6IE0yMjQuMiwyOWw2LTEyaDdsLTYsMTIKCUgyMjQuMnogTTIwOS4yLDI5bDYtMTJoN2wtNiwxMkgyMDkuMnogTTIwNC45LDI5SDMuM3YtMWgyMDEuOGwyLjYtMTFoMC41bC0yLjgsMTJIMjA0Ljl6Ii8+Cjwvc3ZnPgo=) no-repeat;\n background-size: 100% 100%;\n position: relative;\n}\n.app-headBox .head-name-bg[data-v-23878d08] {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAAA5CAYAAABHyvIXAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjY1NzlCNDlDRjc4MTFFODhGREFFNUE0QTAxNTEwQjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjY1NzlCNEFDRjc4MTFFODhGREFFNUE0QTAxNTEwQjgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCNjU3OUI0N0NGNzgxMUU4OEZEQUU1QTRBMDE1MTBCOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNjU3OUI0OENGNzgxMUU4OEZEQUU1QTRBMDE1MTBCOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrP33lcAACNASURBVHja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) no-repeat;\n background-size: 100% 100%;\n height: 60px;\n width: 320px;\n position: absolute;\n top: -4px;\n left: 280px;\n z-index: 10;\n}\n.app-headBox .header-fullscreen[data-v-23878d08] {\n width: 18px;\n height: 18px;\n line-height: 18px;\n position: absolute;\n right: 158px;\n top: 25px;\n cursor: pointer;\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAAASCAYAAADixHhYAAADeElEQVRYhcWYT2hdRRTGf6+VYCRpBGkFMbFEkIhIwVV3rTFa0UVtkyapUkQqolCEtoTuWrC4cOFGu/FPq2gLWqoouqmlVpCiuNCV4kKIJjW1wRhpE8GC+bmYeWS8776Xe+9Te+Dw3v3mOzNzv3dmzsyrqVxDGwTG4mdfxKaAT4GTwNk2+n4aeBG4oSB/EdiP+ouN9ppKxo/n8C7m8Ir4gHpOnVafVzer/dE3R2w6cgYqjrEQ+yvKv11dIL7YkjqRTKo7J2BN0n4gEaXsRDep8+pzamcLXmfkzMeYsuOo9uTgg9GzeI9J4D51UR0pMNAO9Q/1YAVBBuILjpeIGYsxZTOlmSAnorcUpE8djqLsWEGMRXW7endJQWrqF+rhHHxYPaYeVR+JWMo5HGOz+H8qCOo2w68/toIYVBBkSL1g4zJ5U500ZNwhdcrGPazTsKcM/R+CHFW7koatOaKMZMTAsKccKTHBV+NLp9jDUYCbEmydOmPjOj8Y+6gqyG05gqzNCrIK2A0sJOXnQ2AU2JJgDwKPAe8n2GVgT4kyOEgop6ndD5wA5hJsFngnjpna2dhHFbsL+AEYT7CdwE/A+pR4XZMOPo5etycrTiS1XmAyg10FOnK41wO/ZrDJ2EcV+xaYAN4Gfo7YaMR+/AezRAq265fV3gy2UZ1V1yfYHeqcek+Ge6v6ZxtLBvVZwxFjKX5v2EOaZch2Qso+FZ9fJyyljyr+QgAzQD8wnWBfAmeAb4D3gFoc+wPg60x8P3ChjfEBXgKMfiSPsCo2dCXYMCG1TifYaeBdYGuCdQHHSkzmK+De5Hkc+A4YAj4j7ElzwCfAQ7FtLOFvAs6XGK+ZvUwTMQDqqVUvu/WzSN4BbdRQfbbF574YWzSFtxgqSo96ylCCH1VX53BXqzsj56R6Y4x9oM0l08rbOpgNVxCkfjCbMdxR1hSc5DnDnanKwWxe/a2gz6eC7C0gRt3rZ5J9JQXBcPz+Xd1VImZXjLmz5FiqG1y+f63kG1JBlgwXtlaXu+6kfUL9q4IguHy5O6R2tOB1RM6/fblDPZOD9WhIwUvAuszW8hbweAZ7heWqU7dZ4OYKG9sA8AZwC3CcsJFOxbZewga6G7gIPAF8X2GMRWAjxStTH3C+ptfsD6Ia4aQ6AtxHEOIqoSx/DpwilOSqE3wGeAHoLsi/Ahz4G0IJrsSY0uKeAAAAAElFTkSuQmCC);\n}\n.app-headBox .head-time[data-v-23878d08] {\n font-size: 14px;\n color: #b2c2cf;\n width: 101px;\n float: right;\n right: 0px;\n top: 0;\n bottom: 0;\n text-align: left;\n position: absolute;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n.app-headBox .head-time[data-v-23878d08]::before {\n content: \" \";\n width: 35px;\n height: 35px;\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTYzODJFMzZDRjY1MTFFODhGREFFNUE0QTAxNTEwQjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTYzODJFMzdDRjY1MTFFODhGREFFNUE0QTAxNTEwQjgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpFNjM4MkUzNENGNjUxMUU4OEZEQUU1QTRBMDE1MTBCOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpFNjM4MkUzNUNGNjUxMUU4OEZEQUU1QTRBMDE1MTBCOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pid3YSAAAAlrSURBVHja1Jt/jB1VFcfPvLfFt7uvtSxtV8qPULpdym9tS6FRSbbEFSUqoriFLmirtDGxCIqaiPqHhqjQxCpBYmPaCP2F0tb4B8QibkIhpZsWAk22dndrK6WtXVoo3e4P9+3u+D3vfWff7Hv3vp8z+2OSz87szLyZc84999w7957rzPtaQkLeLgR1YDa4GHwMfBRUgRjv6Qe94EPwX3ASnACd4IMwhasQJ5TnXgGWgBupdL4tRmrAnIxraoy3wB5wNHADuMEZQBVoAJ8Gl/jO97Ekj4Dj4D2Wai9L3vutesR0MIu/n0PPuZjczt/vBi2+35a1OXXLyq4CKngjqea598FesB8cBsMlPjsC5oKFYDG4iOd7wC7SW54B7inZAOo7nwJNYCrPHQIvgLfLUDqXMW4AnwPzea4bPAdeBW5JSsy9tyQD1IIHwDz+/y+wgwYYi+0qcJfPEB1gPegq3gDLizaAuuJKUAnOgm0MUOOxaaBdxtihsWYDaC3KAFc2J4px+Sa6oPBFG6IDyReP2zZ0QbIgVrJgdHuR1aKgKlGRrFmF3CfyLVp8EGwF/yhCzllsIW6h22qEn+kLmj1sHY6wOr3OSN9VQGTQAniK1e8eFpB6xB8pa+5SnfP1RCHKPwSuZ9PzW9A2ctHeGGnEvh/cyyhebIPrshXZAp4BZ0w3DcayYsN3adgDYF0+IzhzvpHI5/arWfIacddmdkai2QbQNvsR/q46IE/vZf3+JXuI6SoQy7r3cvBDtkwam/6QqzpEtCOUg7vBEtAH1oKjmfdIGu1V/gC0g++Bahl9vRyqwHfAIb5jinfNIPM74AnKvIQ6WHWMJGOAmZvAHWAQ/A4cNd3nppgHWsHjIO6mzwdNnO/Qd13j2mX/D2UepA6LbXraPGAm+CaPt4A2mwVRCl8C+8AnAizxfHwc7AV35ijdNsquxyupk8EDHPwdjQNWgUrQCl423JMETeAqlMJ2MC3EUs/lDc+rDDb5KHsrdVlF3UbdU+FmN4Pava3nB8tGW/CI9rvfhgV/L+O7RTXIRQbc6FDMedpyz0Z+VNVTt925gmAVaOLxs6DX5DbRAfeL8J0nc8SPseZJlclSFVSHTTxuoo7WINgIpoKDYL/pZdGEezW8ZjOIjoPb21BZNqtsFgOpLm3UrdEWBGOgkcc7jAFjwJ2C/VYQz9N85mVBnSN/ejiaRI/LfR5l2koZTdd3ct9IXbM8oAFUg0Og3dzkOQ+BG4GUy4NfiMiFcUmix0E8k7I9bPGCdupWTV1HeYADGnj8gsmCTkJmw81+FpTb1kxNN2t6HGB1+GlSVrMXeLo1UGcYIPWjOlALzoEDpgfDWj8G8cACl2m4IxhUxkctxjlAHWup80gVuIn7PWAoq7c0KDNw88ogA1dm5ybgoLhCZTYYZ4g6itc79KrADdzvM7pORJpBZaBCSgbBGqAyKbO5Gng6Xq977QjV8AvOG73N/i6NSnPgXRgn6x1Bb8uh2zrD+U7qqjrX6IDIXN+4WtZApjMos/CgBWF36dxI4I9c6AwjGFaM/nymjh0cYK1TD7icF45aRlyWljCYMREMoDI3aAfJcO0IDXCZTozM5sl3LQa4ORSNndANoNsi6GcywHHuZ6sHzOA/71keMj+UEpfQY0ByiMxiWE/XGRoDpvOfsxZB6yaxB8yzDPp6E65xrQIx37ibqQrUjsV3bUgGqLVEL28oP6ZVwD9FbdqmjokHhFMFbLKPTMoWOi8Q+DaIxqh+hiMVkdTxyw8UJsgZ+Ona3a60vlvQvMdAjqH+1AG+nvolPT9v8oLuULyAHpCA8l3nJTVEVcB2UbXII7eK3L2toNu7Lec/4nmCVgHPAFVGAzhyKgwDfPg/kcMl5n6orQqsMh9YZgQqPQPot8BZ9o2nW74DOsMYxXl8jyvv97tFjwif7nPl1/htge/psHwPTOP+vMaA05JKadG5un8borPO1d0etAe8flLkru2ulDitLwXGrkOWijWT+9NaBby+8qWSyurIjM57ZfJu+y3nvRSeE9oPOMZ/rrC0zy0sJmeSKa8y/9OSp+IlYh1TD+gc6TWlHGs449vpFL6o3uAM72Ta3sCX7AlDBysi6d7tYY0BmtB0kt/HeqHd4AWbJqEBtjjmOFHHFk/zEc9EfGNlul9kiaabQN8EmgfIh8r6jOWap+Pbrm9IrJV7nU6OZo0ID8lpBMON2vZOEjYmZc5u/qLUcURnryusceCUpLK/rpNUZmZmNXhMUhkf8Qnu+tqvfMzSTKpu06hrp39u0AUtPL7DOCuUQHMZkZ9PoPlAG79QWS0dIE+3Fuo8Mi+QbO5AD9BBhHpL/VkH3pzAdV9l+43lWj1166Gu4p8XUPrBLh5/2ZhNkZAEPp6awLmAprKCpBssUxktnnEn9y9RV2OGyC7QDa4BCy0TpNq/vg8MBTChGRQqSzNka7dcV12upW67ck2P94LneNwMqixT5H+D+6yZQK6/RmWylHwVdRHq1pMvR+hVoKVcA1bYrB4dcJ/GA1abptLGEH33apUlh3esoC4d1G20Rxus6YL17EwsBkttlofLrcdDvgrOjYPbn9cUuKQMds9YSh36qJObpYMluagLbODxcjDfloiEh/yVvauxbB3eAjeDnTkSpK6i7EJdukz35UqUbOV8un4xrgGXWtLklA5wC3gU9IWYHqfP/glYDNrELrvK+iBlf9HX083Oe5iyeTjfyJ2XKnsOPAHeGTW4GTN+a38frJJgU2U12+tXmTNYhlxlHdf4EXt8eVNlnYoteRd2+JOldTxdk6UPehcNubrepjNO9+ksLVggpSVL62e4Tm09q6M3ppsycpWLT5au2FrQyhZruvxgrMAJilS6vM4zXi3pdPm4r//upcsf5MhUC/vsuQVLG+A2SWWmV7DkC0uXj24reGmPccEEPGBcF0zAA8paMOFE/1z02qaJtGRGF2DoIonSl8xE/lLS4i7ToqntptGkkDZ971dYnXQrfdFU5PmSV7eZls2pIbxlc27ASuv7NKnh8xLksjlne9nL+3R87bPgM75m7wxdcR/nGspZOHklWCTZCydfAn+XchdOOjsCW9/oLZ29VWQk68SbivaWzh5jtD8v5qWzcbYOl0l66Wyl71k6h/GKBLl0NkAD+DedY/ikpBZPl5tfcIpDdK9JCIunHdk5HHbA8pbPXyKjl89rdblA+1KSXj7fI+nl88dlDJbP/1+AAQBfwVZ2R8rVYQAAAABJRU5ErkJggg==) no-repeat center;\n background-size: 100%;\n position: absolute;\n left: 0;\n margin-left: -45px;\n}\n\n.app-incomeBox[data-v-9bab11a8] {\n width: 100%;\n /*.incomeBar>div, .incomeBar canvas{*/\n /*height: 100% !important;*/\n /*}*/\n}\n.app-incomeBox .theme-card[data-v-9bab11a8] {\n height: 100%;\n}\n.app-incomeBox .incomeBar[data-v-9bab11a8] {\n position: absolute;\n margin: 0 auto;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n@charset \"UTF-8\";\n.app-berthBox[data-v-a2e6ab38] {\n width: 100%;\n /*空余*/\n /*占有*/\n}\n.app-berthBox .theme-card[data-v-a2e6ab38] {\n height: 100%;\n}\n.app-berthBox .berthPie[data-v-a2e6ab38] {\n position: absolute;\n margin: 0 auto;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n.app-berthBox .bottomBoxLeft[data-v-a2e6ab38], .app-berthBox .bottomBoxRight[data-v-a2e6ab38] {\n display: inline-block;\n width: 50%;\n height: 100%;\n border: 0px solid red;\n position: relative;\n}\n.app-berthBox .havefreeTb[data-v-a2e6ab38] {\n height: 100%;\n width: 100%;\n}\n.app-berthBox .havefreeTb td[data-v-a2e6ab38] {\n text-align: center;\n vertical-align: middle;\n}\n.app-berthBox .havefreeTb > tr > td[data-v-a2e6ab38]:last-child {\n font-size: 12px;\n text-align: left;\n}\n.app-berthBox .havefreeTb .free[data-v-a2e6ab38] {\n background-image: -webkit-linear-gradient(bottom, #00CAFE, #2772F4);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n font-size: 24px;\n}\n.app-berthBox .havefreeTb .have[data-v-a2e6ab38] {\n background-image: -webkit-linear-gradient(bottom, #FFBA00, #FF8100);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n font-size: 24px;\n}\n.app-berthBox .freeText[data-v-a2e6ab38], .app-berthBox .haveText[data-v-a2e6ab38] {\n margin-top: 5px;\n}\n\n@charset \"UTF-8\";\n.app-orderMessageBox[data-v-f3e050cc] {\n width: 100%;\n}\n.app-orderMessageBox .content[data-v-f3e050cc] {\n padding: 0;\n}\n.app-orderMessageBox .theme-card[data-v-f3e050cc] {\n height: 100%;\n}\n.app-orderMessageBox .news-wrap[data-v-f3e050cc] {\n height: 40px;\n line-height: 40px;\n font-size: 14px;\n}\n.app-orderMessageBox .news-wrap .roll-ul[data-v-f3e050cc] {\n height: 100%;\n position: relative;\n -webkit-transition: top 0.5s;\n -o-transition: top 0.5s;\n transition: top 0.5s;\n}\n.app-orderMessageBox .news-wrap li[data-v-f3e050cc] {\n height: 40px;\n float: left;\n padding-left: 0;\n padding-left: 30px;\n background-size: 14px 14px;\n background-position: 10px center;\n background-repeat: no-repeat;\n list-style: none;\n overflow: hidden;\n}\n.app-orderMessageBox .news-wrap .orderNum[data-v-f3e050cc] {\n width: 60px;\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAyIDE0IDE0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMiAxNCAxNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOnVybCgjWE1MSURfM18pO30KCS5zdDF7ZmlsbDojOTRDNEYxO30KCS5zdDJ7ZmlsbDojRkZGRkZGO30KPC9zdHlsZT4KPGcgaWQ9IlhNTElEXzFfIj4KCQoJCTxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfM18iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNy4xMTMxIiB5MT0iNC45MjcyIiB4Mj0iNi44NzAyIiB5Mj0iMTguNDI1IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgMjApIj4KCQk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojMDBENUZFIi8+CgkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzAwQjlGRSIvPgoJPC9saW5lYXJHcmFkaWVudD4KCTxwYXRoIGlkPSJYTUxJRF8zNF8iIGNsYXNzPSJzdDAiIGQ9Ik03LDE1LjZjLTMuNywwLTYuOC0zLTYuOC02LjhDMC4yLDUuMSwzLjIsMiw3LDJjMy43LDAsNi44LDMsNi44LDYuOFMxMC43LDE1LjYsNywxNS42eiIvPgoJPHBhdGggaWQ9IlhNTElEXzI3XyIgY2xhc3M9InN0MSIgZD0iTTcsMi41YzMuNiwwLDYuNSwyLjksNi41LDYuNXMtMi45LDYuNS02LjUsNi41UzAuNSwxMi42LDAuNSw5UzMuNCwyLjUsNywyLjUgTTcsMgoJCUMzLjEsMiwwLDUuMSwwLDlzMy4xLDcsNyw3czctMy4xLDctN1MxMC45LDIsNywyTDcsMnoiLz4KPC9nPgo8ZyBpZD0iWE1MSURfNF8iPgoJPGcgaWQ9IlhNTElEXzQ5XyI+CgkJPHBhdGggaWQ9IlhNTElEXzUwXyIgY2xhc3M9InN0MiIgZD0iTTkuMyw2LjRINC43QzQuMyw2LjQsNC4xLDYuNyw0LjEsN3YwLjJjMCwwLjMsMC4yLDAuNSwwLjUsMC41aDQuNmMwLjIsMCwwLjUtMC4yLDAuNS0wLjVWNwoJCQlDOS44LDYuNSw5LjMsNi40LDkuMyw2LjR6IE00LjcsOS42aDIuN0M3LjcsOS42LDgsOS40LDgsOS4xVjguOWMwLTAuMy0wLjItMC41LTAuNS0wLjVINC43Yy0wLjMsMC0wLjUsMC4yLTAuNSwwLjVWOQoJCQlDNC4yLDkuNCw0LjQsOS42LDQuNyw5LjZ6IE04LjcsMTAuM2gtNGMtMC4zLDAtMC41LDAuMi0wLjUsMC41VjExYzAsMC4zLDAuMiwwLjUsMC41LDAuNWg0YzAuMywwLDAuNS0wLjIsMC41LTAuNXYtMC4yCgkJCUM5LjIsMTAuNSw5LDEwLjMsOC43LDEwLjN6Ii8+Cgk8L2c+CjwvZz4KPC9zdmc+Cg==);\n}\n.app-orderMessageBox .news-wrap .orderMoney[data-v-f3e050cc] {\n width: 70px;\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAyIDE0IDE0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMiAxNCAxNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOnVybCgjWE1MSURfM18pO30KCS5zdDF7ZmlsbDojOTRDNEYxO30KCS5zdDJ7ZmlsbDojRkZGRkZGO30KPC9zdHlsZT4KPGcgaWQ9IlhNTElEXzFfIj4KCQoJCTxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfM18iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNy4xMTMxIiB5MT0iMTEuMTgyMiIgeDI9IjYuODcwMiIgeTI9Ii0yLjMxNTYiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgMSAwIDQpIj4KCQk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojMDBENUZFIi8+CgkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzAwQjlGRSIvPgoJPC9saW5lYXJHcmFkaWVudD4KCTxwYXRoIGlkPSJYTUxJRF8zNF8iIGNsYXNzPSJzdDAiIGQ9Ik03LDE1LjdjLTMuNywwLTYuOC0zLTYuOC02LjhjMC0zLjcsMy02LjgsNi44LTYuOGMzLjcsMCw2LjgsMyw2LjgsNi44UzEwLjcsMTUuNyw3LDE1Ljd6Ii8+Cgk8cGF0aCBpZD0iWE1MSURfMjdfIiBjbGFzcz0ic3QxIiBkPSJNNywyLjVjMy42LDAsNi41LDIuOSw2LjUsNi41cy0yLjksNi41LTYuNSw2LjVTMC41LDEyLjYsMC41LDlTMy40LDIuNSw3LDIuNSBNNywyCgkJQzMuMSwyLDAsNS4xLDAsOXMzLjEsNyw3LDdzNy0zLjEsNy03UzEwLjksMiw3LDJMNywyeiIvPgo8L2c+CjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMC4xLDkuMmwtMi4zLDBjMCwwLDAsMCwwLDAuMXYwLjhoMS40YzAuMiwwLDAuNCwwLjIsMC40LDAuNGwwLDBjMCwwLjItMC4yLDAuNS0wLjQsMC41SDcuN3YxLjQKCWMwLDAuMi0wLjIsMC40LTAuNCwwLjRINy4xYy0wLjIsMC0wLjQtMC4yLTAuNC0wLjRWMTFINWMtMC4yLDAtMC40LTAuMy0wLjQtMC41bDAsMGMwLTAuMiwwLjItMC40LDAuNC0wLjRoMS43VjkuMwoJYzAtMC4xLDAtMC4xLDAtMC4xbDAsMEgzLjljLTAuMiwwLTAuNC0wLjMtMC40LTAuNVY4LjdjMC0wLjIsMC4yLTAuNSwwLjQtMC41aDEuN0wzLjksNi43QzMuNyw2LjUsMy43LDYuMiwzLjksNgoJYzAuMi0wLjIsMC41LTAuMiwwLjcsMEw3LDguMUw5LjQsNmMwLjItMC4yLDAuNS0wLjIsMC43LDBzMC4yLDAuNSwwLDAuN0w4LjQsOC4yaDEuN2MwLjIsMCwwLjQsMC4zLDAuNCwwLjV2MAoJQzEwLjUsOC45LDEwLjQsOS4yLDEwLjEsOS4yeiIvPgo8L3N2Zz4K);\n}\n.app-orderMessageBox .news-wrap .orderPark[data-v-f3e050cc] {\n width: calc(100% - 220px);\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAyIDE0IDE0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMiAxNCAxNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOnVybCgjWE1MSURfM18pO30KCS5zdDF7ZmlsbDojOTRDNEYxO30KCS5zdDJ7ZmlsbDojRkZGRkZGO30KPC9zdHlsZT4KPGcgaWQ9IlhNTElEXzFfIj4KCQoJCTxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfM18iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNy4xMTMxIiB5MT0iMTEuMTgyMiIgeDI9IjYuODcwMiIgeTI9Ii0yLjMxNTYiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgMSAwIDQpIj4KCQk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojMDBENUZFIi8+CgkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzAwQjlGRSIvPgoJPC9saW5lYXJHcmFkaWVudD4KCTxwYXRoIGlkPSJYTUxJRF8zNF8iIGNsYXNzPSJzdDAiIGQ9Ik03LDE1LjdjLTMuNywwLTYuOC0zLTYuOC02LjhjMC0zLjcsMy02LjgsNi44LTYuOGMzLjcsMCw2LjgsMyw2LjgsNi44UzEwLjcsMTUuNyw3LDE1Ljd6Ii8+Cgk8cGF0aCBpZD0iWE1MSURfMjdfIiBjbGFzcz0ic3QxIiBkPSJNNywyLjVjMy42LDAsNi41LDIuOSw2LjUsNi41cy0yLjksNi41LTYuNSw2LjVTMC41LDEyLjYsMC41LDlTMy40LDIuNSw3LDIuNSBNNywyCgkJQzMuMSwyLDAsNS4xLDAsOXMzLjEsNyw3LDdzNy0zLjEsNy03UzEwLjksMiw3LDJMNywyeiIvPgo8L2c+CjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik01LDUuOGMwLjMsMCwwLjUsMC4yLDAuNSwwLjV2NWMwLDAuMy0wLjIsMC41LTAuNSwwLjVzLTAuNS0wLjItMC41LTAuNXYtNUM0LjUsNiw0LjcsNS44LDUsNS44eiIvPgo8cGF0aCBjbGFzcz0ic3QyIiBkPSJNNy41LDYuOGMwLjYsMCwxLDAuNCwxLDFzLTAuNCwxLTEsMWgtMnYtMkg3LjUgTTcuNSw1LjhoLTN2NGgzYzEuMSwwLDItMC45LDItMlM4LjYsNS44LDcuNSw1LjhMNy41LDUuOHoiLz4KPC9zdmc+Cg==);\n}\n.app-orderMessageBox .nwwest-roll[data-v-f3e050cc] {\n width: 100%;\n height: calc(100% - 60px);\n overflow: hidden;\n -webkit-transition: all 0.5s;\n -o-transition: all 0.5s;\n transition: all 0.5s;\n}\n.app-orderMessageBox .nwwest-roll li[data-v-f3e050cc] {\n width: 100%;\n height: 26px;\n line-height: 26px;\n font-size: 12px;\n padding-left: 10px;\n color: #fff;\n background: rgba(255, 255, 255, 0.1);\n margin-bottom: 5px;\n}\n.app-orderMessageBox .nwwest-roll li div[data-v-f3e050cc] {\n float: left;\n overflow: hidden;\n white-space: nowrap;\n -o-text-overflow: ellipsis;\n text-overflow: ellipsis;\n}\n.app-orderMessageBox .nwwest-roll li div[data-v-f3e050cc]:nth-of-type(1) {\n width: 90px;\n}\n.app-orderMessageBox .nwwest-roll li div[data-v-f3e050cc]:nth-of-type(2) {\n width: calc(100% - 190px);\n}\n.app-orderMessageBox .nwwest-roll li div[data-v-f3e050cc]:nth-of-type(3) {\n width: 70px;\n}\n.anim[data-v-f3e050cc] {\n transition: all 0.5s;\n}\n\n.app-memberNumBox[data-v-7002a226] {\n width: 100%;\n /*.memberNumTb >tr>td:first-child{*/\n /*width:25%;*/\n /*}*/\n /*.memberNumTb >tr>td:last-child{*/\n /*width:25%;*/\n /*}*/\n}\n.app-memberNumBox .theme-card[data-v-7002a226] {\n height: 100%;\n}\n.app-memberNumBox .topBox[data-v-7002a226], .app-memberNumBox .bottomBox[data-v-7002a226] {\n border: 0px solid red;\n}\n.app-memberNumBox .memberNumTb[data-v-7002a226] {\n margin: 0 auto;\n width: 100%;\n height: 100%;\n}\n.app-memberNumBox .memberNumTb > tr[data-v-7002a226] {\n width: 100%;\n height: 100%;\n}\n.app-memberNumBox .memberNumTb > tr > td[data-v-7002a226] {\n height: 100%;\n width: 33.333%;\n}\n.app-memberNumBox .memberNumTb > tr > td[data-v-7002a226]:nth-child(2) {\n vertical-align: middle;\n text-align: center;\n position: relative;\n}\n.app-memberNumBox .memberNumTb > tr > td[data-v-7002a226]:first-child {\n vertical-align: middle;\n text-align: right;\n padding-right: 5px;\n}\n.app-memberNumBox .memberNumTb > tr > td[data-v-7002a226]:last-child {\n vertical-align: middle;\n text-align: left;\n padding-left: 5px;\n}\n.app-memberNumBox .memberRadar[data-v-7002a226] {\n background: url(../images/memberRadar.64f2262.png) no-repeat;\n background-size: 100% 100%;\n width: 90%;\n height: 0;\n padding-bottom: 90%;\n margin: auto;\n background-position: center center;\n background-repeat: no-repeat;\n background-size: cover;\n -webkit-background-size: cover;\n -moz-background-size: cover;\n}\n.app-memberNumBox .memberRadarBox[data-v-7002a226]:before {\n content: \" \";\n display: block;\n height: 30px;\n width: 30px;\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDMyIDMyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMiAzMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfMzJfKTt9Cgkuc3Qxe2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMzJfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjE1Ljk3NzgiIHkxPSIzMi4zMDEiIHgyPSIxNi4wMjIxIiB5Mj0iLTAuMTU5NCI+Cgk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojNTFFQzUxIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjIwMzYiIHN0eWxlPSJzdG9wLWNvbG9yOiM0OEU3NDgiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNTQxOSIgc3R5bGU9InN0b3AtY29sb3I6IzJFRDkyRSIvPgoJPHN0b3AgIG9mZnNldD0iMC45NzEyIiBzdHlsZT0ic3RvcC1jb2xvcjojMDVDNDA1Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojMDJDMjAyIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGlkPSJYTUxJRF8yXyIgY2xhc3M9InN0MCIgZD0iTTE2LDBjOC44LDAsMTYsNy4yLDE2LDE2cy03LjIsMTYtMTYsMTZTMCwyNC44LDAsMTZTNy4yLDAsMTYsMHoiLz4KPHBhdGggaWQ9IlhNTElEXzMwXyIgY2xhc3M9InN0MSIgZD0iTTI1LjYsMTIuNmwtNC41LDcuOGMtMC43LDEtMi4xLDAuMy0yLjQsMC4xbC02LjgtNi40YzAsMC0wLjEtMC4xLTAuMS0wLjFsLTMuNyw2LjQKCWMtMC4zLDAuNS0wLjksMC42LTEuNCwwLjRjLTAuNS0wLjMtMC42LTAuOS0wLjQtMS40bDQuMy03LjRjMC4zLTAuNSwxLjEtMS4xLDEuNy0wLjZjMC40LDAuMywwLjgsMC45LDEsMS4xbDYuNiw2LjFsNC03CgljMC4zLTAuNSwwLjktMC42LDEuNC0wLjRDMjUuNywxMS41LDI1LjksMTIuMSwyNS42LDEyLjZ6Ii8+Cjwvc3ZnPgo=) no-repeat;\n background-size: 100%;\n position: absolute;\n left: 0px;\n top: 15px;\n z-index: 8;\n}\n.app-memberNumBox .memberRadarBox[data-v-7002a226]:after {\n content: \" \";\n display: block;\n height: 30px;\n width: 30px;\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDI0IDI0IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyNCAyNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfMTlfKTt9Cgkuc3Qxe2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMTlfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjExLjgzOTEiIHkxPSIyNC4wMzc2IiB4Mj0iMTIuMTU4NiIgeTI9IjAuMTI4MyI+Cgk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojRkZBQjAwIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjM3NCIgc3R5bGU9InN0b3AtY29sb3I6I0ZFQTIwNSIvPgoJPHN0b3AgIG9mZnNldD0iMC45OTQxIiBzdHlsZT0ic3RvcC1jb2xvcjojRkQ4ODExIi8+Cgk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojRkQ4ODExIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGlkPSJYTUxJRF8yXyIgY2xhc3M9InN0MCIgZD0iTTEyLDBjNi42LDAsMTIsNS40LDEyLDEycy01LjQsMTItMTIsMTJDNS40LDI0LDAsMTguNiwwLDEyUzUuNCwwLDEyLDB6Ii8+CjxwYXRoIGlkPSJYTUxJRF8xN18iIGNsYXNzPSJzdDEiIGQ9Ik0xOC42LDEyLjlDMTguNSwxMywxOC40LDEzLDE4LjIsMTNoLTV2NWMwLDAuNi0wLjQsMS0xLDFjLTAuNiwwLTEtMC40LTEtMXYtNWgtNQoJYy0wLjEsMC0wLjMsMC0wLjQtMC4xYy0wLjQtMC4yLTAuNi0wLjUtMC42LTAuOXMwLjMtMC44LDAuNi0wLjlDNiwxMSw2LjEsMTEsNi4yLDExaDVWNmMwLTAuNiwwLjQtMSwxLTFjMC42LDAsMSwwLjQsMSwxdjVoNQoJYzAuMSwwLDAuMywwLDAuNCwwLjFjMC40LDAuMiwwLjYsMC41LDAuNiwwLjlTMTksMTIuOCwxOC42LDEyLjl6Ii8+Cjwvc3ZnPgo=) no-repeat;\n background-size: 100%;\n position: absolute;\n right: 0px;\n bottom: 15px;\n z-index: 8;\n}\n.app-memberNumBox .activeUserNum[data-v-7002a226] {\n background-image: -webkit-linear-gradient(bottom, #67F967, #05C405);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n font-size: 24px;\n}\n.app-memberNumBox .newUerNum[data-v-7002a226] {\n background-image: -webkit-linear-gradient(bottom, #FFBA00, #FF8100);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n font-size: 24px;\n}\n.app-memberNumBox .activeUserText[data-v-7002a226], .app-memberNumBox .newUerNumText[data-v-7002a226] {\n font-size: 12px;\n}\n.app-memberNumBox .activeUserText[data-v-7002a226]:after {\n content: \" \";\n display: inline-block;\n height: 12px;\n width: 13px;\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAMCAYAAAC5tzfZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDZGOUUwRTlDRjVEMTFFODhGREFFNUE0QTAxNTEwQjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDZGOUUwRUFDRjVEMTFFODhGREFFNUE0QTAxNTEwQjgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NkY5RTBFN0NGNUQxMUU4OEZEQUU1QTRBMDE1MTBCOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NkY5RTBFOENGNUQxMUU4OEZEQUU1QTRBMDE1MTBCOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pk3z1YkAAADqSURBVHjaYvz//z8DMmA7yuYNpDqBWBWIbwBx6S/rX7uQ1TAia+I+we0HpDaAxJHUgBR4fLX4CtfIgmwCOzN7GZoGBii/HIixa+Jg5VBgwA4UkTkomjhZOe8BKWksmu7h1MTFytUHpGzRNID81IczIEDA/L55CpBqA2JRIH4BxGUnFU8uxqrJ8akjKBA0gbgDiO8AsQAQfwBiQSBugRrQuF96/3+w87xfeRcAndYJNSgAiOcD8W0glgLiWCCWh8r9ARnAGPwuGBQy10CBx0AY/AS5hgUYzC1EagBHJRDXswAjVIuBNGAMEGAAY6E5QSJwW/0AAAAASUVORK5CYII=) no-repeat;\n background-size: 100%;\n margin-left: 5px;\n}\n.app-memberNumBox .newUerNumText[data-v-7002a226]:before {\n content: \" \";\n display: inline-block;\n height: 12px;\n width: 13px;\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAMCAYAAAC5tzfZAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjVDQjI4NzhDRjVEMTFFODhGREFFNUE0QTAxNTEwQjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjVDQjI4NzlDRjVEMTFFODhGREFFNUE0QTAxNTEwQjgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyNUNCMjg3NkNGNUQxMUU4OEZEQUU1QTRBMDE1MTBCOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyNUNCMjg3N0NGNUQxMUU4OEZEQUU1QTRBMDE1MTBCOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmAhBIEAAADsSURBVHjaYvz//z8DCtjB6A0kO4FYFYhvAHEpg8f/XchKGJE1/d/J4QekNoDEkdSAFHgwuv+Aa2RCNuE/I2cZEDMCMQMSBvHLkdWxoGriVmDADhRxa2LiuQekpLFouodT0z9G3j4gZYumAeSnPpwBAQI/DjinAKk2IBYF4hdAXMbhsHcxVk3fDwaWASlNIO4A4jtALADEH4BYEIhboAY0ctqv/w923tfDcQUMTLydUIMCgHg+EN8GYikgjgVieajcH5ABjJ8PZ4JC5hoQczAQBj9BrmH5z8TdQqQGEGAH4noWYMRpMZAGjAECDAAKCESYsz2R+wAAAABJRU5ErkJggg==) no-repeat;\n background-size: 100%;\n margin-right: 5px;\n}\n\n@charset \"UTF-8\";\n.app-tollmanBox[data-v-d7591a54] {\n width: 100%;\n}\n.app-tollmanBox .theme-card[data-v-d7591a54] {\n height: 100%;\n}\n.app-tollmanBox .tollmanTb[data-v-d7591a54] {\n margin: 0 auto;\n width: 100%;\n height: 100%;\n position: relative;\n}\n.app-tollmanBox .tollmanTb > tr > td[data-v-d7591a54] {\n width: 50%;\n vertical-align: middle;\n text-align: center;\n}\n.app-tollmanBox .onDutyImg[data-v-d7591a54] {\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDU4LjYgNDguNSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTguNiA0OC41OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6dXJsKCNYTUxJRF8xMF8pO30KCS5zdDF7ZmlsbDojMTk5MUY4O30KCS5zdDJ7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI1hNTElEXzIwXyk7fQoJLnN0M3tmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiMwMzJEODU7fQoJLnN0NHtvcGFjaXR5OjAuODt9Cgkuc3Q1e2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMTBfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjI3IiB5MT0iMzciIHgyPSIyNyIgeTI9IjMiPgoJPHN0b3AgIG9mZnNldD0iNS4wMDMwNzllLTA0IiBzdHlsZT0ic3RvcC1jb2xvcjojMDBDQUZFIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjk5NDkiIHN0eWxlPSJzdG9wLWNvbG9yOiMyNzcyRjQiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzJfIiBjbGFzcz0ic3QwIiBkPSJNNSwzaDQ0YzEuMSwwLDIsMC45LDIsMnYzMGMwLDEuMS0wLjksMi0yLDJINWMtMS4xLDAtMi0wLjktMi0yVjVDMywzLjksMy45LDMsNSwzeiIvPgo8cGF0aCBpZD0iWE1MSURfMV8iIGNsYXNzPSJzdDEiIGQ9Ik01MCwxYzEuNywwLDMsMS4zLDMsM3YzMmMwLDEuNy0xLjMsMy0zLDNINGMtMS43LDAtMy0xLjMtMy0zVjRjMC0xLjcsMS4zLTMsMy0zSDUwIE01MCwwSDQKCUMxLjgsMCwwLDEuOCwwLDR2MzJjMCwyLjIsMS44LDQsNCw0aDQ2YzIuMiwwLDQtMS44LDQtNFY0QzU0LDEuOCw1Mi4yLDAsNTAsMEw1MCwweiIvPgo8bGluZWFyR3JhZGllbnQgaWQ9IlhNTElEXzIwXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyNiIgeTE9IjQ4LjUwODkiIHgyPSIyNiIgeTI9IjQ0LjUwODkiPgoJPHN0b3AgIG9mZnNldD0iNS4wMDMwNzllLTA0IiBzdHlsZT0ic3RvcC1jb2xvcjojMDBDQUZFIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjk5NDkiIHN0eWxlPSJzdG9wLWNvbG9yOiMyNzcyRjQiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzZfIiBjbGFzcz0ic3QyIiBkPSJNMTQuNSw0NC41aDIzYzEuMSwwLDIsMC45LDIsMnMtMC45LDItMiwyaC0yM2MtMS4xLDAtMi0wLjktMi0yUzEzLjQsNDQuNSwxNC41LDQ0LjV6Ii8+CjxnIGlkPSJYTUxJRF84XyI+Cgk8cGF0aCBpZD0iWE1MSURfMTdfIiBjbGFzcz0ic3QzIiBkPSJNMzcuNiw0OGMtMC4yLDAtMC42LDAtMC45LTAuMmMtMC4zLTAuMS0wLjUtMC4zLTAuNS0wLjZsMC44LTEuNmMwLDAsMS4zLTIuNywyLjgtNC4yCgkJYzAuNC0wLjQsMC44LTAuNiwxLjItMC42YzAuNywwLDEuNCwwLjQsMS42LDAuNmMwLjMsMC40LDEuMywxLjcsMy44LDEuN2gwLjljMi41LDAsMy42LTEuMywzLjgtMS43YzAuMi0wLjEsMC44LTAuNSwxLjQtMC41CgkJYzAuNCwwLDAuOCwwLjIsMS4yLDAuNmMxLjUsMS41LDIuNiw0LjIsMi43LDQuMmwwLjgsMS42Yy0wLjEsMC42LTAuNywwLjctMS4yLDAuN0wzNy42LDQ4eiBNNDYuNiwzOS41Yy0yLjksMC01LjMtMi42LTUuMy01LjgKCQljMC0zLjEsMi4zLTUuNiw1LjMtNS42czUuMywyLjQsNS4zLDUuNkM1MS45LDM2LjksNDkuNSwzOS41LDQ2LjYsMzkuNXoiLz4KCTxwYXRoIGlkPSJYTUxJRF81XyIgY2xhc3M9InN0MSIgZD0iTTQ2LjYsMjguNmMyLjcsMCw0LjgsMi4yLDQuOCw1LjFjMCwyLjktMi4xLDUuMy00LjgsNS4zYy0yLjYsMC00LjgtMi40LTQuOC01LjMKCQlDNDEuOSwzMC44LDQzLjksMjguNiw0Ni42LDI4LjYgTTQxLDQxLjNjMC41LDAsMSwwLjIsMS4yLDAuNGMwLjUsMC44LDEuOSwxLjgsNC4yLDEuOGwwLjksMGMyLjMsMCwzLjctMS4xLDQuMi0xLjkKCQljMC4yLTAuMSwwLjYtMC40LDEtMC40YzAuMiwwLDAuNSwwLDAuOCwwLjRjMS40LDEuNCwyLjUsNC4xLDIuNiw0LjFsMCwwbDAsMGwwLjcsMS40Yy0wLjEsMC4xLTAuMywwLjItMC43LDAuMmwtMC4xLDBsMCwwaDBIMzcuNwoJCWwwLDBsMCwwbC0wLjEsMGMtMC4xLDAtMC43LDAtMC45LTAuMmwwLjctMS41YzAsMCwxLjMtMi42LDIuNy00LjFDNDAuNCw0MS40LDQwLjYsNDEuMyw0MSw0MS4zIE00Ni42LDI3LjZjLTMuMiwwLTUuOCwyLjYtNS44LDYuMQoJCWMwLDMuNSwyLjYsNi4zLDUuOCw2LjNjMy4yLDAsNS44LTIuOCw1LjgtNi4zQzUyLjQsMzAuMiw0OS44LDI3LjYsNDYuNiwyNy42TDQ2LjYsMjcuNnogTTUyLjUsNDAuM2MtMSwwLTEuOCwwLjctMS44LDAuNwoJCXMtMC44LDEuNS0zLjQsMS41aC0wLjljLTIuNiwwLTMuNC0xLjUtMy40LTEuNVM0Miw0MC4zLDQxLDQwLjNjLTAuNSwwLTEuMSwwLjItMS42LDAuN2MtMS41LDEuNi0yLjksNC4zLTIuOSw0LjNsLTAuOCwxLjgKCQljMCwxLjMsMS41LDEuNCwxLjksMS40YzAuMSwwLDAuMSwwLDAuMSwwaDE4LjFjMCwwLDAsMCwwLjEsMGMwLjQsMCwxLjctMC4xLDEuNy0xLjRsLTAuOS0xLjdjMCwwLTEuMi0yLjgtMi43LTQuNAoJCUM1My41LDQwLjUsNTMsNDAuMyw1Mi41LDQwLjNMNTIuNSw0MC4zeiIvPgo8L2c+CjxnIGlkPSJYTUxJRF85XyIgY2xhc3M9InN0NCI+Cgk8ZyBpZD0iWE1MSURfNThfIj4KCQk8cGF0aCBpZD0iWE1MSURfNjBfIiBjbGFzcz0ic3Q1IiBkPSJNNDAuNSw5aC0yN0MxMi43LDksMTIsOS43LDEyLDEwLjVjMCwwLjgsMC43LDEuNSwxLjUsMS41aDI3YzAuOCwwLDEuNS0wLjcsMS41LTEuNQoJCQlDNDIsOS43LDQxLjMsOSw0MC41LDl6IE0zNS41LDI4aC0yMmMtMC44LDAtMS41LDAuNy0xLjUsMS41YzAsMC44LDAuNywxLjUsMS41LDEuNWgyMmMwLjgsMCwxLjUtMC43LDEuNS0xLjUKCQkJQzM3LDI4LjcsMzYuMywyOCwzNS41LDI4eiBNMTMuNSwyMmgxNmMwLjgsMCwxLjUtMC43LDEuNS0xLjVjMC0wLjgtMC43LTEuNS0xLjUtMS41aC0xNmMtMC44LDAtMS41LDAuNy0xLjUsMS41CgkJCUMxMiwyMS4zLDEyLjcsMjIsMTMuNSwyMnoiLz4KCTwvZz4KPC9nPgo8L3N2Zz4K) no-repeat;\n background-size: 100% 100%;\n /*width: 50%;*/\n /*height: 60%;*/\n display: inline-block;\n width: 45%;\n height: 0;\n padding-bottom: 40%;\n margin: auto;\n}\n.app-tollmanBox .onDutyInfo[data-v-d7591a54], .app-tollmanBox .noDutyInfo[data-v-d7591a54] {\n display: inline-block;\n}\n.app-tollmanBox .onDutyInfo > span[data-v-d7591a54] {\n background-image: -webkit-linear-gradient(bottom, #00CAFE, #2772F4);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n font-size: 24px;\n}\n.app-tollmanBox .onDutyInfo > div[data-v-d7591a54], .app-tollmanBox .noDutyInfo > div[data-v-d7591a54] {\n font-size: 12px;\n text-align: left;\n}\n.app-tollmanBox .noDutyImg[data-v-d7591a54] {\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDU4LjYgNDguNSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTguNiA0OC41OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6dXJsKCNYTUxJRF81NF8pO30KCS5zdDF7ZmlsbDojRkZCNzAwO30KCS5zdDJ7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI1hNTElEXzU1Xyk7fQoJLnN0M3tmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiMwMzJEODU7fQoJLnN0NHtmaWxsOiNGRUI4MDU7fQoJLnN0NXtvcGFjaXR5OjAuODt9Cgkuc3Q2e2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0ZGRkZGRjt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfNTRfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjI3IiB5MT0iMzciIHgyPSIyNyIgeTI9IjMiPgoJPHN0b3AgIG9mZnNldD0iMC4yMjg1IiBzdHlsZT0ic3RvcC1jb2xvcjojRjBDNzg0Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjk5NDQiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRkI3MDAiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzJfIiBjbGFzcz0ic3QwIiBkPSJNNSwzaDQ0YzEuMSwwLDIsMC45LDIsMnYzMGMwLDEuMS0wLjksMi0yLDJINWMtMS4xLDAtMi0wLjktMi0yVjVDMywzLjksMy45LDMsNSwzeiIvPgo8cGF0aCBpZD0iWE1MSURfMV8iIGNsYXNzPSJzdDEiIGQ9Ik01MCwxYzEuNywwLDMsMS4zLDMsM3YzMmMwLDEuNy0xLjMsMy0zLDNINGMtMS43LDAtMy0xLjMtMy0zVjRjMC0xLjcsMS4zLTMsMy0zSDUwIE01MCwwSDQKCUMxLjgsMCwwLDEuOCwwLDR2MzJjMCwyLjIsMS44LDQsNCw0aDQ2YzIuMiwwLDQtMS44LDQtNFY0QzU0LDEuOCw1Mi4yLDAsNTAsMEw1MCwweiIvPgo8bGluZWFyR3JhZGllbnQgaWQ9IlhNTElEXzU1XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyNiIgeTE9IjQ4LjUwODkiIHgyPSIyNiIgeTI9IjQ0LjUwODkiPgoJPHN0b3AgIG9mZnNldD0iMC4yMjg1IiBzdHlsZT0ic3RvcC1jb2xvcjojRjBDNzg0Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjk5NDQiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRkI3MDAiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzZfIiBjbGFzcz0ic3QyIiBkPSJNMTQuNSw0NC41aDIzYzEuMSwwLDIsMC45LDIsMnMtMC45LDItMiwyaC0yM2MtMS4xLDAtMi0wLjktMi0yUzEzLjQsNDQuNSwxNC41LDQ0LjV6Ii8+CjxnIGlkPSJYTUxJRF84XyI+Cgk8cGF0aCBpZD0iWE1MSURfMTdfIiBjbGFzcz0ic3QzIiBkPSJNMzcuNiw0OGMtMC4yLDAtMC42LDAtMC45LTAuMmMtMC4zLTAuMS0wLjUtMC4zLTAuNS0wLjZsMC44LTEuNmMwLDAsMS4zLTIuNywyLjgtNC4yCgkJYzAuNC0wLjQsMC44LTAuNiwxLjItMC42YzAuNywwLDEuNCwwLjQsMS42LDAuNmMwLjMsMC40LDEuMywxLjcsMy44LDEuN2gwLjljMi41LDAsMy42LTEuMywzLjgtMS43YzAuMi0wLjEsMC44LTAuNSwxLjQtMC41CgkJYzAuNCwwLDAuOCwwLjIsMS4yLDAuNmMxLjUsMS41LDIuNiw0LjIsMi43LDQuMmwwLjgsMS42Yy0wLjEsMC42LTAuNywwLjctMS4yLDAuN0wzNy42LDQ4eiBNNDYuNiwzOS41Yy0yLjksMC01LjMtMi42LTUuMy01LjgKCQljMC0zLjEsMi4zLTUuNiw1LjMtNS42czUuMywyLjQsNS4zLDUuNkM1MS45LDM2LjksNDkuNSwzOS41LDQ2LjYsMzkuNXoiLz4KCTxwYXRoIGlkPSJYTUxJRF81XyIgY2xhc3M9InN0NCIgZD0iTTQ2LjYsMjguNmMyLjcsMCw0LjgsMi4yLDQuOCw1LjFjMCwyLjktMi4xLDUuMy00LjgsNS4zYy0yLjYsMC00LjgtMi40LTQuOC01LjMKCQlDNDEuOSwzMC44LDQzLjksMjguNiw0Ni42LDI4LjYgTTQxLDQxLjNjMC41LDAsMSwwLjIsMS4yLDAuNGMwLjUsMC44LDEuOSwxLjgsNC4yLDEuOGwwLjksMGMyLjMsMCwzLjctMS4xLDQuMi0xLjkKCQljMC4yLTAuMSwwLjYtMC40LDEtMC40YzAuMiwwLDAuNSwwLDAuOCwwLjRjMS40LDEuNCwyLjUsNC4xLDIuNiw0LjFsMCwwbDAsMGwwLjcsMS40Yy0wLjEsMC4xLTAuMywwLjItMC43LDAuMmwtMC4xLDBsMCwwaDBIMzcuNwoJCWwwLDBsMCwwbC0wLjEsMGMtMC4xLDAtMC43LDAtMC45LTAuMmwwLjctMS41YzAsMCwxLjMtMi42LDIuNy00LjFDNDAuNCw0MS40LDQwLjYsNDEuMyw0MSw0MS4zIE00Ni42LDI3LjZjLTMuMiwwLTUuOCwyLjYtNS44LDYuMQoJCWMwLDMuNSwyLjYsNi4zLDUuOCw2LjNjMy4yLDAsNS44LTIuOCw1LjgtNi4zQzUyLjQsMzAuMiw0OS44LDI3LjYsNDYuNiwyNy42TDQ2LjYsMjcuNnogTTUyLjUsNDAuM2MtMSwwLTEuOCwwLjctMS44LDAuNwoJCXMtMC44LDEuNS0zLjQsMS41aC0wLjljLTIuNiwwLTMuNC0xLjUtMy40LTEuNVM0Miw0MC4zLDQxLDQwLjNjLTAuNSwwLTEuMSwwLjItMS42LDAuN2MtMS41LDEuNi0yLjksNC4zLTIuOSw0LjNsLTAuOCwxLjgKCQljMCwxLjMsMS41LDEuNCwxLjksMS40YzAuMSwwLDAuMSwwLDAuMSwwaDE4LjFjMCwwLDAsMCwwLjEsMGMwLjQsMCwxLjctMC4xLDEuNy0xLjRsLTAuOS0xLjdjMCwwLTEuMi0yLjgtMi43LTQuNAoJCUM1My41LDQwLjUsNTMsNDAuMyw1Mi41LDQwLjNMNTIuNSw0MC4zeiIvPgo8L2c+CjxnIGlkPSJYTUxJRF85XyIgY2xhc3M9InN0NSI+Cgk8ZyBpZD0iWE1MSURfNThfIj4KCQk8cGF0aCBpZD0iWE1MSURfNjBfIiBjbGFzcz0ic3Q2IiBkPSJNMTUsMTcuNWMtMS40LDAtMi41LDEuMS0yLjUsMi41YzAsMS40LDEuMSwyLjUsMi41LDIuNXMyLjUtMS4xLDIuNS0yLjUKCQkJQzE3LjUsMTguNiwxNi40LDE3LjUsMTUsMTcuNXogTTI3LDE3LjVjLTEuNCwwLTIuNSwxLjEtMi41LDIuNWMwLDEuNCwxLjEsMi41LDIuNSwyLjVzMi41LTEuMSwyLjUtMi41CgkJCUMyOS41LDE4LjYsMjguNCwxNy41LDI3LDE3LjV6IE0zOSwxNy41Yy0xLjQsMC0yLjUsMS4xLTIuNSwyLjVjMCwxLjQsMS4xLDIuNSwyLjUsMi41czIuNS0xLjEsMi41LTIuNQoJCQlDNDEuNSwxOC42LDQwLjQsMTcuNSwzOSwxNy41eiIvPgoJPC9nPgo8L2c+Cjwvc3ZnPgo=) no-repeat;\n background-size: 100% 100%;\n /*width: 50%;*/\n /*height: 60%;*/\n display: inline-block;\n /*等比例压缩*/\n width: 45%;\n height: 0;\n padding-bottom: 40%;\n margin: auto;\n}\n.app-tollmanBox .noDutyInfo > span[data-v-d7591a54] {\n background-image: -webkit-linear-gradient(bottom, #FFBA00, #FF8100);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n font-size: 24px;\n}\n\n.app-deviceBox[data-v-251b924e] {\n width: 100%;\n}\n.app-deviceBox .theme-card[data-v-251b924e] {\n height: 100%;\n}\n.app-deviceBox .content[data-v-251b924e] {\n padding: 0px;\n}\n.app-deviceBox .marginTop[data-v-251b924e] {\n margin-top: 8% !important;\n}\n.app-deviceBox .deviceTb[data-v-251b924e] {\n margin: 0 auto;\n width: 100%;\n height: 100%;\n}\n.app-deviceBox .deviceTb > tr > td[data-v-251b924e] {\n vertical-align: middle;\n text-align: center;\n width: 50%;\n}\n.app-deviceBox .deviceBg[data-v-251b924e] {\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDMwNS42IDE1OS40IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMDUuNiAxNTkuNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfMzJfKTt9Cgkuc3Qxe2ZpbGw6IzE1N0FEQjt9Cgkuc3Qye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6dXJsKCNYTUxJRF80N18pO30KCS5zdDN7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI1hNTElEXzU0Xyk7fQoJLnN0NHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfNTVfKTt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMzJfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIuNjI1IiB5MT0iMS41IiB4Mj0iMzAzLjYyNSIgeTI9IjEuNSI+Cgk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KCTxzdG9wICBvZmZzZXQ9IjUuNDIzMTUxZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yOTE1Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjQ3NDMiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREIiLz4KCTxzdG9wICBvZmZzZXQ9IjAuOTMyNyIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yOTg3Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjk5NzIiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8cGF0aCBpZD0iWE1MSURfMjhfIiBjbGFzcz0ic3QwIiBkPSJNMi42LDFoMzAxdjFIMi42VjF6Ii8+CjxwYXRoIGlkPSJYTUxJRF8yN18iIGNsYXNzPSJzdDEiIGQ9Ik0zMDQuNiwxdjFoLTFWMUgzMDQuNiBNMzA1LjYsMGgtM3YzaDNWMEwzMDUuNiwweiIvPgo8cGF0aCBpZD0iWE1MSURfMzFfIiBjbGFzcz0ic3QxIiBkPSJNMiwxdjFIMVYxSDIgTTMsMEgwdjNoM1YwTDMsMHoiLz4KPGxpbmVhckdyYWRpZW50IGlkPSJYTUxJRF80N18iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMS41IiB5MT0iMTU3IiB4Mj0iMS41IiB5Mj0iMiI+Cgk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iMC4xNjQiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjkxNSIvPgoJPHN0b3AgIG9mZnNldD0iMC41MDY4IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjgyOTkiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjk4NyIvPgoJPHN0b3AgIG9mZnNldD0iMC44NzUzIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzM0XyIgY2xhc3M9InN0MiIgZD0iTTEsMmgxdjE1NUgxVjJ6Ii8+CjxwYXRoIGlkPSJYTUxJRF82OV8iIGNsYXNzPSJzdDEiIGQ9Ik0yLDE1Ny40djFIMXYtMUgyIE0zLDE1Ni40SDB2M2gzVjE1Ni40TDMsMTU2LjR6Ii8+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfNTRfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIuMTI1IiB5MT0iMTU3Ljg3NSIgeDI9IjMwMy4xMjUiIHkyPSIxNTcuODc1Ij4KCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iNS40MjMxNTFlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjI5MTUiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNDc0MyIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQiIvPgoJPHN0b3AgIG9mZnNldD0iMC45MzI3IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjI5ODciLz4KCTxzdG9wICBvZmZzZXQ9IjAuOTk3MiIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGlkPSJYTUxJRF83MV8iIGNsYXNzPSJzdDMiIGQ9Ik0yLjEsMTU3LjRoMzAxdjFIMi4xVjE1Ny40eiIvPgo8cGF0aCBpZD0iWE1MSURfNzNfIiBjbGFzcz0ic3QxIiBkPSJNMzA0LjYsMTU3LjR2MWgtMXYtMUgzMDQuNiBNMzA1LjYsMTU2LjRoLTN2M2gzVjE1Ni40TDMwNS42LDE1Ni40eiIvPgo8bGluZWFyR3JhZGllbnQgaWQ9IlhNTElEXzU1XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIzMDQuMTE0NiIgeTE9IjE1NyIgeDI9IjMwNC4xMTQ2IiB5Mj0iMiI+Cgk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iMC4xNjQiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjkxNSIvPgoJPHN0b3AgIG9mZnNldD0iMC41MDY4IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjgyOTkiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjk4NyIvPgoJPHN0b3AgIG9mZnNldD0iMC44NzUzIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzc1XyIgY2xhc3M9InN0NCIgZD0iTTMwMy42LDJoMXYxNTVoLTFWMnoiLz4KPC9zdmc+Cg==) no-repeat;\n background-size: 100% 100%;\n width: 100%;\n /*height:85%;*/\n margin: 0px auto;\n /*padding: 5px;*/\n height: 40%;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.app-deviceBox .PDAcontent[data-v-251b924e], .app-deviceBox .diCicontent[data-v-251b924e], .app-deviceBox .daoZhacontent[data-v-251b924e], .app-deviceBox .youDaocontent[data-v-251b924e] {\n margin: 0 auto;\n}\n.app-deviceBox .PDAcontent div[data-v-251b924e], .app-deviceBox .diCicontent div[data-v-251b924e], .app-deviceBox .daoZhacontent div[data-v-251b924e], .app-deviceBox .youDaocontent div[data-v-251b924e] {\n font-size: 12px;\n}\n.app-deviceBox .PDAcontent span[data-v-251b924e], .app-deviceBox .diCicontent span[data-v-251b924e] {\n background-image: -webkit-linear-gradient(bottom, #00CAFE, #2772F4);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n font-size: 24px;\n}\n.app-deviceBox .daoZhacontent span[data-v-251b924e], .app-deviceBox .youDaocontent span[data-v-251b924e] {\n background-image: -webkit-linear-gradient(bottom, #FFBA00, #FF8100);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n font-size: 24px;\n}\n\n@charset \"UTF-8\";\n.app-chinaMapBox[data-v-1f45fdc8] {\n position: relative;\n width: 100%;\n height: 100%;\n margin: 0px;\n padding: 0px;\n /*数字:738*/\n /*文字:会员总数*/\n}\n.app-chinaMapBox .mapChart[data-v-1f45fdc8] {\n position: relative;\n width: 100%;\n height: 100%;\n /*margin-top: 5%;*/\n /*margin-bottom: 5px;*/\n /*height: -webkit-calc(100% - (5% + 5px));*/\n /*height: -moz-calc(100% - (5% + 5px));*/\n /*height: calc(100% - (5% + 5px));*/\n /*top:0;left: 0;*/\n /*bottom: 0;*/\n /*right:0;*/\n /*z-index: -1;*/\n}\n.app-chinaMapBox .cellBox[data-v-1f45fdc8] {\n width: 33.333%;\n text-align: center;\n}\n.app-chinaMapBox .mapTitle[data-v-1f45fdc8] {\n position: absolute;\n top: 0;\n width: 100%;\n height: 70px;\n background-color: RGBA(0, 45, 140, 0.7);\n z-index: 5;\n}\n.app-chinaMapBox .parkTotalImg[data-v-1f45fdc8] {\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDQ1IDQ1IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0NSA0NTsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMwMkMyMDI7fQoJLnN0MXtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiMwMkMyMDI7fQo8L3N0eWxlPgo8cGF0aCBpZD0iWE1MSURfMV8iIGNsYXNzPSJzdDAiIGQ9Ik0yMi41LDNDMzMuMiwzLDQyLDExLjcsNDIsMjIuNVMzMy4yLDQyLDIyLjUsNDJTMywzMy4zLDMsMjIuNVMxMS43LDMsMjIuNSwzIE0yMi41LDAKCUMxMC4xLDAsMCwxMC4xLDAsMjIuNVMxMC4xLDQ1LDIyLjUsNDVTNDUsMzQuOSw0NSwyMi41UzM0LjksMCwyMi41LDBMMjIuNSwweiIvPgo8ZyBpZD0iWE1MSURfMl8iPgoJPGcgaWQ9IlhNTElEXzNfIj4KCQk8cGF0aCBpZD0iWE1MSURfNV8iIGNsYXNzPSJzdDAiIGQ9Ik0yNSwxNWMyLjIsMCw0LDEuOCw0LDRzLTEuOCw0LTQsNGgtN3YtOEgyNSBNMjUsMTJIMTV2MTRoMTBjMy45LDAsNy0zLjEsNy03UzI4LjksMTIsMjUsMTIKCQkJTDI1LDEyeiIvPgoJPC9nPgoJPHBhdGggaWQ9IlhNTElEXzZfIiBjbGFzcz0ic3QxIiBkPSJNMTUsMTJoM3YyM2gtM1YxMnoiLz4KPC9nPgo8L3N2Zz4K) no-repeat;\n background-size: 100% 100%;\n width: 45px;\n height: 45px;\n}\n.app-chinaMapBox .memberTotalImg[data-v-1f45fdc8] {\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDQ1IDQ1IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0NSA0NTsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiNGRkFCMDA7fQo8L3N0eWxlPgo8cGF0aCBpZD0iWE1MSURfMV8iIGNsYXNzPSJzdDAiIGQ9Ik0yMi41LDNDMzMuMywzLDQyLDExLjcsNDIsMjIuNVMzMy4zLDQyLDIyLjUsNDJTMywzMy4zLDMsMjIuNVMxMS43LDMsMjIuNSwzIE0yMi41LDAKCUMxMC4xLDAsMCwxMC4xLDAsMjIuNVMxMC4xLDQ1LDIyLjUsNDVTNDUsMzQuOSw0NSwyMi41UzM0LjksMCwyMi41LDBMMjIuNSwweiIvPgo8cGF0aCBpZD0iWE1MSURfM18iIGNsYXNzPSJzdDAiIGQ9Ik0yMi41LDE0LjFjMi43LDAsNSwyLjEsNSw0LjljMCwyLjgtMi4yLDUuMS01LDUuMWMtMi43LDAtNS0yLjMtNS01LjEKCUMxNy41LDE2LjEsMTkuNywxNC4xLDIyLjUsMTQuMSBNMjcuNSwyNC4zYzAuNCwwLDAuOSwwLjEsMS4zLDAuNmMxLjMsMS4zLDIuNCwzLjYsMi40LDMuNmwwLjgsMS40YzAsMS0xLjEsMS4xLTEuNSwxLjEKCWMtMC4xLDAtMC4xLDAtMC4xLDBIMTQuN2MwLDAsMCwwLTAuMSwwYy0wLjQsMC0xLjYtMC4xLTEuNi0xLjFsMC43LTEuNGMwLDAsMS4yLTIuMiwyLjUtMy41YzAuNC0wLjQsMC45LTAuNiwxLjQtMC42CgljMC45LDAsMiwxLjksNC42LDEuOEgyM0MyNi4yLDI2LjEsMjYuNywyNC4zLDI3LjUsMjQuMyBNMjIuNSwxMS4xYy00LjUsMC04LDMuNS04LDcuOWMwLDEuMSwwLjIsMi4xLDAuNiwzYy0wLjMsMC4yLTAuNywwLjQtMSwwLjcKCWMtMS42LDEuNi0yLjksNC0zLjEsNC4zbC0wLjcsMS40TDEwLDI5LjF2MC43YzAsMi40LDIsNC4xLDQuNiw0LjFjMC4xLDAsMC4xLDAsMC4xLDBoMTUuNWMwLjEsMCwwLjEsMCwwLjIsMGMyLjYsMCw0LjUtMS43LDQuNS00LjEKCXYtMC44bC0wLjQtMC43bC0wLjctMS4zYy0wLjMtMC41LTEuNC0yLjgtMy00LjRjLTAuMy0wLjMtMC43LTAuNi0xLjEtMC44YzAuNC0wLjksMC42LTEuOSwwLjYtM0MzMC41LDE0LjUsMjcsMTEuMSwyMi41LDExLjEKCUwyMi41LDExLjF6Ii8+Cjwvc3ZnPgo=) no-repeat;\n background-size: 100% 100%;\n width: 45px;\n height: 45px;\n}\n.app-chinaMapBox .dayTotalImg[data-v-1f45fdc8] {\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDQ1IDQ1IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0NSA0NTsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiNGRkY4MDA7fQoJLnN0MXtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOiNGRkY4MDA7fQo8L3N0eWxlPgo8cGF0aCBpZD0iWE1MSURfMV8iIGNsYXNzPSJzdDAiIGQ9Ik0yMi41LDNDMzMuMywzLDQyLDExLjcsNDIsMjIuNVMzMy4zLDQyLDIyLjUsNDJTMywzMy4zLDMsMjIuNVMxMS43LDMsMjIuNSwzIE0yMi41LDAKCUMxMC4xLDAsMCwxMC4xLDAsMjIuNVMxMC4xLDQ1LDIyLjUsNDVTNDUsMzQuOSw0NSwyMi41UzM0LjksMCwyMi41LDBMMjIuNSwweiIvPgo8ZyBpZD0iWE1MSURfMl8iPgoJPGcgaWQ9IlhNTElEXzVfIj4KCQk8ZyBpZD0iWE1MSURfNDZfIj4KCQkJPHBhdGggaWQ9IlhNTElEXzQ3XyIgY2xhc3M9InN0MSIgZD0iTTMyLDEzSDEzYy0wLjgsMC0xLjUsMC43LTEuNSwxLjVjMCwwLjgsMC43LDEuNSwxLjUsMS41aDE5YzAuOCwwLDEuNS0wLjcsMS41LTEuNQoJCQkJQzMzLjUsMTMuNywzMi44LDEzLDMyLDEzeiBNMTMsMjRoMTFjMC44LDAsMS41LTAuNywxLjUtMS41YzAtMC44LTAuNy0xLjUtMS41LTEuNUgxM2MtMC44LDAtMS41LDAuNy0xLjUsMS41CgkJCQlDMTEuNSwyMy4zLDEyLjIsMjQsMTMsMjR6IE0yOSwyOUgxM2MtMC44LDAtMS41LDAuNy0xLjUsMS41YzAsMC44LDAuNywxLjUsMS41LDEuNWgxNmMwLjgsMCwxLjUtMC43LDEuNS0xLjUKCQkJCUMzMC41LDI5LjcsMjkuOCwyOSwyOSwyOXoiLz4KCQk8L2c+Cgk8L2c+CjwvZz4KPC9zdmc+Cg==) no-repeat;\n background-size: 100% 100%;\n width: 45px;\n height: 45px;\n}\n.app-chinaMapBox .parkTotalTb[data-v-1f45fdc8] {\n display: inline-block;\n margin-top: 2px;\n}\n.app-chinaMapBox .infoBox[data-v-1f45fdc8] {\n margin-left: 5px;\n text-align: left;\n}\n.app-chinaMapBox .infoBox > div[data-v-1f45fdc8]:first-child {\n font-size: 24px;\n}\n.app-chinaMapBox .infoBox > div[data-v-1f45fdc8]:last-child {\n color: #00CFFE;\n font-size: 14px;\n}\n\n.app-weekAndDayBox[data-v-7d7e5312] {\n width: 100%;\n}\n.app-weekAndDayBox .theme-card[data-v-7d7e5312] {\n height: 100%;\n}\n.app-weekAndDayBox .lineChart[data-v-7d7e5312] {\n position: absolute;\n margin: 0 auto;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n.app-weekAndDayBox .u-uWeek[data-v-7d7e5312], .app-weekAndDayBox .u-uDay[data-v-7d7e5312] {\n height: 100%;\n}\n\n.app-uDayBox[data-v-54faaf43] {\n width: 100%;\n}\n.app-uDayBox .theme-card2[data-v-54faaf43] {\n height: 100%;\n}\n.app-uDayBox .lineChart[data-v-54faaf43] {\n position: absolute;\n margin: auto;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n.app-uDayBox .contentBox[data-v-54faaf43] {\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDMwNS42IDE1OS40IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMDUuNiAxNTkuNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfMzJfKTt9Cgkuc3Qxe2ZpbGw6IzE1N0FEQjt9Cgkuc3Qye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6dXJsKCNYTUxJRF80N18pO30KCS5zdDN7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI1hNTElEXzU0Xyk7fQoJLnN0NHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfNTVfKTt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMzJfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIuNjI1IiB5MT0iMS41IiB4Mj0iMzAzLjYyNSIgeTI9IjEuNSI+Cgk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KCTxzdG9wICBvZmZzZXQ9IjUuNDIzMTUxZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yOTE1Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjQ3NDMiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREIiLz4KCTxzdG9wICBvZmZzZXQ9IjAuOTMyNyIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yOTg3Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjk5NzIiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8cGF0aCBpZD0iWE1MSURfMjhfIiBjbGFzcz0ic3QwIiBkPSJNMi42LDFoMzAxdjFIMi42VjF6Ii8+CjxwYXRoIGlkPSJYTUxJRF8yN18iIGNsYXNzPSJzdDEiIGQ9Ik0zMDQuNiwxdjFoLTFWMUgzMDQuNiBNMzA1LjYsMGgtM3YzaDNWMEwzMDUuNiwweiIvPgo8cGF0aCBpZD0iWE1MSURfMzFfIiBjbGFzcz0ic3QxIiBkPSJNMiwxdjFIMVYxSDIgTTMsMEgwdjNoM1YwTDMsMHoiLz4KPGxpbmVhckdyYWRpZW50IGlkPSJYTUxJRF80N18iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMS41IiB5MT0iMTU3IiB4Mj0iMS41IiB5Mj0iMiI+Cgk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iMC4xNjQiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjkxNSIvPgoJPHN0b3AgIG9mZnNldD0iMC41MDY4IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjgyOTkiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjk4NyIvPgoJPHN0b3AgIG9mZnNldD0iMC44NzUzIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzM0XyIgY2xhc3M9InN0MiIgZD0iTTEsMmgxdjE1NUgxVjJ6Ii8+CjxwYXRoIGlkPSJYTUxJRF82OV8iIGNsYXNzPSJzdDEiIGQ9Ik0yLDE1Ny40djFIMXYtMUgyIE0zLDE1Ni40SDB2M2gzVjE1Ni40TDMsMTU2LjR6Ii8+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfNTRfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIuMTI1IiB5MT0iMTU3Ljg3NSIgeDI9IjMwMy4xMjUiIHkyPSIxNTcuODc1Ij4KCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iNS40MjMxNTFlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjI5MTUiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNDc0MyIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQiIvPgoJPHN0b3AgIG9mZnNldD0iMC45MzI3IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjI5ODciLz4KCTxzdG9wICBvZmZzZXQ9IjAuOTk3MiIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGlkPSJYTUxJRF83MV8iIGNsYXNzPSJzdDMiIGQ9Ik0yLjEsMTU3LjRoMzAxdjFIMi4xVjE1Ny40eiIvPgo8cGF0aCBpZD0iWE1MSURfNzNfIiBjbGFzcz0ic3QxIiBkPSJNMzA0LjYsMTU3LjR2MWgtMXYtMUgzMDQuNiBNMzA1LjYsMTU2LjRoLTN2M2gzVjE1Ni40TDMwNS42LDE1Ni40eiIvPgo8bGluZWFyR3JhZGllbnQgaWQ9IlhNTElEXzU1XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIzMDQuMTE0NiIgeTE9IjE1NyIgeDI9IjMwNC4xMTQ2IiB5Mj0iMiI+Cgk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iMC4xNjQiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjkxNSIvPgoJPHN0b3AgIG9mZnNldD0iMC41MDY4IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjgyOTkiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjk4NyIvPgoJPHN0b3AgIG9mZnNldD0iMC44NzUzIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzc1XyIgY2xhc3M9InN0NCIgZD0iTTMwMy42LDJoMXYxNTVoLTFWMnoiLz4KPC9zdmc+Cg==) no-repeat;\n background-size: 100% 100%;\n width: 100%;\n height: 100%;\n position: relative;\n}\n\n.app-uWeekBox[data-v-1ec678c6] {\n width: 100%;\n}\n.app-uWeekBox .theme-card2[data-v-1ec678c6] {\n height: 100%;\n}\n.app-uWeekBox .weekChart[data-v-1ec678c6] {\n position: absolute;\n margin: auto;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n.app-uWeekBox .contentBox[data-v-1ec678c6] {\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDMwNS42IDE1OS40IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzMDUuNiAxNTkuNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfMzJfKTt9Cgkuc3Qxe2ZpbGw6IzE1N0FEQjt9Cgkuc3Qye2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6dXJsKCNYTUxJRF80N18pO30KCS5zdDN7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI1hNTElEXzU0Xyk7fQoJLnN0NHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfNTVfKTt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfMzJfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIuNjI1IiB5MT0iMS41IiB4Mj0iMzAzLjYyNSIgeTI9IjEuNSI+Cgk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KCTxzdG9wICBvZmZzZXQ9IjUuNDIzMTUxZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yOTE1Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjQ3NDMiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREIiLz4KCTxzdG9wICBvZmZzZXQ9IjAuOTMyNyIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yOTg3Ii8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjk5NzIiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8cGF0aCBpZD0iWE1MSURfMjhfIiBjbGFzcz0ic3QwIiBkPSJNMi42LDFoMzAxdjFIMi42VjF6Ii8+CjxwYXRoIGlkPSJYTUxJRF8yN18iIGNsYXNzPSJzdDEiIGQ9Ik0zMDQuNiwxdjFoLTFWMUgzMDQuNiBNMzA1LjYsMGgtM3YzaDNWMEwzMDUuNiwweiIvPgo8cGF0aCBpZD0iWE1MSURfMzFfIiBjbGFzcz0ic3QxIiBkPSJNMiwxdjFIMVYxSDIgTTMsMEgwdjNoM1YwTDMsMHoiLz4KPGxpbmVhckdyYWRpZW50IGlkPSJYTUxJRF80N18iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMS41IiB5MT0iMTU3IiB4Mj0iMS41IiB5Mj0iMiI+Cgk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iMC4xNjQiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjkxNSIvPgoJPHN0b3AgIG9mZnNldD0iMC41MDY4IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjgyOTkiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjk4NyIvPgoJPHN0b3AgIG9mZnNldD0iMC44NzUzIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzM0XyIgY2xhc3M9InN0MiIgZD0iTTEsMmgxdjE1NUgxVjJ6Ii8+CjxwYXRoIGlkPSJYTUxJRF82OV8iIGNsYXNzPSJzdDEiIGQ9Ik0yLDE1Ny40djFIMXYtMUgyIE0zLDE1Ni40SDB2M2gzVjE1Ni40TDMsMTU2LjR6Ii8+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfNTRfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIuMTI1IiB5MT0iMTU3Ljg3NSIgeDI9IjMwMy4xMjUiIHkyPSIxNTcuODc1Ij4KCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iNS40MjMxNTFlLTAyIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjI5MTUiLz4KCTxzdG9wICBvZmZzZXQ9IjAuNDc0MyIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQiIvPgoJPHN0b3AgIG9mZnNldD0iMC45MzI3IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjI5ODciLz4KCTxzdG9wICBvZmZzZXQ9IjAuOTk3MiIgc3R5bGU9InN0b3AtY29sb3I6IzE1N0FEQjtzdG9wLW9wYWNpdHk6MC4yIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGlkPSJYTUxJRF83MV8iIGNsYXNzPSJzdDMiIGQ9Ik0yLjEsMTU3LjRoMzAxdjFIMi4xVjE1Ny40eiIvPgo8cGF0aCBpZD0iWE1MSURfNzNfIiBjbGFzcz0ic3QxIiBkPSJNMzA0LjYsMTU3LjR2MWgtMXYtMUgzMDQuNiBNMzA1LjYsMTU2LjRoLTN2M2gzVjE1Ni40TDMwNS42LDE1Ni40eiIvPgo8bGluZWFyR3JhZGllbnQgaWQ9IlhNTElEXzU1XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIzMDQuMTE0NiIgeTE9IjE1NyIgeDI9IjMwNC4xMTQ2IiB5Mj0iMiI+Cgk8c3RvcCAgb2Zmc2V0PSIwLjExOTgiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMiIvPgoJPHN0b3AgIG9mZnNldD0iMC4xNjQiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjkxNSIvPgoJPHN0b3AgIG9mZnNldD0iMC41MDY4IiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCIi8+Cgk8c3RvcCAgb2Zmc2V0PSIwLjgyOTkiIHN0eWxlPSJzdG9wLWNvbG9yOiMxNTdBREI7c3RvcC1vcGFjaXR5OjAuMjk4NyIvPgoJPHN0b3AgIG9mZnNldD0iMC44NzUzIiBzdHlsZT0ic3RvcC1jb2xvcjojMTU3QURCO3N0b3Atb3BhY2l0eTowLjIiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggaWQ9IlhNTElEXzc1XyIgY2xhc3M9InN0NCIgZD0iTTMwMy42LDJoMXYxNTVoLTFWMnoiLz4KPC9zdmc+Cg==) no-repeat;\n background-size: 100% 100%;\n width: 100%;\n height: 100%;\n position: relative;\n}\n@charset \"UTF-8\";.el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-pagination--small .arrow.disabled,.el-table .hidden-columns,.el-table td.is-hidden>*,.el-table th.is-hidden>*,.el-table--hidden{visibility:hidden}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing),.el-message__closeBtn:focus,.el-message__content:focus,.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing),.el-rate:active,.el-rate:focus,.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing),.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}@font-face{font-family:element-icons;src:url(data:application/font-woff;base64,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) format(\"woff\"),url(./static/fonts/element-icons.6f0a763.ttf) format(\"truetype\");font-weight:400;font-style:normal}[class*=\" el-icon-\"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-info:before{content:\"\\E61A\"}.el-icon-error:before{content:\"\\E62C\"}.el-icon-success:before{content:\"\\E62D\"}.el-icon-warning:before{content:\"\\E62E\"}.el-icon-question:before{content:\"\\E634\"}.el-icon-back:before{content:\"\\E606\"}.el-icon-arrow-left:before{content:\"\\E600\"}.el-icon-arrow-down:before{content:\"\\E603\"}.el-icon-arrow-right:before{content:\"\\E604\"}.el-icon-arrow-up:before{content:\"\\E605\"}.el-icon-caret-left:before{content:\"\\E60A\"}.el-icon-caret-bottom:before{content:\"\\E60B\"}.el-icon-caret-top:before{content:\"\\E60C\"}.el-icon-caret-right:before{content:\"\\E60E\"}.el-icon-d-arrow-left:before{content:\"\\E610\"}.el-icon-d-arrow-right:before{content:\"\\E613\"}.el-icon-minus:before{content:\"\\E621\"}.el-icon-plus:before{content:\"\\E62B\"}.el-icon-remove:before{content:\"\\E635\"}.el-icon-circle-plus:before{content:\"\\E601\"}.el-icon-remove-outline:before{content:\"\\E63C\"}.el-icon-circle-plus-outline:before{content:\"\\E602\"}.el-icon-close:before{content:\"\\E60F\"}.el-icon-check:before{content:\"\\E611\"}.el-icon-circle-close:before{content:\"\\E607\"}.el-icon-circle-check:before{content:\"\\E639\"}.el-icon-circle-close-outline:before{content:\"\\E609\"}.el-icon-circle-check-outline:before{content:\"\\E63E\"}.el-icon-zoom-out:before{content:\"\\E645\"}.el-icon-zoom-in:before{content:\"\\E641\"}.el-icon-d-caret:before{content:\"\\E615\"}.el-icon-sort:before{content:\"\\E640\"}.el-icon-sort-down:before{content:\"\\E630\"}.el-icon-sort-up:before{content:\"\\E631\"}.el-icon-tickets:before{content:\"\\E63F\"}.el-icon-document:before{content:\"\\E614\"}.el-icon-goods:before{content:\"\\E618\"}.el-icon-sold-out:before{content:\"\\E63B\"}.el-icon-news:before{content:\"\\E625\"}.el-icon-message:before{content:\"\\E61B\"}.el-icon-date:before{content:\"\\E608\"}.el-icon-printer:before{content:\"\\E62F\"}.el-icon-time:before{content:\"\\E642\"}.el-icon-bell:before{content:\"\\E622\"}.el-icon-mobile-phone:before{content:\"\\E624\"}.el-icon-service:before{content:\"\\E63A\"}.el-icon-view:before{content:\"\\E643\"}.el-icon-menu:before{content:\"\\E620\"}.el-icon-more:before{content:\"\\E646\"}.el-icon-more-outline:before{content:\"\\E626\"}.el-icon-star-on:before{content:\"\\E637\"}.el-icon-star-off:before{content:\"\\E63D\"}.el-icon-location:before{content:\"\\E61D\"}.el-icon-location-outline:before{content:\"\\E61F\"}.el-icon-phone:before{content:\"\\E627\"}.el-icon-phone-outline:before{content:\"\\E628\"}.el-icon-picture:before{content:\"\\E629\"}.el-icon-picture-outline:before{content:\"\\E62A\"}.el-icon-delete:before{content:\"\\E612\"}.el-icon-search:before{content:\"\\E619\"}.el-icon-edit:before{content:\"\\E61C\"}.el-icon-edit-outline:before{content:\"\\E616\"}.el-icon-rank:before{content:\"\\E632\"}.el-icon-refresh:before{content:\"\\E633\"}.el-icon-share:before{content:\"\\E636\"}.el-icon-setting:before{content:\"\\E638\"}.el-icon-upload:before{content:\"\\E60D\"}.el-icon-upload2:before{content:\"\\E644\"}.el-icon-download:before{content:\"\\E617\"}.el-icon-loading:before{content:\"\\E61E\"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination::after,.el-pagination::before{display:table;content:\"\"}.el-pagination::after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#409EFF}.el-pagination button:disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat #fff;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#c0c4cc;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .more::before,.el-pagination--small li.more::before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#409EFF}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#c0c4cc}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#409EFF}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#409EFF;color:#fff}.el-dialog,.el-pager li{background:#fff;-webkit-box-sizing:border-box}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;font-size:0}.el-radio,.el-table th{-webkit-user-select:none}.el-date-table,.el-radio,.el-table th{-moz-user-select:none;-ms-user-select:none}.el-pager .more::before{line-height:30px}.el-pager li{padding:0 4px;font-size:13px;min-width:35.5px;height:28px;line-height:28px;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center}.el-menu--collapse .el-menu .el-submenu,.el-menu--popup{min-width:200px}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#c0c4cc}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#409EFF}.el-pager li.active{color:#409EFF;cursor:default}@-webkit-keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}.el-dialog{position:relative;margin:0 auto 50px;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);-webkit-box-sizing:border-box;box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#409EFF}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px}.el-dialog__footer{padding:10px 20px 20px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #e4e7ed;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dropdown-menu,.el-menu--collapse .el-submenu .el-menu{z-index:10;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:auto;background-color:#fff}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#f5f7fa}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li::after{display:inline-block;content:\"\";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#fff}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button::before{content:'';position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:rgba(255,255,255,.5)}.el-dropdown .el-dropdown__caret-button:hover::before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown-menu{position:absolute;top:0;left:0;padding:10px 0;margin:5px 0;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#606266;cursor:pointer;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ecf5ff;color:#66b1ff}.el-dropdown-menu__item--divided:before,.el-menu,.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #ebeef5}.el-dropdown-menu__item--divided:before{content:'';height:6px;display:block;margin:0 -20px}.el-menu::after,.el-menu::before,.el-radio__inner::after,.el-switch__core:after{content:\"\"}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:solid 1px #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0}.el-menu::after,.el-menu::before{display:table}.el-menu::after{clear:both}.el-menu.el-menu--horizontal{border-bottom:solid 1px #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #409EFF;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #409EFF;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;border:1px solid #e4e7ed;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;position:relative;-webkit-box-sizing:border-box;white-space:nowrap;list-style:none}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;-ms-transform:none;transform:none}.el-menu--popup{z-index:100;border:none;padding:5px 0;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;-o-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#ecf5ff}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#409EFF}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;-o-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#ecf5ff}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#ecf5ff}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;-o-transition:transform .3s;transition:transform .3s;transition:transform .3s, -webkit-transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-submenu.is-active .el-submenu__title{border-bottom-color:#409EFF}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotateZ(180deg);-ms-transform:rotate(180deg);transform:rotateZ(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio,.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;-o-transition:.2s;transition:.2s;opacity:0}.el-radio{color:#606266;font-weight:500;line-height:1;cursor:pointer;white-space:nowrap;outline:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#409EFF}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio+.el-radio{margin-left:30px}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#409EFF;background:#409EFF}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);-ms-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#409EFF}.el-radio__input.is-focus .el-radio__inner{border-color:#409EFF}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio-button__inner,.el-switch__core{-webkit-box-sizing:border-box;vertical-align:middle}.el-radio__inner:hover{border-color:#409EFF}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#fff;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);-ms-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;-o-transition:transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in, -webkit-transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio-button,.el-radio-button__inner{display:inline-block;position:relative;outline:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #409EFF;box-shadow:0 0 2px 2px #409EFF}.el-radio__label{font-size:14px;padding-left:10px}.el-radio-group{display:inline-block;line-height:1;vertical-align:middle;font-size:0}.el-radio-button__inner{line-height:1;white-space:nowrap;background:#fff;border:1px solid #dcdfe6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);-o-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#409EFF}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#409EFF;border-color:#409EFF;-webkit-box-shadow:-1px 0 0 0 #409EFF;box-shadow:-1px 0 0 0 #409EFF}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#f2f6fc}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-popover,.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){-webkit-box-shadow:0 0 2px 2px #409EFF;box-shadow:0 0 2px 2px #409EFF}.el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{-webkit-transition:.2s;-o-transition:.2s;transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#409EFF}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #dcdfe6;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#dcdfe6;-webkit-transition:border-color .3s,background-color .3s;-o-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s}.el-switch__core:after{position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#fff}.el-switch.is-checked .el-switch__core{border-color:#409EFF;background-color:#409EFF}.el-switch.is-checked .el-switch__core::after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #e4e7ed;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#409EFF;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:\"\\E611\";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#f5f7fa}.el-select-dropdown__item.selected{color:#409EFF;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e4e7ed}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#c0c4cc}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#409EFF}.el-select .el-input .el-select__caret{color:#c0c4cc;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;-o-transition:transform .3s;transition:transform .3s;transition:transform .3s, -webkit-transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);-ms-transform:rotate(180deg);transform:rotateZ(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);-ms-transform:rotate(0);transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);-ms-transform:rotate(180deg);transform:rotateZ(180deg);border-radius:100%;color:#c0c4cc;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);-o-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#e4e7ed}.el-select .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#c0c4cc;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select .el-tag__close{margin-top:-2px}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5}.el-select .el-tag__close.el-icon-close{background-color:#c0c4cc;right:-7px;top:0;color:#fff}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#fff}.el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);-ms-transform:translate(0,.5px);transform:translate(0,.5px)}.el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table--mini,.el-table--small,.el-table__expand-icon{font-size:12px}.el-table__empty-block{min-height:60px;text-align:center;width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;-o-transition:transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out, -webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit td.gutter,.el-table--fit th.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th{background:#f5f7fa}.el-table th,.el-table tr{background-color:#fff}.el-table td,.el-table th{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;-o-text-overflow:ellipsis;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table th div,.el-table th>.cell{-webkit-box-sizing:border-box;display:inline-block}.el-table td.is-center,.el-table th.is-center{text-align:center}.el-table td.is-right,.el-table th.is-right{text-align:right}.el-table td.gutter,.el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table--medium td,.el-table--medium th{padding:10px 0}.el-table--small td,.el-table--small th{padding:8px 0}.el-table--mini td,.el-table--mini th{padding:6px 0}.el-table .cell,.el-table th div{padding-right:10px;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis}.el-table .cell,.el-table th div,.el-table--border td:first-child .cell,.el-table--border th:first-child .cell{padding-left:10px}.el-table tr input[type=checkbox]{margin:0}.el-table td,.el-table th.is-leaf{border-bottom:1px solid #ebeef5}.el-table th.is-sortable{cursor:pointer}.el-table th{white-space:nowrap;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-table th div{line-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-table th>.cell{position:relative;word-wrap:normal;-o-text-overflow:ellipsis;text-overflow:ellipsis;vertical-align:middle;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-table th>.cell.highlight{color:#409EFF}.el-table th.required>div::before{display:inline-block;content:\"\";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-table td.gutter{width:0}.el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;white-space:normal;word-break:break-all;line-height:23px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #ebeef5}.el-table--border::after,.el-table--group::after,.el-table::before{content:'';position:absolute;background-color:#ebeef5;z-index:1}.el-table--border::after,.el-table--group::after{top:0;right:0;width:1px;height:100%}.el-table::before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border td,.el-table--border th,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #ebeef5}.el-table--border th.gutter:last-of-type{border-bottom:1px solid #ebeef5;border-bottom-width:1px}.el-table--border th,.el-table__fixed-right-patch{border-bottom:1px solid #ebeef5}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right::before,.el-table__fixed::before{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#ebeef5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#fff}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td{border-top:1px solid #ebeef5;background-color:#f5f7fa;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td{border-top:1px solid #ebeef5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td,.el-table__header-wrapper tbody td{background-color:#f5f7fa;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-picker-panel,.el-table-filter{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #ebeef5}.el-table .caret-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#c0c4cc;top:5px}.el-table .sort-caret.descending{border-top-color:#c0c4cc;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#409EFF}.el-table .descending .sort-caret.descending{border-top-color:#409EFF}.el-table .hidden-columns{position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td{background:#FAFAFA}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td,.el-table__body tr.current-row>td,.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{background-color:#ecf5ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #ebeef5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;-webkit-transform:scale(.75);-ms-transform:scale(.75);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td{-webkit-transition:background-color .25s ease;-o-transition:background-color .25s ease;transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#f5f7fa}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #ebeef5;border-radius:2px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ecf5ff;color:#66b1ff}.el-table-filter__list-item.is-active{background-color:#409EFF;color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #ebeef5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table td.in-range div,.el-date-table td.in-range div:hover,.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div{background-color:#f2f6fc}.el-table-filter__bottom button:hover{color:#409EFF}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-slider__button-wrapper,.el-time-panel{-moz-user-select:none;-ms-user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;height:30px;padding:4px 0;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{height:30px;padding:3px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.el-month-table td .cell,.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px}.el-date-table td.next-month,.el-date-table td.prev-month{color:#c0c4cc}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#409EFF;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#fff}.el-date-table td.available:hover{color:#409EFF}.el-date-table td.current:not(.disabled) span{color:#fff;background-color:#409EFF}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#fff}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#409EFF}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#f5f7fa;opacity:1;cursor:not-allowed;color:#c0c4cc}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#f2f6fc;border-radius:15px}.el-date-table td.selected div:hover{background-color:#f2f6fc}.el-date-table td.selected span{background-color:#409EFF;color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:solid 1px #ebeef5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-month-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-month-table td.disabled .cell:hover{color:#c0c4cc}.el-month-table td .cell{color:#606266;margin:0 auto}.el-month-table td .cell:hover,.el-month-table td.current:not(.disabled) .cell{color:#409EFF}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-year-table td.disabled .cell:hover{color:#c0c4cc}.el-year-table td .cell{color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#409EFF}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content.is-right .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #ebeef5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#409EFF}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#409EFF;font-weight:700}.time-select-item.disabled{color:#e4e7ed;cursor:not-allowed}.time-select-item:hover{background-color:#f5f7fa;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input,.el-date-editor .el-range-separator{height:100%;margin:0;text-align:center;display:inline-block;font-size:14px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;padding:0;width:39%;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input:-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{padding:0 5px;line-height:32px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active,.el-range-editor.is-active:hover{border-color:#409EFF}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e4e7ed}.el-range-editor.is-disabled input{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input:-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e4e7ed;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-popover,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:\"\";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#409EFF}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#409EFF}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#409EFF}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);-ms-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#409EFF}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list::after,.el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#c0c4cc;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #e4e7ed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:content-box;box-sizing:content-box}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:\"\";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #e4e7ed;border-bottom:1px solid #e4e7ed}.el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#409EFF}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #e4e7ed}.el-popover{position:absolute;background:#fff;min-width:150px;border:1px solid #ebeef5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#fff;border-radius:4px;border:1px solid #ebeef5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper::after{content:\"\";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#f56c6c}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#409EFF}.el-message-box__content{position:relative;padding:10px 15px;color:#606266;font-size:14px}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.el-message-box__status::before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67c23a}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#e6a23c}.el-message-box__status.el-icon-error{color:#f56c6c}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#f56c6c;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);-ms-transform:translateY(-1px);transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:\"\"}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#c0c4cc}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);-o-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#409EFF;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form-item__content .el-input-group,.el-form-item__label,.el-tag .el-icon-close{vertical-align:middle}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item::after,.el-form-item::before{display:table;content:\"\"}.el-form-item::after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label{text-align:right;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content::after,.el-form-item__content::before{display:table;content:\"\"}.el-form-item__content::after{clear:both}.el-form-item__error{color:#f56c6c;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:'*';color:#f56c6c;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#f56c6c}.el-form-item.is-success .el-input__inner,.el-form-item.is-success .el-input__inner:focus,.el-form-item.is-success .el-textarea__inner,.el-form-item.is-success .el-textarea__inner:focus{border-color:#67c23a}.el-form-item.is-success .el-input-group__append .el-input__inner,.el-form-item.is-success .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-success .el-input__validateIcon{color:#67c23a}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#409EFF;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);-o-transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1), -webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;-o-transition:all .15s;transition:all .15s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8,.8);-ms-transform:scale(.8,.8);transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#409EFF}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap::after{content:\"\";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#e4e7ed;z-index:1}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap::after,.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;-o-transition:transform .3s;transition:transform .3s;transition:transform .3s, -webkit-transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){-webkit-box-shadow:0 0 2px 2px #409eff inset;box-shadow:0 0 2px 2px #409eff inset;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);-o-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);-ms-transform:scale(.9);transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#c0c4cc;color:#fff}.el-tabs__item.is-active{color:#409EFF}.el-tabs__item:hover{color:#409EFF;cursor:pointer}.el-tabs__item.is-disabled{color:#c0c4cc;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #e4e7ed}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #e4e7ed;border-bottom:none;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-alert,.el-tag{-webkit-box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;-ms-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #e4e7ed;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);-o-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--border-card{background:#fff;border:1px solid #dcdfe6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);-o-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin:-1px -1px 0;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#409EFF;background-color:#fff;border-right-color:#dcdfe6;border-left-color:#dcdfe6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#409EFF}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#c0c4cc}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom .el-tabs--left .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card .el-tabs__item:last-child,.el-tabs--top .el-tabs--left .el-tabs__item:last-child,.el-tabs--top .el-tabs--right .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card .el-tabs__item:last-child,.el-tabs--top.el-tabs--card .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #dcdfe6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{-webkit-transform:rotateZ(90deg);-ms-transform:rotate(90deg);transform:rotateZ(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left::after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left::after,.el-tabs--left .el-tabs__nav-wrap.is-right::after,.el-tabs--right .el-tabs__nav-wrap.is-left::after,.el-tabs--right .el-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #e4e7ed;border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #e4e7ed;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #e4e7ed;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #e4e7ed;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right::after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tag,.slideInLeft-transition,.slideInRight-transition{display:inline-block}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #e4e7ed;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #e4e7ed;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #e4e7ed;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.el-tag{background-color:rgba(64,158,255,.1);padding:0 10px;height:32px;line-height:30px;font-size:12px;color:#409EFF;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid rgba(64,158,255,.2);white-space:nowrap}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;top:-1px;right:-5px;color:#409EFF}.el-tag .el-icon-close::before{display:block}.el-tag .el-icon-close:hover{background-color:#409EFF;color:#fff}.el-tag--info,.el-tag--info .el-tag__close{color:#909399}.el-tag--info{background-color:rgba(144,147,153,.1);border-color:rgba(144,147,153,.2)}.el-tag--info.is-hit{border-color:#909399}.el-tag--info .el-tag__close:hover{background-color:#909399;color:#fff}.el-tag--success{background-color:rgba(103,194,58,.1);border-color:rgba(103,194,58,.2);color:#67c23a}.el-tag--success.is-hit{border-color:#67c23a}.el-tag--success .el-tag__close{color:#67c23a}.el-tag--success .el-tag__close:hover{background-color:#67c23a;color:#fff}.el-tag--warning{background-color:rgba(230,162,60,.1);border-color:rgba(230,162,60,.2);color:#e6a23c}.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--warning .el-tag__close:hover{background-color:#e6a23c;color:#fff}.el-tag--danger{background-color:rgba(245,108,108,.1);border-color:rgba(245,108,108,.2);color:#f56c6c}.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--danger .el-tag__close:hover{background-color:#f56c6c;color:#fff}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}.el-tree{position:relative;cursor:default;background:#fff;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#6f7180}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#409EFF}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#f5f7fa}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#409EFF;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#f5f7fa}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#c0c4cc;font-size:12px;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;-o-transition:transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out, -webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#c0c4cc}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success{background-color:#f0f9eb;color:#67c23a}.el-alert--success .el-alert__description{color:#67c23a}.el-alert--info{background-color:#f4f4f5;color:#909399}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning{background-color:#fdf6ec;color:#e6a23c}.el-alert--warning .el-alert__description{color:#e6a23c}.el-alert--error{background-color:#fef0f0;color:#f56c6c}.el-alert--error .el-alert__description{color:#f56c6c}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;color:#c0c4cc;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active{opacity:0}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;-o-transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67c23a}.el-notification .el-icon-error{color:#f56c6c}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#e6a23c}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#409EFF}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#409EFF}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #dcdfe6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #dcdfe6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#e4e7ed;color:#e4e7ed}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#e4e7ed;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);-ms-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);-ms-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #dcdfe6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #dcdfe6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:\" \";border-width:5px}.el-progress-bar__inner::after,.el-row::after,.el-row::before,.el-slider::after,.el-slider::before,.el-slider__button-wrapper::after,.el-upload-cover::after{content:\"\"}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}.el-slider::after,.el-slider::before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper::after{vertical-align:middle;display:inline-block}.el-slider::after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#e4e7ed;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button{border-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);cursor:not-allowed}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#409EFF;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;position:absolute;z-index:1001;top:-15px;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:normal}.el-slider__button,.el-step__icon-inner{-moz-user-select:none;-ms-user-select:none}.el-slider__button-wrapper::after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #409EFF;background-color:#fff;border-radius:50%;-webkit-transition:.2s;-o-transition:.2s;transition:.2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-button,.el-checkbox,.el-step__icon-inner{-webkit-user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{position:absolute;height:6px;width:6px;border-radius:100%;background-color:#fff;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #dcdfe6;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);-o-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#c0c4cc}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#409EFF}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-10,.el-col-pull-11,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-2,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-push-0,.el-col-push-1,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-2,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-row{position:relative}.el-loading-spinner .el-loading-text{color:#409EFF;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409EFF;stroke-linecap:round}.el-loading-spinner i{color:#409EFF}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{-webkit-box-sizing:border-box;box-sizing:border-box}.el-row::after,.el-row::before{display:table}.el-row::after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-upload--picture-card,.el-upload-dragger{-webkit-box-sizing:border-box;cursor:pointer}.el-col-0{width:0}.el-col-offset-0{margin-left:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#409EFF;color:#409EFF}.el-upload:focus .el-upload-dragger{border-color:#409EFF}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:360px;height:180px;text-align:center;position:relative;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#c0c4cc;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #dcdfe6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#409EFF;font-style:normal}.el-upload-dragger:hover{border-color:#409EFF}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #409EFF}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);-o-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67c23a}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#409EFF}.el-upload-list__item:hover{background-color:#f5f7fa}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#409EFF;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;-o-text-overflow:ellipsis;text-overflow:ellipsis;-webkit-transition:color .3s;-o-transition:color .3s;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#409EFF}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;-o-transition:opacity .3s;transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions::after{display:inline-block;content:\"\";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover::after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-o-transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);-ms-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle{display:inline-block}.el-progress--circle .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);-ms-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__inner::after,.el-progress-bar__innerText,.el-spinner{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67c23a}.el-progress.is-success .el-progress__text{color:#67c23a}.el-progress.is-exception .el-progress-bar__inner{background-color:#f56c6c}.el-progress.is-exception .el-progress__text{color:#f56c6c}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#409EFF;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.el-card,.el-message{border-radius:4px;overflow:hidden}.el-progress-bar__inner::after{height:100%}.el-progress-bar__innerText{color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-width:1px;border-style:solid;border-color:#ebeef5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,-webkit-transform .4s;transition:opacity .3s,-webkit-transform .4s;-o-transition:opacity .3s,transform .4s;transition:opacity .3s,transform .4s;transition:opacity .3s,transform .4s,-webkit-transform .4s;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67c23a}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#e6a23c}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#f56c6c}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#c0c4cc;font-size:16px}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67c23a}.el-message .el-icon-error{color:#f56c6c}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#e6a23c}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);-ms-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#f56c6c;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);-ms-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#409EFF}.el-badge__content--success{background-color:#67c23a}.el-badge__content--warning{background-color:#e6a23c}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#f56c6c}.el-card{border:1px solid #ebeef5;background-color:#fff;color:#303133;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#c0c4cc;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-webkit-transform:scale(1.15);-ms-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-webkit-box;display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:-webkit-box;display:-ms-flexbox;display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#f5f7fa}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#c0c4cc;border-color:#c0c4cc}.el-step__head.is-success{color:#67c23a;border-color:#67c23a}.el-step__head.is-error{color:#f56c6c;border-color:#f56c6c}.el-step__head.is-finish{color:#409EFF;border-color:#409EFF}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;-webkit-transition:.15s ease-out;-o-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-button,.el-checkbox{-moz-user-select:none;-ms-user-select:none}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#c0c4cc}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;-o-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#c0c4cc}.el-step__title.is-success{color:#67c23a}.el-step__title.is-error{color:#f56c6c}.el-step__title.is-finish{color:#409EFF}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#c0c4cc}.el-step__description.is-success{color:#67c23a}.el-step__description.is-error{color:#f56c6c}.el-step__description.is-finish{color:#409EFF}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:-webkit-box;display:-ms-flexbox;display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);-ms-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow::after,.el-step.is-simple .el-step__arrow::before{content:'';display:inline-block;position:absolute;height:15px;width:1px;background:#c0c4cc}.el-step.is-simple .el-step__arrow::before{-webkit-transform:rotate(-45deg) translateY(-4px);-ms-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);-ms-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;-ms-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{overflow-x:hidden;position:relative}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;-o-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;bottom:0;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);margin:0;padding:0;z-index:2}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;-ms-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#c0c4cc;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;-ms-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{display:inline-block;background-color:transparent;padding:12px 4px;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;-o-transition:.3s;transition:.3s}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);-ms-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);-ms-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;-o-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;-o-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-carousel__mask,.el-cascader-menu,.el-cascader-menu__item.is-disabled:hover,.el-collapse-item__header,.el-collapse-item__wrap{background-color:#fff}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;-o-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-carousel__item,.el-carousel__mask{height:100%;top:0;left:0;position:absolute}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;-o-transition:transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out, -webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;-o-transition:transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out, -webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;opacity:.24;-webkit-transition:.2s;-o-transition:.2s;transition:.2s}.el-fade-in-enter,.el-fade-in-leave-active,.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);-o-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);-o-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-o-transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center top;-ms-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);-ms-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-o-transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);-ms-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-o-transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);-ms-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;-o-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;-o-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;-o-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);-o-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #ebeef5;border-bottom:1px solid #ebeef5}.el-collapse-item__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;color:#303133;cursor:pointer;border-bottom:1px solid #ebeef5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;-o-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;-o-transition:transform .3s;transition:transform .3s;transition:transform .3s, -webkit-transform .3s;transition:transform .3s,-webkit-transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#409EFF}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #ebeef5}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:\" \";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader .el-input,.el-cascader .el-input__inner{cursor:pointer}.el-cascader .el-input.is-focus .el-input__inner{border-color:#409EFF}.el-cascader .el-input__icon{-webkit-transition:none;-o-transition:none;transition:none}.el-cascader .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;-o-transition:transform .3s;transition:transform .3s;transition:transform .3s, -webkit-transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-icon-arrow-down.is-reverse{-webkit-transform:rotateZ(180deg);-ms-transform:rotate(180deg);transform:rotateZ(180deg)}.el-cascader .el-icon-circle-close{z-index:2;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);-o-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-cascader .el-icon-circle-close:hover{color:#909399}.el-cascader__clearIcon{z-index:2;position:relative}.el-cascader__label{position:absolute;left:0;top:0;height:100%;padding:0 25px 0 15px;color:#606266;width:100%;white-space:nowrap;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;text-align:left;font-size:inherit}.el-cascader__label span{color:#000}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#c0c4cc}.el-cascader-menus{white-space:nowrap;background:#fff;position:absolute;margin:5px 0;z-index:2;border:1px solid #e4e7ed;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader-menu{display:inline-block;vertical-align:top;height:204px;overflow:auto;border-right:solid 1px #e4e7ed;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:6px 0;min-width:160px}.el-cascader-menu:last-child{border-right:0}.el-cascader-menu__item{font-size:14px;padding:8px 20px;position:relative;white-space:nowrap;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;color:#606266;height:34px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;outline:0}.el-cascader-menu__item--extensible:after{font-family:element-icons;content:\"\\E604\";font-size:14px;color:#bfcbd9;position:absolute;right:15px}.el-cascader-menu__item.is-disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-cascader-menu__item.is-active{color:#409EFF}.el-cascader-menu__item:focus:not(:active),.el-cascader-menu__item:hover{background-color:#f5f7fa}.el-cascader-menu__item.selected{color:#fff;background-color:#f5f7fa}.el-cascader-menu__item__keyword{font-weight:700}.el-cascader-menu--flexible{height:auto;max-height:180px;overflow:auto}.el-cascader-menu--flexible .el-cascader-menu__item{overflow:visible}.el-color-predefine{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #409EFF;box-shadow:0 0 3px 2px #409EFF}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:-webkit-gradient(linear,left top, right top,color-stop(0, red),color-stop(17%, #ff0),color-stop(33%, #0f0),color-stop(50%, #0ff),color-stop(67%, #00f),color-stop(83%, #f0f),to(red));background:-webkit-linear-gradient(left,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);background:-o-linear-gradient(left,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:-webkit-gradient(linear,left top, left bottom,color-stop(0, red),color-stop(17%, #ff0),color-stop(33%, #0f0),color-stop(50%, #0ff),color-stop(67%, #00f),color-stop(83%, #f0f),to(red));background:-webkit-linear-gradient(top,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);background:-o-linear-gradient(top,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(rgba(255,255,255,0)));background:-webkit-gradient(linear,left top, right top,from(#fff),to(rgba(255,255,255,0)));background:-webkit-linear-gradient(left,#fff,rgba(255,255,255,0));background:-o-linear-gradient(left,#fff,rgba(255,255,255,0));background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(transparent));background:-webkit-gradient(linear,left bottom, left top,from(#000),to(transparent));background:-webkit-linear-gradient(bottom,#000,transparent);background:-o-linear-gradient(bottom,#000,transparent);background:linear-gradient(to top,#000,transparent)}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);-ms-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(white));background:-webkit-gradient(linear,left top, right top,color-stop(0, rgba(255,255,255,0)),to(#fff));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,#fff 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,#fff 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,0)),to(white));background:-webkit-gradient(linear,left top, left bottom,color-stop(0, rgba(255,255,255,0)),to(#fff));background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0,#fff 100%);background:-o-linear-gradient(top,rgba(255,255,255,0) 0,#fff 100%);background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{content:\"\";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#409EFF;border-color:#409EFF}.el-color-dropdown__link-btn{cursor:pointer;color:#409EFF;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#409EFF,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.el-color-picker__trigger{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty,.el-color-picker__icon{top:50%;left:50%;font-size:12px;position:absolute}.el-color-picker__empty{color:#999;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;width:100%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);color:#fff;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-textarea{display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);-o-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner:-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#409EFF}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-button-group>.el-button.is-active,.el-button-group>.el-button.is-disabled,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;line-height:16px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);-o-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);-o-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__prefix,.el-input__suffix{position:absolute;top:0;-webkit-transition:all .3s;height:100%;color:#c0c4cc;text-align:center}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner:-ms-input-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#409EFF;outline:0}.el-input__suffix{right:5px;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{left:5px;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;-o-transition:.1s;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button:focus,.el-button:hover{color:#409EFF;border-color:#c6e2ff;background-color:#ecf5ff}.el-button:active{color:#3a8ee6;border-color:#3a8ee6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#409EFF;color:#409EFF}.el-button.is-active,.el-button.is-plain:active{color:#3a8ee6;border-color:#3a8ee6}.el-button.is-plain:active{background:#fff;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#409EFF;border-color:#409EFF}.el-button--primary:focus,.el-button--primary:hover{background:#66b1ff;border-color:#66b1ff;color:#fff}.el-button--primary.is-active,.el-button--primary:active{background:#3a8ee6;border-color:#3a8ee6;color:#fff}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#a0cfff;border-color:#a0cfff}.el-button--primary.is-plain{color:#409EFF;background:#ecf5ff;border-color:#b3d8ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#409EFF;border-color:#409EFF;color:#fff}.el-button--primary.is-plain:active{background:#3a8ee6;border-color:#3a8ee6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8cc5ff;background-color:#ecf5ff;border-color:#d9ecff}.el-button--success{color:#fff;background-color:#67c23a;border-color:#67c23a}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#fff}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#fff}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67c23a;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67c23a;border-color:#67c23a;color:#fff}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--text,.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--mini,.el-button--small{font-size:12px;border-radius:3px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small,.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{color:#409EFF;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#66b1ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3a8ee6;background-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:\"\"}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-checkbox{color:#606266;font-weight:500;font-size:14px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#409EFF}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#409EFF;border-color:#409EFF}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);-ms-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#409EFF}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#409EFF}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);-o-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#409EFF}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:\"\";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);-ms-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;-o-transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s, -webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{position:relative;display:inline-block}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox+.el-checkbox{margin-left:30px}.el-checkbox-button__inner{line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);-o-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#409EFF}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#409EFF;border-color:#409EFF;-webkit-box-shadow:-1px 0 0 0 #8cc5ff;box-shadow:-1px 0 0 0 #8cc5ff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#409EFF}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#409EFF}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#fff;background-color:#409EFF;font-size:0}.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #dcdfe6;background-color:#f5f7fa;color:#c0c4cc}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer-panel{border:1px solid #ebeef5;border-radius:4px;overflow:hidden;background:#fff;display:inline-block;vertical-align:middle;width:200px;max-height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#409EFF}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#f5f7fa;margin:0;padding-left:15px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.el-container,.el-header{-webkit-box-sizing:border-box}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#fff;margin:0;padding:0;border-top:1px solid #ebeef5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer::after{display:inline-block;content:\"\";height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.el-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:0}.el-container.is-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.el-header{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside,.el-main{overflow:auto;-webkit-box-sizing:border-box}.el-aside{-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-main{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;padding:20px}.el-footer{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}/**\n * @author songcxa\n * @date 2018/8/18\n * @Description:\n*/\n*{\n margin: 0;\n padding: 0;\n}\n/*html{*/\n /*!*因为100%=16px,1px=6.25%,所以10px=62.5%,这是的1rem=10px,所以12px=1.2rem。px与rem的转换通过10就可以得来*!*/\n /*font-size:62.5%;*/\n/*}*/\n/*body{*/\n /*!*为了兼容IE的低级版本还要写font-size:12px,别忘了要写在rem的前面*!*/\n /*font-size:12px;font-size:1.2rem ;*/\n/*}*/\n\n/*1 html{font-size:62.5%;} */\n /*因为100%=16px,1px=6.25%,所以10px=62.5%,*/\n/*这是的1rem=10px,所以12px=1.2rem。px与rem的转换通过10就可以得来*!*/\n/*!*2 body{font-size:12px;font-size:1.2rem ;}*!*/\n/*!*为了兼容IE的低级版本还要写font-size:12px,别忘了要写在rem的前面*!*/\n/*!*3 p{font-size:14px;font-size:1.4rem;}*!*/\n\nhtml, body{\n height: 100%;width: 99.99%;\n font-family: \"Microsoft YaHei\";\n background-color: #052675;\n\n user-select: none;\n -webkit-user-select: none;\n -ms-user-select: none;\n -o-user-select: none;\n -moz-user-select: none;\n}\nbody{\n background: url(../images/bg.1d62dca.jpg) no-repeat;\n background-size: 100% 100%;\n overflow: hidden;\n /*background-size:100% 100%;*/\n /*默认颜色*/\n color:#FFFFFF;\n}\n\n/*\n*自定义字体\n*/\n@font-face {\n font-family: 'display-free';\n src: url(data:application/font-woff;base64,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) format('woff'), \n url(./static/fonts/display-free.f07da7a.ttf) format('truetype') /* Safari, Android, iOS */\n}\n\n/*\n*卡片样式1\n*/\n.theme-card {\n /*-webkit-box-shadow:inset 0 0 10px #295b7c;*/\n /*-moz-box-shadow:inset 0 0 10px #295b7c;*/\n /*box-shadow:inset 0 0 10px #295b7c;*/\n position: relative;\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgd2lkdGg9IjMzMyIgaGVpZ2h0PSIyMTkiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMzMuMSAyMTkuNyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzMzLjEgMjE5Ljc7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDpub25lO3N0cm9rZTojMjM5MUZBO3N0cm9rZS1taXRlcmxpbWl0OjEwO30KCS5zdDF7b3BhY2l0eTowLjg7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojMjM5MUZBO30KCS5zdDJ7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojMjM5MUZBO30KPC9zdHlsZT4KPHBhdGggaWQ9IlhNTElEXzExXyIgY2xhc3M9InN0MCIgZD0iTTAuNiwwLjVoMzE2bDE2LDE2djE4Ny4ybC0xNS44LDE1LjVIMTYuNmwtMTYtMTUuMVYwLjV6Ii8+CjxwYXRoIGlkPSJYTUxJRF8yXyIgY2xhc3M9InN0MSIgZD0iTTMzMi42LDIwNy4ydjNsLTksOWgtM0wzMzIuNiwyMDcuMnoiLz4KPHBhdGggaWQ9IlhNTElEXzFfIiBjbGFzcz0ic3QyIiBkPSJNMzMwLjgsMS45aC04bDgsOCIvPgo8cGF0aCBpZD0iWE1MSURfOV8iIGNsYXNzPSJzdDIiIGQ9Ik0wLjYsMC41aDR2NGgtNFYwLjV6Ii8+Cjwvc3ZnPgo=) no-repeat;\n background-size: 100% 100%;\n}\n.theme-card > .title,.theme-card2> .title{\n color: #FFFFFF;\n font-size: 14px;\n /*font-size:1.4rem ;*/\n height: 30px;\n line-height:30px;\n width: 100%;\n text-align: left;\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAS8AAAAeCAYAAAB9j5hkAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzU4NzBBMzJEMDI3MTFFODhGREFFNUE0QTAxNTEwQjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzU4NzBBMzNEMDI3MTFFODhGREFFNUE0QTAxNTEwQjgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDozNTg3MEEzMEQwMjcxMUU4OEZEQUU1QTRBMDE1MTBCOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDozNTg3MEEzMUQwMjcxMUU4OEZEQUU1QTRBMDE1MTBCOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhYTL8EAAAUpSURBVHja7J1djqQwDIRTrbnRvu9B95Z7Au/TrDQtgqtsJ4Q0SC1oCCG/X8omAH7/+fur3X8x4ZgdbB+t38OdhVGPtcC2kg/1eCZ9mWNq3THtAIHzVm/TlXn6LqNo+Y5I03ucYAJ/bVLJIDuGBTqGifssEIeR8bBh7K1cjMyjieWWAVPlORngVQyWOABDKwaOByLlmhVlaAPLlYp7B3hBDGvC/izcouomo36MyJMF4cPCn1ViM4A0G2Y2MO4Vy8Y6iulI4fX+ezDGzsqLhZUlG0hELdkF+Y+ahxYEkKrYsjCbCabZbXbV+COWgPpfag87KS8rqkArquQKaCggUJVT5chtAzrC6rCyC687yq93q8FgZ+WFFldasyoYLefbUtLJQjPi78qMxiN9LLZp+1aV6cybGOa4Zx54FUKjChDVgBnViS1QNhGztAJclYpuVTAhARwTwlVBFMR1K0QDOmXx39LaGV5qhY0cnTJOalWZ2aA0zbwDtSu0rKij24S8W6JdVl//cHtneLEjAzud4Kr0o91PsViy414JrNVBaMVx3XZe3C4O+xVUFgoaA2OyjYJGVr2dTWC0xeBxp86abVO2UVn8WF4faB5652NAeiJxVjk3I5Mm389RJ9EyebliisQztWKdfKTNz6+NCqNKYSlxogM/Izu0LVSGanoUh60VxFkFLlu4LVfPzp81YVZpO2cA854WwCeZjZHOWA2V93gjwMtAchQ4R/irVp/aMrq8VgQWE++sGzU/AH93s3GWeoFo1oE4/h4HnHghpBODGrMNLE8Tw882v1c1+0bDarWbWd/psR18XqMgdAaYHqhAxKGkEx3zTgVpSx5ny6K6bu4KMHv7jQDKEWCsMN0rm9hbKK9Mw0QiPKOcPNCp6UAiD0gCwgTYNyKPNhEy1vaaaW9tDTX5wOtigEU7eUWcEICngDRjOjKQsoJy373zjc7fCCDfDvCvD2hEFeZGVHUhEJ96TbUcRvnbVPWFC+pzpsl4J0V3S2W6C7yyd0JYKGTMRQWSVdDMzi/rXavK93VmWmduiETqdmX1sss8rwdeyQ4SBRWjftBROj3lA0KdsR0Vwvk4UWTsdoX6YuvgagW+kzLcBoqf4POKzCpXgAIBAh5QPFAq0Omd7yk4VSWqAwTETo9BgDn6zWiPFWl+lrbX40FK40eiozGqzps+oZiHirpTTD9G9Si+sCzAIjCo7tArA+xZNoQXyEYe8b2wa09twQEXHKidmZpwVIViZrKqjFGBDMCYfSyoqkBWDbBHMT3wStvwlQ5eBmBonH+LARULNwZ4yhQNxR/WBJizEMsMRiOmvVTCLNO2q2CIB173V2yt8b4qBWC99Suo0Jh1JgyIfHgKslp1MUqLGWQQhMxIv5ga54hHdvDAa23VVVFxip+INfc8hcaqqIjpyexrJKA8kxJOGXidGkL5jzbjRjr4FR8k7g6f7LLTm1SZj1l4b2fwto/WvWt4358z4hpn+WDiBVEWENNujXi/eDv+Rp/3/b6zj7kedXLrACByhzkyAEa/PM0AzILQ2/29/1vCy6t4JCF49mobBIDgQamRwDw7n4UbC2LvXGYQaI37CGnvMSR1f0vATIXICjDApDw/8FqkctH57+3HCWRaJ1zrHFNHSw9UR69iBqFIWeXYHIiBUIpn0KoEFvOcpmqKsg+XX/nOtQo/mD3wWs+EVBVXOwESxM7dSLMMTTNF2WMZSLLKjc2npxKboChVBZIBDdvBGcU9AmJVJm0VjMuXfwIMALBGTzZ6XBZLAAAAAElFTkSuQmCC) no-repeat;\n background-size: 100% 100%;\n position: relative;\n}\n.theme-card > .title >span,.theme-card2 > .title >span{\n margin-left: 60px;\n position:relative;\n}\n.theme-card > .title >span:before,.theme-card2 > .title >span:before{\n content: '';\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAOCAYAAABZ/o57AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkMxNkNENzBDRjVEMTFFODhGREFFNUE0QTAxNTEwQjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0E4QkE1MkVDRjVEMTFFODhGREFFNUE0QTAxNTEwQjgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2QzE2Q0Q2RUNGNUQxMUU4OEZEQUU1QTRBMDE1MTBCOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2QzE2Q0Q2RkNGNUQxMUU4OEZEQUU1QTRBMDE1MTBCOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuG9B1AAAAJtSURBVHjanJZdSFRBFMdn7tzSxPceLMMMBK0wNbGIUoOIMIQgiw2JIHroOQk13b7UQkSKKNLKgnILeugh6KGHHnoJeshayj4MIys2gojA1ErzP9e5cJidc1s97I+Z/9mzZ8+cOzuzMmfDwCPpiWohpX5NYL5SejIlpBAYgRCeCuZHQLfWUmm/3AcGvWDuzcWqYCyGTgJPKgWtEhhjHpJI5Ys5nx/MPeUnMN9rfDPwrR46umJYOAxfK9qJXgKahdsughTR+nO+I+4VuE30HlDC5DwBpkktcSYuePMxeEh8h0CeI/YXOEN0EYhFFPCXaQa11yBB9O513Z/WcIUKK1E2aGESXwafM+jqWzBICwBrmZwnrUXFowp9Ah4Q/0GQ74ifBF1EF4L9GRQgTZfTLBkvfofhJnHtKutJlXKFCrOSf2a+GLQyBVwBH4luNfG2vQc3iK4HZRGL+hO1KFroU3Cf6AOgwJF0CnQSXWBiXXYa/P5fV18cKxrFcJ24dpb3fqvgCg33XNjVRaCNKeAaGLW6muWI+wAGiK4DlQtZlF3oELhHdCNY5UiqH1MH0cvNvnZZh3kK9ERIs+cthXo7XSWuHeXnvldxhYZ7dcbM/YijRe+/EaKbzTls25jZ16FtBxsjFjXpWpSr0CS4S3TMnJm26V/0KaLzzBnsMr2nJ6wfT5rhVtJHXz9xbas4/2MTV6i246SrymiX3QJvrK7mOOK+gD6it4LN81kUV+iwdWM0MNfgtLXnloLDTM4uc7tFdvVZ0zJ9TV8irpr1F35Wc4VmfGPA7oCXRDeBXEfcV/N/IbQtoJbJeRaM01pmBRgAyM6ET+/yw14AAAAASUVORK5CYII=) no-repeat;\n background-size: 100% 100%;\n position: absolute;\n width: 40px;\n height: 13px;\n top:3px;\n left: -47px;\n}\n.theme-card > .title >span:after,.theme-card2 > .title >span:after{\n content: '';\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAOCAYAAABZ/o57AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkMxNkNENzBDRjVEMTFFODhGREFFNUE0QTAxNTEwQjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0E4QkE1MkVDRjVEMTFFODhGREFFNUE0QTAxNTEwQjgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2QzE2Q0Q2RUNGNUQxMUU4OEZEQUU1QTRBMDE1MTBCOCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2QzE2Q0Q2RkNGNUQxMUU4OEZEQUU1QTRBMDE1MTBCOCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuG9B1AAAAJtSURBVHjanJZdSFRBFMdn7tzSxPceLMMMBK0wNbGIUoOIMIQgiw2JIHroOQk13b7UQkSKKNLKgnILeugh6KGHHnoJeshayj4MIys2gojA1ErzP9e5cJidc1s97I+Z/9mzZ8+cOzuzMmfDwCPpiWohpX5NYL5SejIlpBAYgRCeCuZHQLfWUmm/3AcGvWDuzcWqYCyGTgJPKgWtEhhjHpJI5Ys5nx/MPeUnMN9rfDPwrR46umJYOAxfK9qJXgKahdsughTR+nO+I+4VuE30HlDC5DwBpkktcSYuePMxeEh8h0CeI/YXOEN0EYhFFPCXaQa11yBB9O513Z/WcIUKK1E2aGESXwafM+jqWzBICwBrmZwnrUXFowp9Ah4Q/0GQ74ifBF1EF4L9GRQgTZfTLBkvfofhJnHtKutJlXKFCrOSf2a+GLQyBVwBH4luNfG2vQc3iK4HZRGL+hO1KFroU3Cf6AOgwJF0CnQSXWBiXXYa/P5fV18cKxrFcJ24dpb3fqvgCg33XNjVRaCNKeAaGLW6muWI+wAGiK4DlQtZlF3oELhHdCNY5UiqH1MH0cvNvnZZh3kK9ERIs+cthXo7XSWuHeXnvldxhYZ7dcbM/YijRe+/EaKbzTls25jZ16FtBxsjFjXpWpSr0CS4S3TMnJm26V/0KaLzzBnsMr2nJ6wfT5rhVtJHXz9xbas4/2MTV6i246SrymiX3QJvrK7mOOK+gD6it4LN81kUV+iwdWM0MNfgtLXnloLDTM4uc7tFdvVZ0zJ9TV8irpr1F35Wc4VmfGPA7oCXRDeBXEfcV/N/IbQtoJbJeRaM01pmBRgAyM6ET+/yw14AAAAASUVORK5CYII=) no-repeat;\n background-size: 100% 100%;\n position: absolute;\n width: 40px;\n height: 13px;\n top:3px;\n right:-47px;\n}\n.theme-card > .content,.theme-card2 > .content{\n height: calc(100% - 30px);\n position: relative;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: 10px;\n}\n\n/*\n*卡片样式2\n*/\n.theme-card2 {\n position: relative;\n}\n\n/*\n*卡片样式2\n*/\n.theme-map {\n position: relative;\n border:1px solid #1679de;\n margin-left:-1px !important;\n}\n\n\n/*************************************************************************************************************************/\n/*\n*工具类\n*/\n/*弹性盒模型*/\n.eleVerHorCenter-flex{\n /*弹性盒模型*/\n display:-webkit-box;\n display:-ms-flexbox;\n display:flex;\n /*主轴居中对齐*/\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n /*侧轴居中对齐*/\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n\n/*盒模型*/\n.eleVerHorCenter-box{\n display:-moz-box;\n display:-webkit-box;\n\n box-pack:center;\n box-orient:vertical;\n display: -webkit-box;\n -webkit-box-pack:center;\n -webkit-box-orient:vertical;\n -moz-box-pack: center;\n\n}\n\n/*表格模型*/\n.eleVerHorCenter-table{\n display: table;\n}\n.eleVerHorCenter-tableCell,.eleNumBg{\n /*让元素渲染为表格单元格*/\n display:table-cell;\n /*设置文本水平居中*/\n text-align:center;\n /*设置文本垂直居中*/\n vertical-align:middle;\n}\n/*数字描述*/\n.eleText{\n font-size: 14px;\n /*font-size:1.4rem ;*/\n}\n/*数字距左侧距离*/\n.eleMarginLeft{\n margin-left: 15px;\n padding:5px;\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDE1NSAzOSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTU1IDM5OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe29wYWNpdHk6MC4xO30KCS5zdDF7ZmlsbDojMTU3QURCO30KCS5zdDJ7b3BhY2l0eTowLjU7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojMTU3QURCO30KPC9zdHlsZT4KPGcgaWQ9IlhNTElEXzE0XyIgY2xhc3M9InN0MCI+Cgk8cGF0aCBpZD0iWE1MSURfNzdfIiBjbGFzcz0ic3QxIiBkPSJNMTU0LDF2MzdIMVYxSDE1NCBNMTU1LDBIMHYzOWgxNTVWMEwxNTUsMHoiLz4KPC9nPgo8cGF0aCBpZD0iWE1MSURfMTVfIiBjbGFzcz0ic3QyIiBkPSJNMTU0LDM5aC00di0xaDR2LTRoMXY0djFIMTU0eiBNMTU0LDFoLTRWMGg0aDF2MXY0aC0xVjF6IE0wLDM5di0xdi00aDF2NGg0djFIMUgweiBNMSw1SDBWMVYwCgloMWg0djFIMVY1eiIvPgo8L3N2Zz4K) no-repeat;\n background-size: 100% 100%;\n}\n/*数字背景*/\n.eleNumBg{\n background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDIwIDI5IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAyOTsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjWE1MSURfNDRfKTt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iWE1MSURfNDRfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjEwIiB5MT0iMS4wMjgxMzNlLTA1IiB4Mj0iMTAiIHkyPSIyOSI+Cgk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojNTc0REZFIi8+Cgk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojNEJEM0ZGIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGlkPSJYTUxJRF8yXyIgY2xhc3M9InN0MCIgZD0iTTE4LDI5SDJjLTEuMSwwLTItMC45LTItMnYtOS41TDIuNSwxNWgxNC45bDIuNSwyLjVWMjdDMjAsMjguMSwxOS4xLDI5LDE4LDI5eiBNMi41LDE0TDAsMTEuNVYyCgljMC0xLjEsMC45LTIsMi0yaDE2YzEuMSwwLDIsMC45LDIsMnY5LjVMMTcuNSwxNEgyLjV6Ii8+Cjwvc3ZnPgo=) no-repeat;\n background-size: 100% 100%;\n\n width: 20px;\n height: 30px;\n margin-left: 5px;\n font-size:22px;\n /*font-size:2.2rem ;*/\n}\n/*div表格*/\n.eleRotation{\n -webkit-transform: rotate(360deg);\n animation: rotation 5s linear infinite;\n -moz-animation: rotation 5s linear infinite;\n -webkit-animation: rotation 5s linear infinite;\n -o-animation: rotation 5s linear infinite;\n}\n@-webkit-keyframes rotation{\n from {-webkit-transform: rotate(0deg);}\n to {-webkit-transform: rotate(360deg);}\n}\n@keyframes rotation{\n from {-webkit-transform: rotate(0deg);}\n to {-webkit-transform: rotate(360deg);}\n}\n/*\n*总计类[背景数字]\n*/\n.topBox,.bottomBox{\n border:0px solid red;\n position: relative;\n}\n.topBox{\n height: 30%;width: 100%;\n -webkit-box-pack:left !important;\n -ms-flex-pack:left !important;\n justify-content:left !important;\n}\n.bottomBox{\n height: 70%; width: 100%;\n}"]} | |
0 | 2 | \ No newline at end of file | ... | ... |
dist/static/js/app.e88b4cfdc33eee44ac63.js
0 → 100644
No preview for this file type
dist/static/js/app.e88b4cfdc33eee44ac63.js.map
0 → 100644
No preview for this file type
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map
1 | -{"version":3,"sources":["webpack:///webpack/bootstrap fb244b2c4fcf1a6a4390"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","2","exports","module","l","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","p","oe","err","console","error"],"mappings":"aACA,IAAAA,EAAAC,OAAA,aACAA,OAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,EAAAC,KACQD,EAAAN,EAAAQ,OAAoBF,IAC5BF,EAAAJ,EAAAM,GACAG,EAAAL,IACAG,EAAAG,KAAAD,EAAAL,GAAA,IAEAK,EAAAL,GAAA,EAEA,IAAAD,KAAAF,EACAU,OAAAC,UAAAC,eAAAC,KAAAb,EAAAE,KACAY,EAAAZ,GAAAF,EAAAE,IAIA,IADAL,KAAAE,EAAAC,EAAAC,GACAK,EAAAC,QACAD,EAAAS,OAAAT,GAEA,GAAAL,EACA,IAAAI,EAAA,EAAYA,EAAAJ,EAAAM,OAA2BF,IACvCD,EAAAY,IAAAC,EAAAhB,EAAAI,IAGA,OAAAD,GAIA,IAAAc,KAGAV,GACAW,EAAA,GAIA,SAAAH,EAAAd,GAGA,GAAAgB,EAAAhB,GACA,OAAAgB,EAAAhB,GAAAkB,QAGA,IAAAC,EAAAH,EAAAhB,IACAG,EAAAH,EACAoB,GAAA,EACAF,YAUA,OANAN,EAAAZ,GAAAW,KAAAQ,EAAAD,QAAAC,IAAAD,QAAAJ,GAGAK,EAAAC,GAAA,EAGAD,EAAAD,QAKAJ,EAAAO,EAAAT,EAGAE,EAAAQ,EAAAN,EAGAF,EAAAS,EAAA,SAAAL,EAAAM,EAAAC,GACAX,EAAAY,EAAAR,EAAAM,IACAhB,OAAAmB,eAAAT,EAAAM,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAX,EAAAiB,EAAA,SAAAZ,GACA,IAAAM,EAAAN,KAAAa,WACA,WAA2B,OAAAb,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAL,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAO,EAAAC,GAAsD,OAAA1B,OAAAC,UAAAC,eAAAC,KAAAsB,EAAAC,IAGtDpB,EAAAqB,EAAA,KAGArB,EAAAsB,GAAA,SAAAC,GAA8D,MAApBC,QAAAC,MAAAF,GAAoBA","file":"static/js/manifest.3ad1d5771e9b13dbdad2.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap fb244b2c4fcf1a6a4390"],"sourceRoot":""} | |
2 | 1 | \ No newline at end of file |
2 | +{"version":3,"sources":["webpack:///webpack/bootstrap e032df7203f07a0a5cfb"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","2","exports","module","l","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","p","oe","err","console","error"],"mappings":"aACA,IAAAA,EAAAC,OAAA,aACAA,OAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,EAAAC,KACQD,EAAAN,EAAAQ,OAAoBF,IAC5BF,EAAAJ,EAAAM,GACAG,EAAAL,IACAG,EAAAG,KAAAD,EAAAL,GAAA,IAEAK,EAAAL,GAAA,EAEA,IAAAD,KAAAF,EACAU,OAAAC,UAAAC,eAAAC,KAAAb,EAAAE,KACAY,EAAAZ,GAAAF,EAAAE,IAIA,IADAL,KAAAE,EAAAC,EAAAC,GACAK,EAAAC,QACAD,EAAAS,OAAAT,GAEA,GAAAL,EACA,IAAAI,EAAA,EAAYA,EAAAJ,EAAAM,OAA2BF,IACvCD,EAAAY,IAAAC,EAAAhB,EAAAI,IAGA,OAAAD,GAIA,IAAAc,KAGAV,GACAW,EAAA,GAIA,SAAAH,EAAAd,GAGA,GAAAgB,EAAAhB,GACA,OAAAgB,EAAAhB,GAAAkB,QAGA,IAAAC,EAAAH,EAAAhB,IACAG,EAAAH,EACAoB,GAAA,EACAF,YAUA,OANAN,EAAAZ,GAAAW,KAAAQ,EAAAD,QAAAC,IAAAD,QAAAJ,GAGAK,EAAAC,GAAA,EAGAD,EAAAD,QAKAJ,EAAAO,EAAAT,EAGAE,EAAAQ,EAAAN,EAGAF,EAAAS,EAAA,SAAAL,EAAAM,EAAAC,GACAX,EAAAY,EAAAR,EAAAM,IACAhB,OAAAmB,eAAAT,EAAAM,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAX,EAAAiB,EAAA,SAAAZ,GACA,IAAAM,EAAAN,KAAAa,WACA,WAA2B,OAAAb,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAL,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAO,EAAAC,GAAsD,OAAA1B,OAAAC,UAAAC,eAAAC,KAAAsB,EAAAC,IAGtDpB,EAAAqB,EAAA,KAGArB,EAAAsB,GAAA,SAAAC,GAA8D,MAApBC,QAAAC,MAAAF,GAAoBA","file":"static/js/manifest.3ad1d5771e9b13dbdad2.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap e032df7203f07a0a5cfb"],"sourceRoot":""} | |
3 | 3 | \ No newline at end of file | ... | ... |
node_modules/.bin/acorn
0 → 120000
node_modules/.bin/ansi-html
0 → 120000
node_modules/.bin/atob
0 → 120000
node_modules/.bin/autoprefixer-info
0 → 120000
node_modules/.bin/babel
0 → 120000
node_modules/.bin/babel-doctor
0 → 120000
node_modules/.bin/babel-external-helpers
0 → 120000
node_modules/.bin/babel-node
0 → 120000
node_modules/.bin/babylon
0 → 120000
node_modules/.bin/browserslist
0 → 120000
node_modules/.bin/cssesc
0 → 120000
node_modules/.bin/csso
0 → 120000
node_modules/.bin/errno
0 → 120000
node_modules/.bin/esparse
0 → 120000
node_modules/.bin/esvalidate
0 → 120000
node_modules/.bin/he
0 → 120000
node_modules/.bin/html-minifier
0 → 120000
node_modules/.bin/import-local-fixture
0 → 120000
node_modules/.bin/in-install
0 → 120000
node_modules/.bin/in-publish
0 → 120000
node_modules/.bin/internal-ip
0 → 120000
node_modules/.bin/js-yaml
0 → 120000
node_modules/.bin/jsesc
0 → 120000
node_modules/.bin/json5
0 → 120000
node_modules/.bin/loose-envify
0 → 120000
node_modules/.bin/miller-rabin
0 → 120000
node_modules/.bin/mime
0 → 120000
node_modules/.bin/mkdirp
0 → 120000
node_modules/.bin/multicast-dns
0 → 120000
node_modules/.bin/node-gyp
0 → 120000
node_modules/.bin/node-sass
0 → 120000
node_modules/.bin/nopt
0 → 120000
node_modules/.bin/not-in-install
0 → 120000
node_modules/.bin/not-in-publish
0 → 120000
node_modules/.bin/opener
0 → 120000
node_modules/.bin/pkcs7
0 → 120000
node_modules/.bin/prettier
0 → 120000
node_modules/.bin/px2rem
0 → 120000
node_modules/.bin/regjsparser
0 → 120000
node_modules/.bin/rimraf
0 → 120000
node_modules/.bin/sassgraph
0 → 120000
node_modules/.bin/semver
0 → 120000
node_modules/.bin/sha.js
0 → 120000
node_modules/.bin/shjs
0 → 120000
node_modules/.bin/sshpk-conv
0 → 120000
node_modules/.bin/sshpk-sign
0 → 120000
node_modules/.bin/sshpk-verify
0 → 120000
node_modules/.bin/strip-indent
0 → 120000
node_modules/.bin/svgo
0 → 120000
node_modules/.bin/uglifyjs
0 → 120000
node_modules/.bin/user-home
0 → 120000
node_modules/.bin/uuid
0 → 120000
node_modules/.bin/webpack
0 → 120000
node_modules/.bin/webpack-bundle-analyzer
0 → 120000
node_modules/.bin/webpack-dev-server
0 → 120000
node_modules/.bin/which
0 → 120000
node_modules/abbrev/LICENSE
0 → 100644
1 | +This software is dual-licensed under the ISC and MIT licenses. | |
2 | +You may use this software under EITHER of the following licenses. | |
3 | + | |
4 | +---------- | |
5 | + | |
6 | +The ISC License | |
7 | + | |
8 | +Copyright (c) Isaac Z. Schlueter and Contributors | |
9 | + | |
10 | +Permission to use, copy, modify, and/or distribute this software for any | |
11 | +purpose with or without fee is hereby granted, provided that the above | |
12 | +copyright notice and this permission notice appear in all copies. | |
13 | + | |
14 | +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
15 | +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
16 | +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
17 | +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
18 | +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
19 | +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR | |
20 | +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
21 | + | |
22 | +---------- | |
23 | + | |
24 | +Copyright Isaac Z. Schlueter and Contributors | |
25 | +All rights reserved. | |
26 | + | |
27 | +Permission is hereby granted, free of charge, to any person | |
28 | +obtaining a copy of this software and associated documentation | |
29 | +files (the "Software"), to deal in the Software without | |
30 | +restriction, including without limitation the rights to use, | |
31 | +copy, modify, merge, publish, distribute, sublicense, and/or sell | |
32 | +copies of the Software, and to permit persons to whom the | |
33 | +Software is furnished to do so, subject to the following | |
34 | +conditions: | |
35 | + | |
36 | +The above copyright notice and this permission notice shall be | |
37 | +included in all copies or substantial portions of the Software. | |
38 | + | |
39 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |
40 | +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | |
41 | +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | |
42 | +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | |
43 | +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | |
44 | +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
45 | +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | |
46 | +OTHER DEALINGS IN THE SOFTWARE. | ... | ... |
node_modules/abbrev/README.md
0 → 100644
1 | +# abbrev-js | |
2 | + | |
3 | +Just like [ruby's Abbrev](http://apidock.com/ruby/Abbrev). | |
4 | + | |
5 | +Usage: | |
6 | + | |
7 | + var abbrev = require("abbrev"); | |
8 | + abbrev("foo", "fool", "folding", "flop"); | |
9 | + | |
10 | + // returns: | |
11 | + { fl: 'flop' | |
12 | + , flo: 'flop' | |
13 | + , flop: 'flop' | |
14 | + , fol: 'folding' | |
15 | + , fold: 'folding' | |
16 | + , foldi: 'folding' | |
17 | + , foldin: 'folding' | |
18 | + , folding: 'folding' | |
19 | + , foo: 'foo' | |
20 | + , fool: 'fool' | |
21 | + } | |
22 | + | |
23 | +This is handy for command-line scripts, or other cases where you want to be able to accept shorthands. | ... | ... |
node_modules/abbrev/abbrev.js
0 → 100644
1 | +module.exports = exports = abbrev.abbrev = abbrev | |
2 | + | |
3 | +abbrev.monkeyPatch = monkeyPatch | |
4 | + | |
5 | +function monkeyPatch () { | |
6 | + Object.defineProperty(Array.prototype, 'abbrev', { | |
7 | + value: function () { return abbrev(this) }, | |
8 | + enumerable: false, configurable: true, writable: true | |
9 | + }) | |
10 | + | |
11 | + Object.defineProperty(Object.prototype, 'abbrev', { | |
12 | + value: function () { return abbrev(Object.keys(this)) }, | |
13 | + enumerable: false, configurable: true, writable: true | |
14 | + }) | |
15 | +} | |
16 | + | |
17 | +function abbrev (list) { | |
18 | + if (arguments.length !== 1 || !Array.isArray(list)) { | |
19 | + list = Array.prototype.slice.call(arguments, 0) | |
20 | + } | |
21 | + for (var i = 0, l = list.length, args = [] ; i < l ; i ++) { | |
22 | + args[i] = typeof list[i] === "string" ? list[i] : String(list[i]) | |
23 | + } | |
24 | + | |
25 | + // sort them lexicographically, so that they're next to their nearest kin | |
26 | + args = args.sort(lexSort) | |
27 | + | |
28 | + // walk through each, seeing how much it has in common with the next and previous | |
29 | + var abbrevs = {} | |
30 | + , prev = "" | |
31 | + for (var i = 0, l = args.length ; i < l ; i ++) { | |
32 | + var current = args[i] | |
33 | + , next = args[i + 1] || "" | |
34 | + , nextMatches = true | |
35 | + , prevMatches = true | |
36 | + if (current === next) continue | |
37 | + for (var j = 0, cl = current.length ; j < cl ; j ++) { | |
38 | + var curChar = current.charAt(j) | |
39 | + nextMatches = nextMatches && curChar === next.charAt(j) | |
40 | + prevMatches = prevMatches && curChar === prev.charAt(j) | |
41 | + if (!nextMatches && !prevMatches) { | |
42 | + j ++ | |
43 | + break | |
44 | + } | |
45 | + } | |
46 | + prev = current | |
47 | + if (j === cl) { | |
48 | + abbrevs[current] = current | |
49 | + continue | |
50 | + } | |
51 | + for (var a = current.substr(0, j) ; j <= cl ; j ++) { | |
52 | + abbrevs[a] = current | |
53 | + a += current.charAt(j) | |
54 | + } | |
55 | + } | |
56 | + return abbrevs | |
57 | +} | |
58 | + | |
59 | +function lexSort (a, b) { | |
60 | + return a === b ? 0 : a > b ? 1 : -1 | |
61 | +} | ... | ... |
node_modules/abbrev/package.json
0 → 100644
1 | +{ | |
2 | + "_from": "abbrev@1", | |
3 | + "_id": "abbrev@1.1.1", | |
4 | + "_inBundle": false, | |
5 | + "_integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=", | |
6 | + "_location": "/abbrev", | |
7 | + "_phantomChildren": {}, | |
8 | + "_requested": { | |
9 | + "type": "range", | |
10 | + "registry": true, | |
11 | + "raw": "abbrev@1", | |
12 | + "name": "abbrev", | |
13 | + "escapedName": "abbrev", | |
14 | + "rawSpec": "1", | |
15 | + "saveSpec": null, | |
16 | + "fetchSpec": "1" | |
17 | + }, | |
18 | + "_requiredBy": [ | |
19 | + "/nopt" | |
20 | + ], | |
21 | + "_resolved": "http://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz", | |
22 | + "_shasum": "f8f2c887ad10bf67f634f005b6987fed3179aac8", | |
23 | + "_spec": "abbrev@1", | |
24 | + "_where": "/Library/WebServer/Documents/mywork/cityOperationCenter/node_modules/nopt", | |
25 | + "author": { | |
26 | + "name": "Isaac Z. Schlueter", | |
27 | + "email": "i@izs.me" | |
28 | + }, | |
29 | + "bugs": { | |
30 | + "url": "https://github.com/isaacs/abbrev-js/issues" | |
31 | + }, | |
32 | + "bundleDependencies": false, | |
33 | + "deprecated": false, | |
34 | + "description": "Like ruby's abbrev module, but in js", | |
35 | + "devDependencies": { | |
36 | + "tap": "^10.1" | |
37 | + }, | |
38 | + "files": [ | |
39 | + "abbrev.js" | |
40 | + ], | |
41 | + "homepage": "https://github.com/isaacs/abbrev-js#readme", | |
42 | + "license": "ISC", | |
43 | + "main": "abbrev.js", | |
44 | + "name": "abbrev", | |
45 | + "repository": { | |
46 | + "type": "git", | |
47 | + "url": "git+ssh://git@github.com/isaacs/abbrev-js.git" | |
48 | + }, | |
49 | + "scripts": { | |
50 | + "postpublish": "git push origin --all; git push origin --tags", | |
51 | + "postversion": "npm publish", | |
52 | + "preversion": "npm test", | |
53 | + "test": "tap test.js --100" | |
54 | + }, | |
55 | + "version": "1.1.1" | |
56 | +} | ... | ... |
node_modules/accepts/HISTORY.md
0 → 100644
1 | +1.3.5 / 2018-02-28 | |
2 | +================== | |
3 | + | |
4 | + * deps: mime-types@~2.1.18 | |
5 | + - deps: mime-db@~1.33.0 | |
6 | + | |
7 | +1.3.4 / 2017-08-22 | |
8 | +================== | |
9 | + | |
10 | + * deps: mime-types@~2.1.16 | |
11 | + - deps: mime-db@~1.29.0 | |
12 | + | |
13 | +1.3.3 / 2016-05-02 | |
14 | +================== | |
15 | + | |
16 | + * deps: mime-types@~2.1.11 | |
17 | + - deps: mime-db@~1.23.0 | |
18 | + * deps: negotiator@0.6.1 | |
19 | + - perf: improve `Accept` parsing speed | |
20 | + - perf: improve `Accept-Charset` parsing speed | |
21 | + - perf: improve `Accept-Encoding` parsing speed | |
22 | + - perf: improve `Accept-Language` parsing speed | |
23 | + | |
24 | +1.3.2 / 2016-03-08 | |
25 | +================== | |
26 | + | |
27 | + * deps: mime-types@~2.1.10 | |
28 | + - Fix extension of `application/dash+xml` | |
29 | + - Update primary extension for `audio/mp4` | |
30 | + - deps: mime-db@~1.22.0 | |
31 | + | |
32 | +1.3.1 / 2016-01-19 | |
33 | +================== | |
34 | + | |
35 | + * deps: mime-types@~2.1.9 | |
36 | + - deps: mime-db@~1.21.0 | |
37 | + | |
38 | +1.3.0 / 2015-09-29 | |
39 | +================== | |
40 | + | |
41 | + * deps: mime-types@~2.1.7 | |
42 | + - deps: mime-db@~1.19.0 | |
43 | + * deps: negotiator@0.6.0 | |
44 | + - Fix including type extensions in parameters in `Accept` parsing | |
45 | + - Fix parsing `Accept` parameters with quoted equals | |
46 | + - Fix parsing `Accept` parameters with quoted semicolons | |
47 | + - Lazy-load modules from main entry point | |
48 | + - perf: delay type concatenation until needed | |
49 | + - perf: enable strict mode | |
50 | + - perf: hoist regular expressions | |
51 | + - perf: remove closures getting spec properties | |
52 | + - perf: remove a closure from media type parsing | |
53 | + - perf: remove property delete from media type parsing | |
54 | + | |
55 | +1.2.13 / 2015-09-06 | |
56 | +=================== | |
57 | + | |
58 | + * deps: mime-types@~2.1.6 | |
59 | + - deps: mime-db@~1.18.0 | |
60 | + | |
61 | +1.2.12 / 2015-07-30 | |
62 | +=================== | |
63 | + | |
64 | + * deps: mime-types@~2.1.4 | |
65 | + - deps: mime-db@~1.16.0 | |
66 | + | |
67 | +1.2.11 / 2015-07-16 | |
68 | +=================== | |
69 | + | |
70 | + * deps: mime-types@~2.1.3 | |
71 | + - deps: mime-db@~1.15.0 | |
72 | + | |
73 | +1.2.10 / 2015-07-01 | |
74 | +=================== | |
75 | + | |
76 | + * deps: mime-types@~2.1.2 | |
77 | + - deps: mime-db@~1.14.0 | |
78 | + | |
79 | +1.2.9 / 2015-06-08 | |
80 | +================== | |
81 | + | |
82 | + * deps: mime-types@~2.1.1 | |
83 | + - perf: fix deopt during mapping | |
84 | + | |
85 | +1.2.8 / 2015-06-07 | |
86 | +================== | |
87 | + | |
88 | + * deps: mime-types@~2.1.0 | |
89 | + - deps: mime-db@~1.13.0 | |
90 | + * perf: avoid argument reassignment & argument slice | |
91 | + * perf: avoid negotiator recursive construction | |
92 | + * perf: enable strict mode | |
93 | + * perf: remove unnecessary bitwise operator | |
94 | + | |
95 | +1.2.7 / 2015-05-10 | |
96 | +================== | |
97 | + | |
98 | + * deps: negotiator@0.5.3 | |
99 | + - Fix media type parameter matching to be case-insensitive | |
100 | + | |
101 | +1.2.6 / 2015-05-07 | |
102 | +================== | |
103 | + | |
104 | + * deps: mime-types@~2.0.11 | |
105 | + - deps: mime-db@~1.9.1 | |
106 | + * deps: negotiator@0.5.2 | |
107 | + - Fix comparing media types with quoted values | |
108 | + - Fix splitting media types with quoted commas | |
109 | + | |
110 | +1.2.5 / 2015-03-13 | |
111 | +================== | |
112 | + | |
113 | + * deps: mime-types@~2.0.10 | |
114 | + - deps: mime-db@~1.8.0 | |
115 | + | |
116 | +1.2.4 / 2015-02-14 | |
117 | +================== | |
118 | + | |
119 | + * Support Node.js 0.6 | |
120 | + * deps: mime-types@~2.0.9 | |
121 | + - deps: mime-db@~1.7.0 | |
122 | + * deps: negotiator@0.5.1 | |
123 | + - Fix preference sorting to be stable for long acceptable lists | |
124 | + | |
125 | +1.2.3 / 2015-01-31 | |
126 | +================== | |
127 | + | |
128 | + * deps: mime-types@~2.0.8 | |
129 | + - deps: mime-db@~1.6.0 | |
130 | + | |
131 | +1.2.2 / 2014-12-30 | |
132 | +================== | |
133 | + | |
134 | + * deps: mime-types@~2.0.7 | |
135 | + - deps: mime-db@~1.5.0 | |
136 | + | |
137 | +1.2.1 / 2014-12-30 | |
138 | +================== | |
139 | + | |
140 | + * deps: mime-types@~2.0.5 | |
141 | + - deps: mime-db@~1.3.1 | |
142 | + | |
143 | +1.2.0 / 2014-12-19 | |
144 | +================== | |
145 | + | |
146 | + * deps: negotiator@0.5.0 | |
147 | + - Fix list return order when large accepted list | |
148 | + - Fix missing identity encoding when q=0 exists | |
149 | + - Remove dynamic building of Negotiator class | |
150 | + | |
151 | +1.1.4 / 2014-12-10 | |
152 | +================== | |
153 | + | |
154 | + * deps: mime-types@~2.0.4 | |
155 | + - deps: mime-db@~1.3.0 | |
156 | + | |
157 | +1.1.3 / 2014-11-09 | |
158 | +================== | |
159 | + | |
160 | + * deps: mime-types@~2.0.3 | |
161 | + - deps: mime-db@~1.2.0 | |
162 | + | |
163 | +1.1.2 / 2014-10-14 | |
164 | +================== | |
165 | + | |
166 | + * deps: negotiator@0.4.9 | |
167 | + - Fix error when media type has invalid parameter | |
168 | + | |
169 | +1.1.1 / 2014-09-28 | |
170 | +================== | |
171 | + | |
172 | + * deps: mime-types@~2.0.2 | |
173 | + - deps: mime-db@~1.1.0 | |
174 | + * deps: negotiator@0.4.8 | |
175 | + - Fix all negotiations to be case-insensitive | |
176 | + - Stable sort preferences of same quality according to client order | |
177 | + | |
178 | +1.1.0 / 2014-09-02 | |
179 | +================== | |
180 | + | |
181 | + * update `mime-types` | |
182 | + | |
183 | +1.0.7 / 2014-07-04 | |
184 | +================== | |
185 | + | |
186 | + * Fix wrong type returned from `type` when match after unknown extension | |
187 | + | |
188 | +1.0.6 / 2014-06-24 | |
189 | +================== | |
190 | + | |
191 | + * deps: negotiator@0.4.7 | |
192 | + | |
193 | +1.0.5 / 2014-06-20 | |
194 | +================== | |
195 | + | |
196 | + * fix crash when unknown extension given | |
197 | + | |
198 | +1.0.4 / 2014-06-19 | |
199 | +================== | |
200 | + | |
201 | + * use `mime-types` | |
202 | + | |
203 | +1.0.3 / 2014-06-11 | |
204 | +================== | |
205 | + | |
206 | + * deps: negotiator@0.4.6 | |
207 | + - Order by specificity when quality is the same | |
208 | + | |
209 | +1.0.2 / 2014-05-29 | |
210 | +================== | |
211 | + | |
212 | + * Fix interpretation when header not in request | |
213 | + * deps: pin negotiator@0.4.5 | |
214 | + | |
215 | +1.0.1 / 2014-01-18 | |
216 | +================== | |
217 | + | |
218 | + * Identity encoding isn't always acceptable | |
219 | + * deps: negotiator@~0.4.0 | |
220 | + | |
221 | +1.0.0 / 2013-12-27 | |
222 | +================== | |
223 | + | |
224 | + * Genesis | ... | ... |
node_modules/accepts/LICENSE
0 → 100644
1 | +(The MIT License) | |
2 | + | |
3 | +Copyright (c) 2014 Jonathan Ong <me@jongleberry.com> | |
4 | +Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com> | |
5 | + | |
6 | +Permission is hereby granted, free of charge, to any person obtaining | |
7 | +a copy of this software and associated documentation files (the | |
8 | +'Software'), to deal in the Software without restriction, including | |
9 | +without limitation the rights to use, copy, modify, merge, publish, | |
10 | +distribute, sublicense, and/or sell copies of the Software, and to | |
11 | +permit persons to whom the Software is furnished to do so, subject to | |
12 | +the following conditions: | |
13 | + | |
14 | +The above copyright notice and this permission notice shall be | |
15 | +included in all copies or substantial portions of the Software. | |
16 | + | |
17 | +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, | |
18 | +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
19 | +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | |
20 | +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY | |
21 | +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | |
22 | +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | |
23 | +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ... | ... |
node_modules/accepts/README.md
0 → 100644
1 | +# accepts | |
2 | + | |
3 | +[![NPM Version][npm-image]][npm-url] | |
4 | +[![NPM Downloads][downloads-image]][downloads-url] | |
5 | +[![Node.js Version][node-version-image]][node-version-url] | |
6 | +[![Build Status][travis-image]][travis-url] | |
7 | +[![Test Coverage][coveralls-image]][coveralls-url] | |
8 | + | |
9 | +Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). | |
10 | +Extracted from [koa](https://www.npmjs.com/package/koa) for general use. | |
11 | + | |
12 | +In addition to negotiator, it allows: | |
13 | + | |
14 | +- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` | |
15 | + as well as `('text/html', 'application/json')`. | |
16 | +- Allows type shorthands such as `json`. | |
17 | +- Returns `false` when no types match | |
18 | +- Treats non-existent headers as `*` | |
19 | + | |
20 | +## Installation | |
21 | + | |
22 | +This is a [Node.js](https://nodejs.org/en/) module available through the | |
23 | +[npm registry](https://www.npmjs.com/). Installation is done using the | |
24 | +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): | |
25 | + | |
26 | +```sh | |
27 | +$ npm install accepts | |
28 | +``` | |
29 | + | |
30 | +## API | |
31 | + | |
32 | +<!-- eslint-disable no-unused-vars --> | |
33 | + | |
34 | +```js | |
35 | +var accepts = require('accepts') | |
36 | +``` | |
37 | + | |
38 | +### accepts(req) | |
39 | + | |
40 | +Create a new `Accepts` object for the given `req`. | |
41 | + | |
42 | +#### .charset(charsets) | |
43 | + | |
44 | +Return the first accepted charset. If nothing in `charsets` is accepted, | |
45 | +then `false` is returned. | |
46 | + | |
47 | +#### .charsets() | |
48 | + | |
49 | +Return the charsets that the request accepts, in the order of the client's | |
50 | +preference (most preferred first). | |
51 | + | |
52 | +#### .encoding(encodings) | |
53 | + | |
54 | +Return the first accepted encoding. If nothing in `encodings` is accepted, | |
55 | +then `false` is returned. | |
56 | + | |
57 | +#### .encodings() | |
58 | + | |
59 | +Return the encodings that the request accepts, in the order of the client's | |
60 | +preference (most preferred first). | |
61 | + | |
62 | +#### .language(languages) | |
63 | + | |
64 | +Return the first accepted language. If nothing in `languages` is accepted, | |
65 | +then `false` is returned. | |
66 | + | |
67 | +#### .languages() | |
68 | + | |
69 | +Return the languages that the request accepts, in the order of the client's | |
70 | +preference (most preferred first). | |
71 | + | |
72 | +#### .type(types) | |
73 | + | |
74 | +Return the first accepted type (and it is returned as the same text as what | |
75 | +appears in the `types` array). If nothing in `types` is accepted, then `false` | |
76 | +is returned. | |
77 | + | |
78 | +The `types` array can contain full MIME types or file extensions. Any value | |
79 | +that is not a full MIME types is passed to `require('mime-types').lookup`. | |
80 | + | |
81 | +#### .types() | |
82 | + | |
83 | +Return the types that the request accepts, in the order of the client's | |
84 | +preference (most preferred first). | |
85 | + | |
86 | +## Examples | |
87 | + | |
88 | +### Simple type negotiation | |
89 | + | |
90 | +This simple example shows how to use `accepts` to return a different typed | |
91 | +respond body based on what the client wants to accept. The server lists it's | |
92 | +preferences in order and will get back the best match between the client and | |
93 | +server. | |
94 | + | |
95 | +```js | |
96 | +var accepts = require('accepts') | |
97 | +var http = require('http') | |
98 | + | |
99 | +function app (req, res) { | |
100 | + var accept = accepts(req) | |
101 | + | |
102 | + // the order of this list is significant; should be server preferred order | |
103 | + switch (accept.type(['json', 'html'])) { | |
104 | + case 'json': | |
105 | + res.setHeader('Content-Type', 'application/json') | |
106 | + res.write('{"hello":"world!"}') | |
107 | + break | |
108 | + case 'html': | |
109 | + res.setHeader('Content-Type', 'text/html') | |
110 | + res.write('<b>hello, world!</b>') | |
111 | + break | |
112 | + default: | |
113 | + // the fallback is text/plain, so no need to specify it above | |
114 | + res.setHeader('Content-Type', 'text/plain') | |
115 | + res.write('hello, world!') | |
116 | + break | |
117 | + } | |
118 | + | |
119 | + res.end() | |
120 | +} | |
121 | + | |
122 | +http.createServer(app).listen(3000) | |
123 | +``` | |
124 | + | |
125 | +You can test this out with the cURL program: | |
126 | +```sh | |
127 | +curl -I -H'Accept: text/html' http://localhost:3000/ | |
128 | +``` | |
129 | + | |
130 | +## License | |
131 | + | |
132 | +[MIT](LICENSE) | |
133 | + | |
134 | +[npm-image]: https://img.shields.io/npm/v/accepts.svg | |
135 | +[npm-url]: https://npmjs.org/package/accepts | |
136 | +[node-version-image]: https://img.shields.io/node/v/accepts.svg | |
137 | +[node-version-url]: https://nodejs.org/en/download/ | |
138 | +[travis-image]: https://img.shields.io/travis/jshttp/accepts/master.svg | |
139 | +[travis-url]: https://travis-ci.org/jshttp/accepts | |
140 | +[coveralls-image]: https://img.shields.io/coveralls/jshttp/accepts/master.svg | |
141 | +[coveralls-url]: https://coveralls.io/r/jshttp/accepts | |
142 | +[downloads-image]: https://img.shields.io/npm/dm/accepts.svg | |
143 | +[downloads-url]: https://npmjs.org/package/accepts | ... | ... |
node_modules/accepts/index.js
0 → 100644
1 | +/*! | |
2 | + * accepts | |
3 | + * Copyright(c) 2014 Jonathan Ong | |
4 | + * Copyright(c) 2015 Douglas Christopher Wilson | |
5 | + * MIT Licensed | |
6 | + */ | |
7 | + | |
8 | +'use strict' | |
9 | + | |
10 | +/** | |
11 | + * Module dependencies. | |
12 | + * @private | |
13 | + */ | |
14 | + | |
15 | +var Negotiator = require('negotiator') | |
16 | +var mime = require('mime-types') | |
17 | + | |
18 | +/** | |
19 | + * Module exports. | |
20 | + * @public | |
21 | + */ | |
22 | + | |
23 | +module.exports = Accepts | |
24 | + | |
25 | +/** | |
26 | + * Create a new Accepts object for the given req. | |
27 | + * | |
28 | + * @param {object} req | |
29 | + * @public | |
30 | + */ | |
31 | + | |
32 | +function Accepts (req) { | |
33 | + if (!(this instanceof Accepts)) { | |
34 | + return new Accepts(req) | |
35 | + } | |
36 | + | |
37 | + this.headers = req.headers | |
38 | + this.negotiator = new Negotiator(req) | |
39 | +} | |
40 | + | |
41 | +/** | |
42 | + * Check if the given `type(s)` is acceptable, returning | |
43 | + * the best match when true, otherwise `undefined`, in which | |
44 | + * case you should respond with 406 "Not Acceptable". | |
45 | + * | |
46 | + * The `type` value may be a single mime type string | |
47 | + * such as "application/json", the extension name | |
48 | + * such as "json" or an array `["json", "html", "text/plain"]`. When a list | |
49 | + * or array is given the _best_ match, if any is returned. | |
50 | + * | |
51 | + * Examples: | |
52 | + * | |
53 | + * // Accept: text/html | |
54 | + * this.types('html'); | |
55 | + * // => "html" | |
56 | + * | |
57 | + * // Accept: text/*, application/json | |
58 | + * this.types('html'); | |
59 | + * // => "html" | |
60 | + * this.types('text/html'); | |
61 | + * // => "text/html" | |
62 | + * this.types('json', 'text'); | |
63 | + * // => "json" | |
64 | + * this.types('application/json'); | |
65 | + * // => "application/json" | |
66 | + * | |
67 | + * // Accept: text/*, application/json | |
68 | + * this.types('image/png'); | |
69 | + * this.types('png'); | |
70 | + * // => undefined | |
71 | + * | |
72 | + * // Accept: text/*;q=.5, application/json | |
73 | + * this.types(['html', 'json']); | |
74 | + * this.types('html', 'json'); | |
75 | + * // => "json" | |
76 | + * | |
77 | + * @param {String|Array} types... | |
78 | + * @return {String|Array|Boolean} | |
79 | + * @public | |
80 | + */ | |
81 | + | |
82 | +Accepts.prototype.type = | |
83 | +Accepts.prototype.types = function (types_) { | |
84 | + var types = types_ | |
85 | + | |
86 | + // support flattened arguments | |
87 | + if (types && !Array.isArray(types)) { | |
88 | + types = new Array(arguments.length) | |
89 | + for (var i = 0; i < types.length; i++) { | |
90 | + types[i] = arguments[i] | |
91 | + } | |
92 | + } | |
93 | + | |
94 | + // no types, return all requested types | |
95 | + if (!types || types.length === 0) { | |
96 | + return this.negotiator.mediaTypes() | |
97 | + } | |
98 | + | |
99 | + // no accept header, return first given type | |
100 | + if (!this.headers.accept) { | |
101 | + return types[0] | |
102 | + } | |
103 | + | |
104 | + var mimes = types.map(extToMime) | |
105 | + var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)) | |
106 | + var first = accepts[0] | |
107 | + | |
108 | + return first | |
109 | + ? types[mimes.indexOf(first)] | |
110 | + : false | |
111 | +} | |
112 | + | |
113 | +/** | |
114 | + * Return accepted encodings or best fit based on `encodings`. | |
115 | + * | |
116 | + * Given `Accept-Encoding: gzip, deflate` | |
117 | + * an array sorted by quality is returned: | |
118 | + * | |
119 | + * ['gzip', 'deflate'] | |
120 | + * | |
121 | + * @param {String|Array} encodings... | |
122 | + * @return {String|Array} | |
123 | + * @public | |
124 | + */ | |
125 | + | |
126 | +Accepts.prototype.encoding = | |
127 | +Accepts.prototype.encodings = function (encodings_) { | |
128 | + var encodings = encodings_ | |
129 | + | |
130 | + // support flattened arguments | |
131 | + if (encodings && !Array.isArray(encodings)) { | |
132 | + encodings = new Array(arguments.length) | |
133 | + for (var i = 0; i < encodings.length; i++) { | |
134 | + encodings[i] = arguments[i] | |
135 | + } | |
136 | + } | |
137 | + | |
138 | + // no encodings, return all requested encodings | |
139 | + if (!encodings || encodings.length === 0) { | |
140 | + return this.negotiator.encodings() | |
141 | + } | |
142 | + | |
143 | + return this.negotiator.encodings(encodings)[0] || false | |
144 | +} | |
145 | + | |
146 | +/** | |
147 | + * Return accepted charsets or best fit based on `charsets`. | |
148 | + * | |
149 | + * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5` | |
150 | + * an array sorted by quality is returned: | |
151 | + * | |
152 | + * ['utf-8', 'utf-7', 'iso-8859-1'] | |
153 | + * | |
154 | + * @param {String|Array} charsets... | |
155 | + * @return {String|Array} | |
156 | + * @public | |
157 | + */ | |
158 | + | |
159 | +Accepts.prototype.charset = | |
160 | +Accepts.prototype.charsets = function (charsets_) { | |
161 | + var charsets = charsets_ | |
162 | + | |
163 | + // support flattened arguments | |
164 | + if (charsets && !Array.isArray(charsets)) { | |
165 | + charsets = new Array(arguments.length) | |
166 | + for (var i = 0; i < charsets.length; i++) { | |
167 | + charsets[i] = arguments[i] | |
168 | + } | |
169 | + } | |
170 | + | |
171 | + // no charsets, return all requested charsets | |
172 | + if (!charsets || charsets.length === 0) { | |
173 | + return this.negotiator.charsets() | |
174 | + } | |
175 | + | |
176 | + return this.negotiator.charsets(charsets)[0] || false | |
177 | +} | |
178 | + | |
179 | +/** | |
180 | + * Return accepted languages or best fit based on `langs`. | |
181 | + * | |
182 | + * Given `Accept-Language: en;q=0.8, es, pt` | |
183 | + * an array sorted by quality is returned: | |
184 | + * | |
185 | + * ['es', 'pt', 'en'] | |
186 | + * | |
187 | + * @param {String|Array} langs... | |
188 | + * @return {Array|String} | |
189 | + * @public | |
190 | + */ | |
191 | + | |
192 | +Accepts.prototype.lang = | |
193 | +Accepts.prototype.langs = | |
194 | +Accepts.prototype.language = | |
195 | +Accepts.prototype.languages = function (languages_) { | |
196 | + var languages = languages_ | |
197 | + | |
198 | + // support flattened arguments | |
199 | + if (languages && !Array.isArray(languages)) { | |
200 | + languages = new Array(arguments.length) | |
201 | + for (var i = 0; i < languages.length; i++) { | |
202 | + languages[i] = arguments[i] | |
203 | + } | |
204 | + } | |
205 | + | |
206 | + // no languages, return all requested languages | |
207 | + if (!languages || languages.length === 0) { | |
208 | + return this.negotiator.languages() | |
209 | + } | |
210 | + | |
211 | + return this.negotiator.languages(languages)[0] || false | |
212 | +} | |
213 | + | |
214 | +/** | |
215 | + * Convert extnames to mime. | |
216 | + * | |
217 | + * @param {String} type | |
218 | + * @return {String} | |
219 | + * @private | |
220 | + */ | |
221 | + | |
222 | +function extToMime (type) { | |
223 | + return type.indexOf('/') === -1 | |
224 | + ? mime.lookup(type) | |
225 | + : type | |
226 | +} | |
227 | + | |
228 | +/** | |
229 | + * Check if mime is valid. | |
230 | + * | |
231 | + * @param {String} type | |
232 | + * @return {String} | |
233 | + * @private | |
234 | + */ | |
235 | + | |
236 | +function validMime (type) { | |
237 | + return typeof type === 'string' | |
238 | +} | ... | ... |
node_modules/accepts/package.json
0 → 100644
1 | +{ | |
2 | + "_from": "accepts@~1.3.5", | |
3 | + "_id": "accepts@1.3.5", | |
4 | + "_inBundle": false, | |
5 | + "_integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", | |
6 | + "_location": "/accepts", | |
7 | + "_phantomChildren": {}, | |
8 | + "_requested": { | |
9 | + "type": "range", | |
10 | + "registry": true, | |
11 | + "raw": "accepts@~1.3.5", | |
12 | + "name": "accepts", | |
13 | + "escapedName": "accepts", | |
14 | + "rawSpec": "~1.3.5", | |
15 | + "saveSpec": null, | |
16 | + "fetchSpec": "~1.3.5" | |
17 | + }, | |
18 | + "_requiredBy": [ | |
19 | + "/compression", | |
20 | + "/express", | |
21 | + "/serve-index" | |
22 | + ], | |
23 | + "_resolved": "http://registry.npm.taobao.org/accepts/download/accepts-1.3.5.tgz", | |
24 | + "_shasum": "eb777df6011723a3b14e8a72c0805c8e86746bd2", | |
25 | + "_spec": "accepts@~1.3.5", | |
26 | + "_where": "/Library/WebServer/Documents/mywork/cityOperationCenter/node_modules/express", | |
27 | + "bugs": { | |
28 | + "url": "https://github.com/jshttp/accepts/issues" | |
29 | + }, | |
30 | + "bundleDependencies": false, | |
31 | + "contributors": [ | |
32 | + { | |
33 | + "name": "Douglas Christopher Wilson", | |
34 | + "email": "doug@somethingdoug.com" | |
35 | + }, | |
36 | + { | |
37 | + "name": "Jonathan Ong", | |
38 | + "email": "me@jongleberry.com", | |
39 | + "url": "http://jongleberry.com" | |
40 | + } | |
41 | + ], | |
42 | + "dependencies": { | |
43 | + "mime-types": "~2.1.18", | |
44 | + "negotiator": "0.6.1" | |
45 | + }, | |
46 | + "deprecated": false, | |
47 | + "description": "Higher-level content negotiation", | |
48 | + "devDependencies": { | |
49 | + "eslint": "4.18.1", | |
50 | + "eslint-config-standard": "11.0.0", | |
51 | + "eslint-plugin-import": "2.9.0", | |
52 | + "eslint-plugin-markdown": "1.0.0-beta.6", | |
53 | + "eslint-plugin-node": "6.0.1", | |
54 | + "eslint-plugin-promise": "3.6.0", | |
55 | + "eslint-plugin-standard": "3.0.1", | |
56 | + "istanbul": "0.4.5", | |
57 | + "mocha": "~1.21.5" | |
58 | + }, | |
59 | + "engines": { | |
60 | + "node": ">= 0.6" | |
61 | + }, | |
62 | + "files": [ | |
63 | + "LICENSE", | |
64 | + "HISTORY.md", | |
65 | + "index.js" | |
66 | + ], | |
67 | + "homepage": "https://github.com/jshttp/accepts#readme", | |
68 | + "keywords": [ | |
69 | + "content", | |
70 | + "negotiation", | |
71 | + "accept", | |
72 | + "accepts" | |
73 | + ], | |
74 | + "license": "MIT", | |
75 | + "name": "accepts", | |
76 | + "repository": { | |
77 | + "type": "git", | |
78 | + "url": "git+https://github.com/jshttp/accepts.git" | |
79 | + }, | |
80 | + "scripts": { | |
81 | + "lint": "eslint --plugin markdown --ext js,md .", | |
82 | + "test": "mocha --reporter spec --check-leaks --bail test/", | |
83 | + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", | |
84 | + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" | |
85 | + }, | |
86 | + "version": "1.3.5" | |
87 | +} | ... | ... |
node_modules/acorn-dynamic-import/CHANGELOG.md
0 → 100644
1 | +# 2.0.2 | |
2 | + | |
3 | +- Fixing parsing of `yield import()`. | |
4 | + | |
5 | +# 2.0.1 | |
6 | + | |
7 | +- Removing unnecessary `in-publish` dependency. | |
8 | + | |
9 | +# 2.0.0 | |
10 | + | |
11 | +- Updating acorn version to >= 4. | |
12 | + | |
13 | +# 1.0.1 | |
14 | + | |
15 | +- Fixes for publishing the module. | |
16 | + | |
17 | +# 1.0.0 | |
18 | + | |
19 | +- Initial release of plugin. | ... | ... |
node_modules/acorn-dynamic-import/LICENSE
0 → 100755
1 | +MIT License | |
2 | + | |
3 | +Copyright (c) 2016 Jordan Gensler | |
4 | + | |
5 | +Permission is hereby granted, free of charge, to any person obtaining a copy | |
6 | +of this software and associated documentation files (the "Software"), to deal | |
7 | +in the Software without restriction, including without limitation the rights | |
8 | +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
9 | +copies of the Software, and to permit persons to whom the Software is | |
10 | +furnished to do so, subject to the following conditions: | |
11 | + | |
12 | +The above copyright notice and this permission notice shall be included in all | |
13 | +copies or substantial portions of the Software. | |
14 | + | |
15 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
16 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
17 | +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
18 | +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
19 | +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
20 | +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
21 | +SOFTWARE. | ... | ... |
node_modules/acorn-dynamic-import/README.md
0 → 100755
1 | +# Dynamic import support in acorn | |
2 | + | |
3 | +This is plugin for [Acorn](http://marijnhaverbeke.nl/acorn/) - a tiny, fast JavaScript parser, written completely in JavaScript. | |
4 | + | |
5 | +For more information, check out the [proposal repo](https://github.com/tc39/proposal-dynamic-import). | |
6 | + | |
7 | +## Usage | |
8 | + | |
9 | +You can use this module directly in order to get Acorn instance with plugin installed: | |
10 | + | |
11 | +```js | |
12 | +import acorn from 'acorn-dynamic-import'; | |
13 | +// or... | |
14 | +const acorn = require('acorn-dynamic-import').default; | |
15 | +``` | |
16 | + | |
17 | +Or you can use `inject.js` for injecting plugin into your own version of Acorn like this: | |
18 | + | |
19 | +```js | |
20 | +const acorn = require('acorn-dynamic-import/lib/inject').default(require('./custom-acorn')); | |
21 | +``` | |
22 | + | |
23 | +Then, use the `plugins` option whenever you need to support dynamicImport while parsing: | |
24 | + | |
25 | +```js | |
26 | +const ast = acorn.parse(code, { | |
27 | + plugins: { dynamicImport: true } | |
28 | +}); | |
29 | +``` | |
30 | + | |
31 | +## License | |
32 | + | |
33 | +This plugin is issued under the [MIT license](./LICENSE). | ... | ... |
node_modules/acorn-dynamic-import/lib/index.js
0 → 100644
1 | +Object.defineProperty(exports, "__esModule", { | |
2 | + value: true | |
3 | +}); | |
4 | + | |
5 | +var _acorn = require('acorn'); | |
6 | + | |
7 | +var acorn = _interopRequireWildcard(_acorn); | |
8 | + | |
9 | +var _inject = require('./inject'); | |
10 | + | |
11 | +var _inject2 = _interopRequireDefault(_inject); | |
12 | + | |
13 | +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | |
14 | + | |
15 | +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } | |
16 | + | |
17 | +exports['default'] = (0, _inject2['default'])(acorn); | |
0 | 18 | \ No newline at end of file | ... | ... |
node_modules/acorn-dynamic-import/lib/inject.js
0 → 100644
1 | +Object.defineProperty(exports, "__esModule", { | |
2 | + value: true | |
3 | +}); | |
4 | +exports['default'] = injectDynamicImport; | |
5 | +/* eslint-disable no-underscore-dangle */ | |
6 | + | |
7 | +function injectDynamicImport(acorn) { | |
8 | + var tt = acorn.tokTypes; | |
9 | + | |
10 | + // NOTE: This allows `yield import()` to parse correctly. | |
11 | + tt._import.startsExpr = true; | |
12 | + | |
13 | + function parseDynamicImport() { | |
14 | + var node = this.startNode(); | |
15 | + this.next(); | |
16 | + if (this.type !== tt.parenL) { | |
17 | + this.unexpected(); | |
18 | + } | |
19 | + return this.finishNode(node, 'Import'); | |
20 | + } | |
21 | + | |
22 | + function peekNext() { | |
23 | + return this.input[this.pos]; | |
24 | + } | |
25 | + | |
26 | + // eslint-disable-next-line no-param-reassign | |
27 | + acorn.plugins.dynamicImport = function () { | |
28 | + function dynamicImportPlugin(instance) { | |
29 | + instance.extend('parseStatement', function (nextMethod) { | |
30 | + return function () { | |
31 | + function parseStatement() { | |
32 | + var node = this.startNode(); | |
33 | + if (this.type === tt._import) { | |
34 | + var nextToken = peekNext.call(this); | |
35 | + if (nextToken === tt.parenL.label) { | |
36 | + var expr = this.parseExpression(); | |
37 | + return this.parseExpressionStatement(node, expr); | |
38 | + } | |
39 | + } | |
40 | + | |
41 | + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { | |
42 | + args[_key] = arguments[_key]; | |
43 | + } | |
44 | + | |
45 | + return nextMethod.apply(this, args); | |
46 | + } | |
47 | + | |
48 | + return parseStatement; | |
49 | + }(); | |
50 | + }); | |
51 | + | |
52 | + instance.extend('parseExprAtom', function (nextMethod) { | |
53 | + return function () { | |
54 | + function parseExprAtom(refDestructuringErrors) { | |
55 | + if (this.type === tt._import) { | |
56 | + return parseDynamicImport.call(this); | |
57 | + } | |
58 | + return nextMethod.call(this, refDestructuringErrors); | |
59 | + } | |
60 | + | |
61 | + return parseExprAtom; | |
62 | + }(); | |
63 | + }); | |
64 | + } | |
65 | + | |
66 | + return dynamicImportPlugin; | |
67 | + }(); | |
68 | + | |
69 | + return acorn; | |
70 | +} | |
0 | 71 | \ No newline at end of file | ... | ... |
node_modules/acorn-dynamic-import/node_modules/.bin/acorn
0 → 120000
node_modules/acorn-dynamic-import/node_modules/acorn/.npmignore
0 → 100644
node_modules/acorn-dynamic-import/node_modules/acorn/AUTHORS
0 → 100644
1 | +List of Acorn contributors. Updated before every release. | |
2 | + | |
3 | +Adrian Rakovsky | |
4 | +Alistair Braidwood | |
5 | +Amila Welihinda | |
6 | +Andres Suarez | |
7 | +Angelo | |
8 | +Aparajita Fishman | |
9 | +Arian Stolwijk | |
10 | +Artem Govorov | |
11 | +Brandon Mills | |
12 | +Charles Hughes | |
13 | +Conrad Irwin | |
14 | +Daniel Tschinder | |
15 | +David Bonnet | |
16 | +Domenico Matteo | |
17 | +Forbes Lindesay | |
18 | +Gilad Peleg | |
19 | +impinball | |
20 | +Ingvar Stepanyan | |
21 | +Jackson Ray Hamilton | |
22 | +Jesse McCarthy | |
23 | +Jiaxing Wang | |
24 | +Joel Kemp | |
25 | +Johannes Herr | |
26 | +Jordan Klassen | |
27 | +Jürg Lehni | |
28 | +Kai Cataldo | |
29 | +keeyipchan | |
30 | +Keheliya Gallaba | |
31 | +Kevin Irish | |
32 | +Kevin Kwok | |
33 | +krator | |
34 | +Marijn Haverbeke | |
35 | +Martin Carlberg | |
36 | +Mat Garcia | |
37 | +Mathias Bynens | |
38 | +Mathieu 'p01' Henri | |
39 | +Matthew Bastien | |
40 | +Max Schaefer | |
41 | +Max Zerzouri | |
42 | +Mihai Bazon | |
43 | +Mike Rennie | |
44 | +naoh | |
45 | +Nicholas C. Zakas | |
46 | +Nick Fitzgerald | |
47 | +Olivier Thomann | |
48 | +Oskar Schöldström | |
49 | +Paul Harper | |
50 | +Peter Rust | |
51 | +PlNG | |
52 | +Prayag Verma | |
53 | +ReadmeCritic | |
54 | +r-e-d | |
55 | +Richard Gibson | |
56 | +Rich Harris | |
57 | +Sebastian McKenzie | |
58 | +Simen Bekkhus | |
59 | +Timothy Gu | |
60 | +Toru Nagashima | |
61 | +Wexpo Lyu | |
62 | +zsjforcn | ... | ... |
node_modules/acorn-dynamic-import/node_modules/acorn/CHANGELOG.md
0 → 100644
1 | +## 4.0.11 (2017-02-07) | |
2 | + | |
3 | +### Bug fixes | |
4 | + | |
5 | +Allow all forms of member expressions to be parenthesized as lvalue. | |
6 | + | |
7 | +## 4.0.10 (2017-02-07) | |
8 | + | |
9 | +### Bug fixes | |
10 | + | |
11 | +Don't expect semicolons after default-exported functions or classes, | |
12 | +even when they are expressions. | |
13 | + | |
14 | +Check for use of `'use strict'` directives in non-simple parameter | |
15 | +functions, even when already in strict mode. | |
16 | + | |
17 | +## 4.0.9 (2017-02-06) | |
18 | + | |
19 | +### Bug fixes | |
20 | + | |
21 | +Fix incorrect error raised for parenthesized simple assignment | |
22 | +targets, so that `(x) = 1` parses again. | |
23 | + | |
24 | +## 4.0.8 (2017-02-03) | |
25 | + | |
26 | +### Bug fixes | |
27 | + | |
28 | +Solve spurious parenthesized pattern errors by temporarily erring on | |
29 | +the side of accepting programs that our delayed errors don't handle | |
30 | +correctly yet. | |
31 | + | |
32 | +## 4.0.7 (2017-02-02) | |
33 | + | |
34 | +### Bug fixes | |
35 | + | |
36 | +Accept invalidly rejected code like `(x).y = 2` again. | |
37 | + | |
38 | +Don't raise an error when a function _inside_ strict code has a | |
39 | +non-simple parameter list. | |
40 | + | |
41 | +## 4.0.6 (2017-02-02) | |
42 | + | |
43 | +### Bug fixes | |
44 | + | |
45 | +Fix exponential behavior (manifesting itself as a complete hang for | |
46 | +even relatively small source files) introduced by the new 'use strict' | |
47 | +check. | |
48 | + | |
49 | +## 4.0.5 (2017-02-02) | |
50 | + | |
51 | +### Bug fixes | |
52 | + | |
53 | +Disallow parenthesized pattern expressions. | |
54 | + | |
55 | +Allow keywords as export names. | |
56 | + | |
57 | +Don't allow the `async` keyword to be parenthesized. | |
58 | + | |
59 | +Properly raise an error when a keyword contains a character escape. | |
60 | + | |
61 | +Allow `"use strict"` to appear after other string literal expressions. | |
62 | + | |
63 | +Disallow labeled declarations. | |
64 | + | |
65 | +## 4.0.4 (2016-12-19) | |
66 | + | |
67 | +### Bug fixes | |
68 | + | |
69 | +Fix issue with loading acorn_loose.js with an AMD loader. | |
70 | + | |
71 | +Fix crash when `export` was followed by a keyword that can't be | |
72 | +exported. | |
73 | + | |
74 | +## 4.0.3 (2016-08-16) | |
75 | + | |
76 | +### Bug fixes | |
77 | + | |
78 | +Allow regular function declarations inside single-statement `if` | |
79 | +branches in loose mode. Forbid them entirely in strict mode. | |
80 | + | |
81 | +Properly parse properties named `async` in ES2017 mode. | |
82 | + | |
83 | +Fix bug where reserved words were broken in ES2017 mode. | |
84 | + | |
85 | +## 4.0.2 (2016-08-11) | |
86 | + | |
87 | +### Bug fixes | |
88 | + | |
89 | +Don't ignore period or 'e' characters after octal numbers. | |
90 | + | |
91 | +Fix broken parsing for call expressions in default parameter values | |
92 | +of arrow functions. | |
93 | + | |
94 | +## 4.0.1 (2016-08-08) | |
95 | + | |
96 | +### Bug fixes | |
97 | + | |
98 | +Fix false positives in duplicated export name errors. | |
99 | + | |
100 | +## 4.0.0 (2016-08-07) | |
101 | + | |
102 | +### Breaking changes | |
103 | + | |
104 | +The default `ecmaVersion` option value is now 7. | |
105 | + | |
106 | +A number of internal method signatures changed, so plugins might need | |
107 | +to be updated. | |
108 | + | |
109 | +### Bug fixes | |
110 | + | |
111 | +The parser now raises errors on duplicated export names. | |
112 | + | |
113 | +`arguments` and `eval` can now be used in shorthand properties. | |
114 | + | |
115 | +Duplicate parameter names in non-simple argument lists now always | |
116 | +produce an error. | |
117 | + | |
118 | +### New features | |
119 | + | |
120 | +The `ecmaVersion` option now also accepts year-style version numbers | |
121 | +(2015, etc). | |
122 | + | |
123 | +Support for `async`/`await` syntax when `ecmaVersion` is >= 8. | |
124 | + | |
125 | +Support for trailing commas in call expressions when `ecmaVersion` | |
126 | +is >= 8. | |
127 | + | |
128 | +## 3.3.0 (2016-07-25) | |
129 | + | |
130 | +### Bug fixes | |
131 | + | |
132 | +Fix bug in tokenizing of regexp operator after a function declaration. | |
133 | + | |
134 | +Fix parser crash when parsing an array pattern with a hole. | |
135 | + | |
136 | +### New features | |
137 | + | |
138 | +Implement check against complex argument lists in functions that | |
139 | +enable strict mode in ES7. | |
140 | + | |
141 | +## 3.2.0 (2016-06-07) | |
142 | + | |
143 | +### Bug fixes | |
144 | + | |
145 | +Improve handling of lack of unicode regexp support in host | |
146 | +environment. | |
147 | + | |
148 | +Properly reject shorthand properties whose name is a keyword. | |
149 | + | |
150 | +Don't crash when the loose parser is called without options object. | |
151 | + | |
152 | +### New features | |
153 | + | |
154 | +Visitors created with `visit.make` now have their base as _prototype_, | |
155 | +rather than copying properties into a fresh object. | |
156 | + | |
157 | +Make it possible to use `visit.ancestor` with a walk state. | |
158 | + | |
159 | +## 3.1.0 (2016-04-18) | |
160 | + | |
161 | +### Bug fixes | |
162 | + | |
163 | +Fix issue where the loose parser created invalid TemplateElement nodes | |
164 | +for unclosed template literals. | |
165 | + | |
166 | +Properly tokenize the division operator directly after a function | |
167 | +expression. | |
168 | + | |
169 | +Allow trailing comma in destructuring arrays. | |
170 | + | |
171 | +### New features | |
172 | + | |
173 | +The walker now allows defining handlers for `CatchClause` nodes. | |
174 | + | |
175 | +## 3.0.4 (2016-02-25) | |
176 | + | |
177 | +### Fixes | |
178 | + | |
179 | +Allow update expressions as left-hand-side of the ES7 exponential | |
180 | +operator. | |
181 | + | |
182 | +## 3.0.2 (2016-02-10) | |
183 | + | |
184 | +### Fixes | |
185 | + | |
186 | +Fix bug that accidentally made `undefined` a reserved word when | |
187 | +parsing ES7. | |
188 | + | |
189 | +## 3.0.0 (2016-02-10) | |
190 | + | |
191 | +### Breaking changes | |
192 | + | |
193 | +The default value of the `ecmaVersion` option is now 6 (used to be 5). | |
194 | + | |
195 | +Support for comprehension syntax (which was dropped from the draft | |
196 | +spec) has been removed. | |
197 | + | |
198 | +### Fixes | |
199 | + | |
200 | +`let` and `yield` are now “contextual keywords”, meaning you can | |
201 | +mostly use them as identifiers in ES5 non-strict code. | |
202 | + | |
203 | +A parenthesized class or function expression after `export default` is | |
204 | +now parsed correctly. | |
205 | + | |
206 | +### New features | |
207 | + | |
208 | +When `ecmaVersion` is set to 7, Acorn will parse the exponentiation | |
209 | +operator (`**`). | |
210 | + | |
211 | +The identifier character ranges are now based on Unicode 8.0.0. | |
212 | + | |
213 | +Plugins can now override the `raiseRecoverable` method to override the | |
214 | +way non-critical errors are handled. | |
215 | + | |
216 | +## 2.7.0 (2016-01-04) | |
217 | + | |
218 | +### Fixes | |
219 | + | |
220 | +Stop allowing rest parameters in setters. | |
221 | + | |
222 | +Make sure the loose parser always attaches a `local` property to | |
223 | +`ImportNamespaceSpecifier` nodes. | |
224 | + | |
225 | +Disallow `y` rexexp flag in ES5. | |
226 | + | |
227 | +Disallow `\00` and `\000` escapes in strict mode. | |
228 | + | |
229 | +Raise an error when an import name is a reserved word. | |
230 | + | |
231 | +## 2.6.4 (2015-11-12) | |
232 | + | |
233 | +### Fixes | |
234 | + | |
235 | +Fix crash in loose parser when parsing invalid object pattern. | |
236 | + | |
237 | +### New features | |
238 | + | |
239 | +Support plugins in the loose parser. | |
240 | + | |
241 | +## 2.6.2 (2015-11-10) | |
242 | + | |
243 | +### Fixes | |
244 | + | |
245 | +Don't crash when no options object is passed. | |
246 | + | |
247 | +## 2.6.0 (2015-11-09) | |
248 | + | |
249 | +### Fixes | |
250 | + | |
251 | +Add `await` as a reserved word in module sources. | |
252 | + | |
253 | +Disallow `yield` in a parameter default value for a generator. | |
254 | + | |
255 | +Forbid using a comma after a rest pattern in an array destructuring. | |
256 | + | |
257 | +### New features | |
258 | + | |
259 | +Support parsing stdin in command-line tool. | |
260 | + | |
261 | +## 2.5.2 (2015-10-27) | |
262 | + | |
263 | +### Fixes | |
264 | + | |
265 | +Fix bug where the walker walked an exported `let` statement as an | |
266 | +expression. | |
267 | + | |
268 | +## 2.5.0 (2015-10-27) | |
269 | + | |
270 | +### Fixes | |
271 | + | |
272 | +Fix tokenizer support in the command-line tool. | |
273 | + | |
274 | +In the loose parser, don't allow non-string-literals as import | |
275 | +sources. | |
276 | + | |
277 | +Stop allowing `new.target` outside of functions. | |
278 | + | |
279 | +Remove legacy `guard` and `guardedHandler` properties from try nodes. | |
280 | + | |
281 | +Stop allowing multiple `__proto__` properties on an object literal in | |
282 | +strict mode. | |
283 | + | |
284 | +Don't allow rest parameters to be non-identifier patterns. | |
285 | + | |
286 | +Check for duplicate paramter names in arrow functions. | ... | ... |
node_modules/acorn-dynamic-import/node_modules/acorn/LICENSE
0 → 100644
1 | +Copyright (C) 2012-2016 by various contributors (see AUTHORS) | |
2 | + | |
3 | +Permission is hereby granted, free of charge, to any person obtaining a copy | |
4 | +of this software and associated documentation files (the "Software"), to deal | |
5 | +in the Software without restriction, including without limitation the rights | |
6 | +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
7 | +copies of the Software, and to permit persons to whom the Software is | |
8 | +furnished to do so, subject to the following conditions: | |
9 | + | |
10 | +The above copyright notice and this permission notice shall be included in | |
11 | +all copies or substantial portions of the Software. | |
12 | + | |
13 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
14 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
15 | +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
16 | +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
17 | +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
18 | +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
19 | +THE SOFTWARE. | ... | ... |
node_modules/acorn-dynamic-import/node_modules/acorn/README.md
0 → 100644
1 | +# Acorn | |
2 | + | |
3 | +[](https://travis-ci.org/ternjs/acorn) | |
4 | +[](https://www.npmjs.com/package/acorn) | |
5 | +[](https://cdnjs.com/libraries/acorn) | |
6 | +[Author funding status: ](https://marijnhaverbeke.nl/fund/) | |
7 | + | |
8 | +A tiny, fast JavaScript parser, written completely in JavaScript. | |
9 | + | |
10 | +## Community | |
11 | + | |
12 | +Acorn is open source software released under an | |
13 | +[MIT license](https://github.com/ternjs/acorn/blob/master/LICENSE). | |
14 | + | |
15 | +You are welcome to | |
16 | +[report bugs](https://github.com/ternjs/acorn/issues) or create pull | |
17 | +requests on [github](https://github.com/ternjs/acorn). For questions | |
18 | +and discussion, please use the | |
19 | +[Tern discussion forum](https://discuss.ternjs.net). | |
20 | + | |
21 | +## Installation | |
22 | + | |
23 | +The easiest way to install acorn is with [`npm`][npm]. | |
24 | + | |
25 | +[npm]: https://www.npmjs.com/ | |
26 | + | |
27 | +```sh | |
28 | +npm install acorn | |
29 | +``` | |
30 | + | |
31 | +Alternately, download the source. | |
32 | + | |
33 | +```sh | |
34 | +git clone https://github.com/ternjs/acorn.git | |
35 | +``` | |
36 | + | |
37 | +## Components | |
38 | + | |
39 | +When run in a CommonJS (node.js) or AMD environment, exported values | |
40 | +appear in the interfaces exposed by the individual files, as usual. | |
41 | +When loaded in the browser (Acorn works in any JS-enabled browser more | |
42 | +recent than IE5) without any kind of module management, a single | |
43 | +global object `acorn` will be defined, and all the exported properties | |
44 | +will be added to that. | |
45 | + | |
46 | +### Main parser | |
47 | + | |
48 | +This is implemented in `dist/acorn.js`, and is what you get when you | |
49 | +`require("acorn")` in node.js. | |
50 | + | |
51 | +**parse**`(input, options)` is used to parse a JavaScript program. | |
52 | +The `input` parameter is a string, `options` can be undefined or an | |
53 | +object setting some of the options listed below. The return value will | |
54 | +be an abstract syntax tree object as specified by the | |
55 | +[ESTree spec][estree]. | |
56 | + | |
57 | +When encountering a syntax error, the parser will raise a | |
58 | +`SyntaxError` object with a meaningful message. The error object will | |
59 | +have a `pos` property that indicates the character offset at which the | |
60 | +error occurred, and a `loc` object that contains a `{line, column}` | |
61 | +object referring to that same position. | |
62 | + | |
63 | +[estree]: https://github.com/estree/estree | |
64 | + | |
65 | +- **ecmaVersion**: Indicates the ECMAScript version to parse. Must be | |
66 | + either 3, 5, 6 (2015), 7 (2016), or 8 (2017). This influences support for strict | |
67 | + mode, the set of reserved words, and support for new syntax features. | |
68 | + Default is 7. | |
69 | + | |
70 | + **NOTE**: Only 'stage 4' (finalized) ECMAScript features are being | |
71 | + implemented by Acorn. | |
72 | + | |
73 | +- **sourceType**: Indicate the mode the code should be parsed in. Can be | |
74 | + either `"script"` or `"module"`. This influences global strict mode | |
75 | + and parsing of `import` and `export` declarations. | |
76 | + | |
77 | +- **onInsertedSemicolon**: If given a callback, that callback will be | |
78 | + called whenever a missing semicolon is inserted by the parser. The | |
79 | + callback will be given the character offset of the point where the | |
80 | + semicolon is inserted as argument, and if `locations` is on, also a | |
81 | + `{line, column}` object representing this position. | |
82 | + | |
83 | +- **onTrailingComma**: Like `onInsertedSemicolon`, but for trailing | |
84 | + commas. | |
85 | + | |
86 | +- **allowReserved**: If `false`, using a reserved word will generate | |
87 | + an error. Defaults to `true` for `ecmaVersion` 3, `false` for higher | |
88 | + versions. When given the value `"never"`, reserved words and | |
89 | + keywords can also not be used as property names (as in Internet | |
90 | + Explorer's old parser). | |
91 | + | |
92 | +- **allowReturnOutsideFunction**: By default, a return statement at | |
93 | + the top level raises an error. Set this to `true` to accept such | |
94 | + code. | |
95 | + | |
96 | +- **allowImportExportEverywhere**: By default, `import` and `export` | |
97 | + declarations can only appear at a program's top level. Setting this | |
98 | + option to `true` allows them anywhere where a statement is allowed. | |
99 | + | |
100 | +- **allowHashBang**: When this is enabled (off by default), if the | |
101 | + code starts with the characters `#!` (as in a shellscript), the | |
102 | + first line will be treated as a comment. | |
103 | + | |
104 | +- **locations**: When `true`, each node has a `loc` object attached | |
105 | + with `start` and `end` subobjects, each of which contains the | |
106 | + one-based line and zero-based column numbers in `{line, column}` | |
107 | + form. Default is `false`. | |
108 | + | |
109 | +- **onToken**: If a function is passed for this option, each found | |
110 | + token will be passed in same format as tokens returned from | |
111 | + `tokenizer().getToken()`. | |
112 | + | |
113 | + If array is passed, each found token is pushed to it. | |
114 | + | |
115 | + Note that you are not allowed to call the parser from the | |
116 | + callback—that will corrupt its internal state. | |
117 | + | |
118 | +- **onComment**: If a function is passed for this option, whenever a | |
119 | + comment is encountered the function will be called with the | |
120 | + following parameters: | |
121 | + | |
122 | + - `block`: `true` if the comment is a block comment, false if it | |
123 | + is a line comment. | |
124 | + - `text`: The content of the comment. | |
125 | + - `start`: Character offset of the start of the comment. | |
126 | + - `end`: Character offset of the end of the comment. | |
127 | + | |
128 | + When the `locations` options is on, the `{line, column}` locations | |
129 | + of the comment’s start and end are passed as two additional | |
130 | + parameters. | |
131 | + | |
132 | + If array is passed for this option, each found comment is pushed | |
133 | + to it as object in Esprima format: | |
134 | + | |
135 | + ```javascript | |
136 | + { | |
137 | + "type": "Line" | "Block", | |
138 | + "value": "comment text", | |
139 | + "start": Number, | |
140 | + "end": Number, | |
141 | + // If `locations` option is on: | |
142 | + "loc": { | |
143 | + "start": {line: Number, column: Number} | |
144 | + "end": {line: Number, column: Number} | |
145 | + }, | |
146 | + // If `ranges` option is on: | |
147 | + "range": [Number, Number] | |
148 | + } | |
149 | + ``` | |
150 | + | |
151 | + Note that you are not allowed to call the parser from the | |
152 | + callback—that will corrupt its internal state. | |
153 | + | |
154 | +- **ranges**: Nodes have their start and end characters offsets | |
155 | + recorded in `start` and `end` properties (directly on the node, | |
156 | + rather than the `loc` object, which holds line/column data. To also | |
157 | + add a [semi-standardized][range] `range` property holding a | |
158 | + `[start, end]` array with the same numbers, set the `ranges` option | |
159 | + to `true`. | |
160 | + | |
161 | +- **program**: It is possible to parse multiple files into a single | |
162 | + AST by passing the tree produced by parsing the first file as the | |
163 | + `program` option in subsequent parses. This will add the toplevel | |
164 | + forms of the parsed file to the "Program" (top) node of an existing | |
165 | + parse tree. | |
166 | + | |
167 | +- **sourceFile**: When the `locations` option is `true`, you can pass | |
168 | + this option to add a `source` attribute in every node’s `loc` | |
169 | + object. Note that the contents of this option are not examined or | |
170 | + processed in any way; you are free to use whatever format you | |
171 | + choose. | |
172 | + | |
173 | +- **directSourceFile**: Like `sourceFile`, but a `sourceFile` property | |
174 | + will be added (regardless of the `location` option) directly to the | |
175 | + nodes, rather than the `loc` object. | |
176 | + | |
177 | +- **preserveParens**: If this option is `true`, parenthesized expressions | |
178 | + are represented by (non-standard) `ParenthesizedExpression` nodes | |
179 | + that have a single `expression` property containing the expression | |
180 | + inside parentheses. | |
181 | + | |
182 | +[range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678 | |
183 | + | |
184 | +**parseExpressionAt**`(input, offset, options)` will parse a single | |
185 | +expression in a string, and return its AST. It will not complain if | |
186 | +there is more of the string left after the expression. | |
187 | + | |
188 | +**getLineInfo**`(input, offset)` can be used to get a `{line, | |
189 | +column}` object for a given program string and character offset. | |
190 | + | |
191 | +**tokenizer**`(input, options)` returns an object with a `getToken` | |
192 | +method that can be called repeatedly to get the next token, a `{start, | |
193 | +end, type, value}` object (with added `loc` property when the | |
194 | +`locations` option is enabled and `range` property when the `ranges` | |
195 | +option is enabled). When the token's type is `tokTypes.eof`, you | |
196 | +should stop calling the method, since it will keep returning that same | |
197 | +token forever. | |
198 | + | |
199 | +In ES6 environment, returned result can be used as any other | |
200 | +protocol-compliant iterable: | |
201 | + | |
202 | +```javascript | |
203 | +for (let token of acorn.tokenizer(str)) { | |
204 | + // iterate over the tokens | |
205 | +} | |
206 | + | |
207 | +// transform code to array of tokens: | |
208 | +var tokens = [...acorn.tokenizer(str)]; | |
209 | +``` | |
210 | + | |
211 | +**tokTypes** holds an object mapping names to the token type objects | |
212 | +that end up in the `type` properties of tokens. | |
213 | + | |
214 | +#### Note on using with [Escodegen][escodegen] | |
215 | + | |
216 | +Escodegen supports generating comments from AST, attached in | |
217 | +Esprima-specific format. In order to simulate same format in | |
218 | +Acorn, consider following example: | |
219 | + | |
220 | +```javascript | |
221 | +var comments = [], tokens = []; | |
222 | + | |
223 | +var ast = acorn.parse('var x = 42; // answer', { | |
224 | + // collect ranges for each node | |
225 | + ranges: true, | |
226 | + // collect comments in Esprima's format | |
227 | + onComment: comments, | |
228 | + // collect token ranges | |
229 | + onToken: tokens | |
230 | +}); | |
231 | + | |
232 | +// attach comments using collected information | |
233 | +escodegen.attachComments(ast, comments, tokens); | |
234 | + | |
235 | +// generate code | |
236 | +console.log(escodegen.generate(ast, {comment: true})); | |
237 | +// > 'var x = 42; // answer' | |
238 | +``` | |
239 | + | |
240 | +[escodegen]: https://github.com/estools/escodegen | |
241 | + | |
242 | +### dist/acorn_loose.js ### | |
243 | + | |
244 | +This file implements an error-tolerant parser. It exposes a single | |
245 | +function. The loose parser is accessible in node.js via `require("acorn/dist/acorn_loose")`. | |
246 | + | |
247 | +**parse_dammit**`(input, options)` takes the same arguments and | |
248 | +returns the same syntax tree as the `parse` function in `acorn.js`, | |
249 | +but never raises an error, and will do its best to parse syntactically | |
250 | +invalid code in as meaningful a way as it can. It'll insert identifier | |
251 | +nodes with name `"✖"` as placeholders in places where it can't make | |
252 | +sense of the input. Depends on `acorn.js`, because it uses the same | |
253 | +tokenizer. | |
254 | + | |
255 | +### dist/walk.js ### | |
256 | + | |
257 | +Implements an abstract syntax tree walker. Will store its interface in | |
258 | +`acorn.walk` when loaded without a module system. | |
259 | + | |
260 | +**simple**`(node, visitors, base, state)` does a 'simple' walk over | |
261 | +a tree. `node` should be the AST node to walk, and `visitors` an | |
262 | +object with properties whose names correspond to node types in the | |
263 | +[ESTree spec][estree]. The properties should contain functions | |
264 | +that will be called with the node object and, if applicable the state | |
265 | +at that point. The last two arguments are optional. `base` is a walker | |
266 | +algorithm, and `state` is a start state. The default walker will | |
267 | +simply visit all statements and expressions and not produce a | |
268 | +meaningful state. (An example of a use of state is to track scope at | |
269 | +each point in the tree.) | |
270 | + | |
271 | +**ancestor**`(node, visitors, base, state)` does a 'simple' walk over | |
272 | +a tree, building up an array of ancestor nodes (including the current node) | |
273 | +and passing the array to the callbacks as a third parameter. | |
274 | + | |
275 | +**recursive**`(node, state, functions, base)` does a 'recursive' | |
276 | +walk, where the walker functions are responsible for continuing the | |
277 | +walk on the child nodes of their target node. `state` is the start | |
278 | +state, and `functions` should contain an object that maps node types | |
279 | +to walker functions. Such functions are called with `(node, state, c)` | |
280 | +arguments, and can cause the walk to continue on a sub-node by calling | |
281 | +the `c` argument on it with `(node, state)` arguments. The optional | |
282 | +`base` argument provides the fallback walker functions for node types | |
283 | +that aren't handled in the `functions` object. If not given, the | |
284 | +default walkers will be used. | |
285 | + | |
286 | +**make**`(functions, base)` builds a new walker object by using the | |
287 | +walker functions in `functions` and filling in the missing ones by | |
288 | +taking defaults from `base`. | |
289 | + | |
290 | +**findNodeAt**`(node, start, end, test, base, state)` tries to | |
291 | +locate a node in a tree at the given start and/or end offsets, which | |
292 | +satisfies the predicate `test`. `start` and `end` can be either `null` | |
293 | +(as wildcard) or a number. `test` may be a string (indicating a node | |
294 | +type) or a function that takes `(nodeType, node)` arguments and | |
295 | +returns a boolean indicating whether this node is interesting. `base` | |
296 | +and `state` are optional, and can be used to specify a custom walker. | |
297 | +Nodes are tested from inner to outer, so if two nodes match the | |
298 | +boundaries, the inner one will be preferred. | |
299 | + | |
300 | +**findNodeAround**`(node, pos, test, base, state)` is a lot like | |
301 | +`findNodeAt`, but will match any node that exists 'around' (spanning) | |
302 | +the given position. | |
303 | + | |
304 | +**findNodeAfter**`(node, pos, test, base, state)` is similar to | |
305 | +`findNodeAround`, but will match all nodes *after* the given position | |
306 | +(testing outer nodes before inner nodes). | |
307 | + | |
308 | +## Command line interface | |
309 | + | |
310 | +The `bin/acorn` utility can be used to parse a file from the command | |
311 | +line. It accepts as arguments its input file and the following | |
312 | +options: | |
313 | + | |
314 | +- `--ecma3|--ecma5|--ecma6|--ecma7`: Sets the ECMAScript version to parse. Default is | |
315 | + version 5. | |
316 | + | |
317 | +- `--module`: Sets the parsing mode to `"module"`. Is set to `"script"` otherwise. | |
318 | + | |
319 | +- `--locations`: Attaches a "loc" object to each node with "start" and | |
320 | + "end" subobjects, each of which contains the one-based line and | |
321 | + zero-based column numbers in `{line, column}` form. | |
322 | + | |
323 | +- `--allow-hash-bang`: If the code starts with the characters #! (as in a shellscript), the first line will be treated as a comment. | |
324 | + | |
325 | +- `--compact`: No whitespace is used in the AST output. | |
326 | + | |
327 | +- `--silent`: Do not output the AST, just return the exit status. | |
328 | + | |
329 | +- `--help`: Print the usage information and quit. | |
330 | + | |
331 | +The utility spits out the syntax tree as JSON data. | |
332 | + | |
333 | +## Build system | |
334 | + | |
335 | +Acorn is written in ECMAScript 6, as a set of small modules, in the | |
336 | +project's `src` directory, and compiled down to bigger ECMAScript 3 | |
337 | +files in `dist` using [Browserify](http://browserify.org) and | |
338 | +[Babel](http://babeljs.io/). If you are already using Babel, you can | |
339 | +consider including the modules directly. | |
340 | + | |
341 | +The command-line test runner (`npm test`) uses the ES6 modules. The | |
342 | +browser-based test page (`test/index.html`) uses the compiled modules. | |
343 | +The `bin/build-acorn.js` script builds the latter from the former. | |
344 | + | |
345 | +If you are working on Acorn, you'll probably want to try the code out | |
346 | +directly, without an intermediate build step. In your scripts, you can | |
347 | +register the Babel require shim like this: | |
348 | + | |
349 | + require("babel-core/register") | |
350 | + | |
351 | +That will allow you to directly `require` the ES6 modules. | |
352 | + | |
353 | +## Plugins | |
354 | + | |
355 | +Acorn is designed support allow plugins which, within reasonable | |
356 | +bounds, redefine the way the parser works. Plugins can add new token | |
357 | +types and new tokenizer contexts (if necessary), and extend methods in | |
358 | +the parser object. This is not a clean, elegant API—using it requires | |
359 | +an understanding of Acorn's internals, and plugins are likely to break | |
360 | +whenever those internals are significantly changed. But still, it is | |
361 | +_possible_, in this way, to create parsers for JavaScript dialects | |
362 | +without forking all of Acorn. And in principle it is even possible to | |
363 | +combine such plugins, so that if you have, for example, a plugin for | |
364 | +parsing types and a plugin for parsing JSX-style XML literals, you | |
365 | +could load them both and parse code with both JSX tags and types. | |
366 | + | |
367 | +A plugin should register itself by adding a property to | |
368 | +`acorn.plugins`, which holds a function. Calling `acorn.parse`, a | |
369 | +`plugins` option can be passed, holding an object mapping plugin names | |
370 | +to configuration values (or just `true` for plugins that don't take | |
371 | +options). After the parser object has been created, the initialization | |
372 | +functions for the chosen plugins are called with `(parser, | |
373 | +configValue)` arguments. They are expected to use the `parser.extend` | |
374 | +method to extend parser methods. For example, the `readToken` method | |
375 | +could be extended like this: | |
376 | + | |
377 | +```javascript | |
378 | +parser.extend("readToken", function(nextMethod) { | |
379 | + return function(code) { | |
380 | + console.log("Reading a token!") | |
381 | + return nextMethod.call(this, code) | |
382 | + } | |
383 | +}) | |
384 | +``` | |
385 | + | |
386 | +The `nextMethod` argument passed to `extend`'s second argument is the | |
387 | +previous value of this method, and should usually be called through to | |
388 | +whenever the extended method does not handle the call itself. | |
389 | + | |
390 | +Similarly, the loose parser allows plugins to register themselves via | |
391 | +`acorn.pluginsLoose`. The extension mechanism is the same as for the | |
392 | +normal parser: | |
393 | + | |
394 | +```javascript | |
395 | +looseParser.extend("readToken", function(nextMethod) { | |
396 | + return function() { | |
397 | + console.log("Reading a token in the loose parser!") | |
398 | + return nextMethod.call(this) | |
399 | + } | |
400 | +}) | |
401 | +``` | |
402 | + | |
403 | +### Existing plugins | |
404 | + | |
405 | + - [`acorn-jsx`](https://github.com/RReverser/acorn-jsx): Parse [Facebook JSX syntax extensions](https://github.com/facebook/jsx) | |
406 | + - [`acorn-es7-plugin`](https://github.com/MatAtBread/acorn-es7-plugin/): Parse [async/await syntax proposal](https://github.com/tc39/ecmascript-asyncawait) | |
407 | + - [`acorn-object-spread`](https://github.com/UXtemple/acorn-object-spread): Parse [object spread syntax proposal](https://github.com/sebmarkbage/ecmascript-rest-spread) | |
408 | + - [`acorn-es7`](https://www.npmjs.com/package/acorn-es7): Parse [decorator syntax proposal](https://github.com/wycats/javascript-decorators) | |
409 | + - [`acorn-objj`](https://www.npmjs.com/package/acorn-objj): [Objective-J](http://www.cappuccino-project.org/learn/objective-j.html) language parser built as Acorn plugin | ... | ... |
node_modules/acorn-dynamic-import/node_modules/acorn/bin/acorn
0 → 100755
1 | +#!/usr/bin/env node | |
2 | +'use strict'; | |
3 | + | |
4 | +var path = require('path'); | |
5 | +var fs = require('fs'); | |
6 | +var acorn = require('../dist/acorn.js'); | |
7 | + | |
8 | +var infile; | |
9 | +var forceFile; | |
10 | +var silent = false; | |
11 | +var compact = false; | |
12 | +var tokenize = false; | |
13 | +var options = {} | |
14 | + | |
15 | +function help(status) { | |
16 | + var print = (status == 0) ? console.log : console.error | |
17 | + print("usage: " + path.basename(process.argv[1]) + " [--ecma3|--ecma5|--ecma6|--ecma7|...|--ecma2015|--ecma2016|...]") | |
18 | + print(" [--tokenize] [--locations] [---allow-hash-bang] [--compact] [--silent] [--module] [--help] [--] [infile]") | |
19 | + process.exit(status) | |
20 | +} | |
21 | + | |
22 | +for (var i = 2; i < process.argv.length; ++i) { | |
23 | + var arg = process.argv[i] | |
24 | + if ((arg == "-" || arg[0] != "-") && !infile) infile = arg | |
25 | + else if (arg == "--" && !infile && i + 2 == process.argv.length) forceFile = infile = process.argv[++i] | |
26 | + else if (arg == "--locations") options.locations = true | |
27 | + else if (arg == "--allow-hash-bang") options.allowHashBang = true | |
28 | + else if (arg == "--silent") silent = true | |
29 | + else if (arg == "--compact") compact = true | |
30 | + else if (arg == "--help") help(0) | |
31 | + else if (arg == "--tokenize") tokenize = true | |
32 | + else if (arg == "--module") options.sourceType = 'module' | |
33 | + else { | |
34 | + var match = arg.match(/^--ecma(\d+)$/) | |
35 | + if (match) | |
36 | + options.ecmaVersion = +match[1] | |
37 | + else | |
38 | + help(1) | |
39 | + } | |
40 | +} | |
41 | + | |
42 | +function run(code) { | |
43 | + var result | |
44 | + if (!tokenize) { | |
45 | + try { result = acorn.parse(code, options) } | |
46 | + catch(e) { console.error(e.message); process.exit(1) } | |
47 | + } else { | |
48 | + result = [] | |
49 | + var tokenizer = acorn.tokenizer(code, options), token | |
50 | + while (true) { | |
51 | + try { token = tokenizer.getToken() } | |
52 | + catch(e) { console.error(e.message); process.exit(1) } | |
53 | + result.push(token) | |
54 | + if (token.type == acorn.tokTypes.eof) break | |
55 | + } | |
56 | + } | |
57 | + if (!silent) console.log(JSON.stringify(result, null, compact ? null : 2)) | |
58 | +} | |
59 | + | |
60 | +if (forceFile || infile && infile != "-") { | |
61 | + run(fs.readFileSync(infile, "utf8")) | |
62 | +} else { | |
63 | + var code = "" | |
64 | + process.stdin.resume() | |
65 | + process.stdin.on("data", function (chunk) { return code += chunk; }) | |
66 | + process.stdin.on("end", function () { return run(code); }) | |
67 | +} | |
0 | 68 | \ No newline at end of file | ... | ... |
node_modules/acorn-dynamic-import/node_modules/acorn/dist/.keep
0 → 100644
node_modules/acorn-dynamic-import/node_modules/acorn/dist/acorn.es.js
0 → 100644
1 | +// Reserved word lists for various dialects of the language | |
2 | + | |
3 | +var reservedWords = { | |
4 | + 3: "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile", | |
5 | + 5: "class enum extends super const export import", | |
6 | + 6: "enum", | |
7 | + strict: "implements interface let package private protected public static yield", | |
8 | + strictBind: "eval arguments" | |
9 | +} | |
10 | + | |
11 | +// And the keywords | |
12 | + | |
13 | +var ecma5AndLessKeywords = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this" | |
14 | + | |
15 | +var keywords = { | |
16 | + 5: ecma5AndLessKeywords, | |
17 | + 6: ecma5AndLessKeywords + " const class extends export import super" | |
18 | +} | |
19 | + | |
20 | +// ## Character categories | |
21 | + | |
22 | +// Big ugly regular expressions that match characters in the | |
23 | +// whitespace, identifier, and identifier-start categories. These | |
24 | +// are only applied when a character is found to actually have a | |
25 | +// code point above 128. | |
26 | +// Generated by `bin/generate-identifier-regex.js`. | |
27 | + | |
28 | +var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0-\u08b4\u08b6-\u08bd\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fd5\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ae\ua7b0-\ua7b7\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab65\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc" | |
29 | +var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d4-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d01-\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2-\u1cf4\u1cf8\u1cf9\u1dc0-\u1df5\u1dfb-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua900-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f" | |
30 | + | |
31 | +var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]") | |
32 | +var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]") | |
33 | + | |
34 | +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null | |
35 | + | |
36 | +// These are a run-length and offset encoded representation of the | |
37 | +// >0xffff code points that are a valid part of identifiers. The | |
38 | +// offset starts at 0x10000, and each pair of numbers represents an | |
39 | +// offset to the next range, and then a size of the range. They were | |
40 | +// generated by bin/generate-identifier-regex.js | |
41 | +var astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541] | |
42 | +var astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239] | |
43 | + | |
44 | +// This has a complexity linear to the value of the code. The | |
45 | +// assumption is that looking up astral identifier characters is | |
46 | +// rare. | |
47 | +function isInAstralSet(code, set) { | |
48 | + var pos = 0x10000 | |
49 | + for (var i = 0; i < set.length; i += 2) { | |
50 | + pos += set[i] | |
51 | + if (pos > code) return false | |
52 | + pos += set[i + 1] | |
53 | + if (pos >= code) return true | |
54 | + } | |
55 | +} | |
56 | + | |
57 | +// Test whether a given character code starts an identifier. | |
58 | + | |
59 | +function isIdentifierStart(code, astral) { | |
60 | + if (code < 65) return code === 36 | |
61 | + if (code < 91) return true | |
62 | + if (code < 97) return code === 95 | |
63 | + if (code < 123) return true | |
64 | + if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) | |
65 | + if (astral === false) return false | |
66 | + return isInAstralSet(code, astralIdentifierStartCodes) | |
67 | +} | |
68 | + | |
69 | +// Test whether a given character is part of an identifier. | |
70 | + | |
71 | +function isIdentifierChar(code, astral) { | |
72 | + if (code < 48) return code === 36 | |
73 | + if (code < 58) return true | |
74 | + if (code < 65) return false | |
75 | + if (code < 91) return true | |
76 | + if (code < 97) return code === 95 | |
77 | + if (code < 123) return true | |
78 | + if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) | |
79 | + if (astral === false) return false | |
80 | + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes) | |
81 | +} | |
82 | + | |
83 | +// ## Token types | |
84 | + | |
85 | +// The assignment of fine-grained, information-carrying type objects | |
86 | +// allows the tokenizer to store the information it has about a | |
87 | +// token in a way that is very cheap for the parser to look up. | |
88 | + | |
89 | +// All token type variables start with an underscore, to make them | |
90 | +// easy to recognize. | |
91 | + | |
92 | +// The `beforeExpr` property is used to disambiguate between regular | |
93 | +// expressions and divisions. It is set on all token types that can | |
94 | +// be followed by an expression (thus, a slash after them would be a | |
95 | +// regular expression). | |
96 | +// | |
97 | +// The `startsExpr` property is used to check if the token ends a | |
98 | +// `yield` expression. It is set on all token types that either can | |
99 | +// directly start an expression (like a quotation mark) or can | |
100 | +// continue an expression (like the body of a string). | |
101 | +// | |
102 | +// `isLoop` marks a keyword as starting a loop, which is important | |
103 | +// to know when parsing a label, in order to allow or disallow | |
104 | +// continue jumps to that label. | |
105 | + | |
106 | +var TokenType = function TokenType(label, conf) { | |
107 | + if ( conf === void 0 ) conf = {}; | |
108 | + | |
109 | + this.label = label | |
110 | + this.keyword = conf.keyword | |
111 | + this.beforeExpr = !!conf.beforeExpr | |
112 | + this.startsExpr = !!conf.startsExpr | |
113 | + this.isLoop = !!conf.isLoop | |
114 | + this.isAssign = !!conf.isAssign | |
115 | + this.prefix = !!conf.prefix | |
116 | + this.postfix = !!conf.postfix | |
117 | + this.binop = conf.binop || null | |
118 | + this.updateContext = null | |
119 | +}; | |
120 | + | |
121 | +function binop(name, prec) { | |
122 | + return new TokenType(name, {beforeExpr: true, binop: prec}) | |
123 | +} | |
124 | +var beforeExpr = {beforeExpr: true}; | |
125 | +var startsExpr = {startsExpr: true}; | |
126 | +// Map keyword names to token types. | |
127 | + | |
128 | +var keywordTypes = {} | |
129 | + | |
130 | +// Succinct definitions of keyword token types | |
131 | +function kw(name, options) { | |
132 | + if ( options === void 0 ) options = {}; | |
133 | + | |
134 | + options.keyword = name | |
135 | + return keywordTypes[name] = new TokenType(name, options) | |
136 | +} | |
137 | + | |
138 | +var tt = { | |
139 | + num: new TokenType("num", startsExpr), | |
140 | + regexp: new TokenType("regexp", startsExpr), | |
141 | + string: new TokenType("string", startsExpr), | |
142 | + name: new TokenType("name", startsExpr), | |
143 | + eof: new TokenType("eof"), | |
144 | + | |
145 | + // Punctuation token types. | |
146 | + bracketL: new TokenType("[", {beforeExpr: true, startsExpr: true}), | |
147 | + bracketR: new TokenType("]"), | |
148 | + braceL: new TokenType("{", {beforeExpr: true, startsExpr: true}), | |
149 | + braceR: new TokenType("}"), | |
150 | + parenL: new TokenType("(", {beforeExpr: true, startsExpr: true}), | |
151 | + parenR: new TokenType(")"), | |
152 | + comma: new TokenType(",", beforeExpr), | |
153 | + semi: new TokenType(";", beforeExpr), | |
154 | + colon: new TokenType(":", beforeExpr), | |
155 | + dot: new TokenType("."), | |
156 | + question: new TokenType("?", beforeExpr), | |
157 | + arrow: new TokenType("=>", beforeExpr), | |
158 | + template: new TokenType("template"), | |
159 | + ellipsis: new TokenType("...", beforeExpr), | |
160 | + backQuote: new TokenType("`", startsExpr), | |
161 | + dollarBraceL: new TokenType("${", {beforeExpr: true, startsExpr: true}), | |
162 | + | |
163 | + // Operators. These carry several kinds of properties to help the | |
164 | + // parser use them properly (the presence of these properties is | |
165 | + // what categorizes them as operators). | |
166 | + // | |
167 | + // `binop`, when present, specifies that this operator is a binary | |
168 | + // operator, and will refer to its precedence. | |
169 | + // | |
170 | + // `prefix` and `postfix` mark the operator as a prefix or postfix | |
171 | + // unary operator. | |
172 | + // | |
173 | + // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as | |
174 | + // binary operators with a very low precedence, that should result | |
175 | + // in AssignmentExpression nodes. | |
176 | + | |
177 | + eq: new TokenType("=", {beforeExpr: true, isAssign: true}), | |
178 | + assign: new TokenType("_=", {beforeExpr: true, isAssign: true}), | |
179 | + incDec: new TokenType("++/--", {prefix: true, postfix: true, startsExpr: true}), | |
180 | + prefix: new TokenType("prefix", {beforeExpr: true, prefix: true, startsExpr: true}), | |
181 | + logicalOR: binop("||", 1), | |
182 | + logicalAND: binop("&&", 2), | |
183 | + bitwiseOR: binop("|", 3), | |
184 | + bitwiseXOR: binop("^", 4), | |
185 | + bitwiseAND: binop("&", 5), | |
186 | + equality: binop("==/!=", 6), | |
187 | + relational: binop("</>", 7), | |
188 | + bitShift: binop("<</>>", 8), | |
189 | + plusMin: new TokenType("+/-", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}), | |
190 | + modulo: binop("%", 10), | |
191 | + star: binop("*", 10), | |
192 | + slash: binop("/", 10), | |
193 | + starstar: new TokenType("**", {beforeExpr: true}), | |
194 | + | |
195 | + // Keyword token types. | |
196 | + _break: kw("break"), | |
197 | + _case: kw("case", beforeExpr), | |
198 | + _catch: kw("catch"), | |
199 | + _continue: kw("continue"), | |
200 | + _debugger: kw("debugger"), | |
201 | + _default: kw("default", beforeExpr), | |
202 | + _do: kw("do", {isLoop: true, beforeExpr: true}), | |
203 | + _else: kw("else", beforeExpr), | |
204 | + _finally: kw("finally"), | |
205 | + _for: kw("for", {isLoop: true}), | |
206 | + _function: kw("function", startsExpr), | |
207 | + _if: kw("if"), | |
208 | + _return: kw("return", beforeExpr), | |
209 | + _switch: kw("switch"), | |
210 | + _throw: kw("throw", beforeExpr), | |
211 | + _try: kw("try"), | |
212 | + _var: kw("var"), | |
213 | + _const: kw("const"), | |
214 | + _while: kw("while", {isLoop: true}), | |
215 | + _with: kw("with"), | |
216 | + _new: kw("new", {beforeExpr: true, startsExpr: true}), | |
217 | + _this: kw("this", startsExpr), | |
218 | + _super: kw("super", startsExpr), | |
219 | + _class: kw("class"), | |
220 | + _extends: kw("extends", beforeExpr), | |
221 | + _export: kw("export"), | |
222 | + _import: kw("import"), | |
223 | + _null: kw("null", startsExpr), | |
224 | + _true: kw("true", startsExpr), | |
225 | + _false: kw("false", startsExpr), | |
226 | + _in: kw("in", {beforeExpr: true, binop: 7}), | |
227 | + _instanceof: kw("instanceof", {beforeExpr: true, binop: 7}), | |
228 | + _typeof: kw("typeof", {beforeExpr: true, prefix: true, startsExpr: true}), | |
229 | + _void: kw("void", {beforeExpr: true, prefix: true, startsExpr: true}), | |
230 | + _delete: kw("delete", {beforeExpr: true, prefix: true, startsExpr: true}) | |
231 | +} | |
232 | + | |
233 | +// Matches a whole line break (where CRLF is considered a single | |
234 | +// line break). Used to count lines. | |
235 | + | |
236 | +var lineBreak = /\r\n?|\n|\u2028|\u2029/ | |
237 | +var lineBreakG = new RegExp(lineBreak.source, "g") | |
238 | + | |
239 | +function isNewLine(code) { | |
240 | + return code === 10 || code === 13 || code === 0x2028 || code === 0x2029 | |
241 | +} | |
242 | + | |
243 | +var nonASCIIwhitespace = /[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/ | |
244 | + | |
245 | +var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g | |
246 | + | |
247 | +function isArray(obj) { | |
248 | + return Object.prototype.toString.call(obj) === "[object Array]" | |
249 | +} | |
250 | + | |
251 | +// Checks if an object has a property. | |
252 | + | |
253 | +function has(obj, propName) { | |
254 | + return Object.prototype.hasOwnProperty.call(obj, propName) | |
255 | +} | |
256 | + | |
257 | +// These are used when `options.locations` is on, for the | |
258 | +// `startLoc` and `endLoc` properties. | |
259 | + | |
260 | +var Position = function Position(line, col) { | |
261 | + this.line = line | |
262 | + this.column = col | |
263 | +}; | |
264 | + | |
265 | +Position.prototype.offset = function offset (n) { | |
266 | + return new Position(this.line, this.column + n) | |
267 | +}; | |
268 | + | |
269 | +var SourceLocation = function SourceLocation(p, start, end) { | |
270 | + this.start = start | |
271 | + this.end = end | |
272 | + if (p.sourceFile !== null) this.source = p.sourceFile | |
273 | +}; | |
274 | + | |
275 | +// The `getLineInfo` function is mostly useful when the | |
276 | +// `locations` option is off (for performance reasons) and you | |
277 | +// want to find the line/column position for a given character | |
278 | +// offset. `input` should be the code string that the offset refers | |
279 | +// into. | |
280 | + | |
281 | +function getLineInfo(input, offset) { | |
282 | + for (var line = 1, cur = 0;;) { | |
283 | + lineBreakG.lastIndex = cur | |
284 | + var match = lineBreakG.exec(input) | |
285 | + if (match && match.index < offset) { | |
286 | + ++line | |
287 | + cur = match.index + match[0].length | |
288 | + } else { | |
289 | + return new Position(line, offset - cur) | |
290 | + } | |
291 | + } | |
292 | +} | |
293 | + | |
294 | +// A second optional argument can be given to further configure | |
295 | +// the parser process. These options are recognized: | |
296 | + | |
297 | +var defaultOptions = { | |
298 | + // `ecmaVersion` indicates the ECMAScript version to parse. Must | |
299 | + // be either 3, 5, 6 (2015), 7 (2016), or 8 (2017). This influences support | |
300 | + // for strict mode, the set of reserved words, and support for | |
301 | + // new syntax features. The default is 7. | |
302 | + ecmaVersion: 7, | |
303 | + // `sourceType` indicates the mode the code should be parsed in. | |
304 | + // Can be either `"script"` or `"module"`. This influences global | |
305 | + // strict mode and parsing of `import` and `export` declarations. | |
306 | + sourceType: "script", | |
307 | + // `onInsertedSemicolon` can be a callback that will be called | |
308 | + // when a semicolon is automatically inserted. It will be passed | |
309 | + // th position of the comma as an offset, and if `locations` is | |
310 | + // enabled, it is given the location as a `{line, column}` object | |
311 | + // as second argument. | |
312 | + onInsertedSemicolon: null, | |
313 | + // `onTrailingComma` is similar to `onInsertedSemicolon`, but for | |
314 | + // trailing commas. | |
315 | + onTrailingComma: null, | |
316 | + // By default, reserved words are only enforced if ecmaVersion >= 5. | |
317 | + // Set `allowReserved` to a boolean value to explicitly turn this on | |
318 | + // an off. When this option has the value "never", reserved words | |
319 | + // and keywords can also not be used as property names. | |
320 | + allowReserved: null, | |
321 | + // When enabled, a return at the top level is not considered an | |
322 | + // error. | |
323 | + allowReturnOutsideFunction: false, | |
324 | + // When enabled, import/export statements are not constrained to | |
325 | + // appearing at the top of the program. | |
326 | + allowImportExportEverywhere: false, | |
327 | + // When enabled, hashbang directive in the beginning of file | |
328 | + // is allowed and treated as a line comment. | |
329 | + allowHashBang: false, | |
330 | + // When `locations` is on, `loc` properties holding objects with | |
331 | + // `start` and `end` properties in `{line, column}` form (with | |
332 | + // line being 1-based and column 0-based) will be attached to the | |
333 | + // nodes. | |
334 | + locations: false, | |
335 | + // A function can be passed as `onToken` option, which will | |
336 | + // cause Acorn to call that function with object in the same | |
337 | + // format as tokens returned from `tokenizer().getToken()`. Note | |
338 | + // that you are not allowed to call the parser from the | |
339 | + // callback—that will corrupt its internal state. | |
340 | + onToken: null, | |
341 | + // A function can be passed as `onComment` option, which will | |
342 | + // cause Acorn to call that function with `(block, text, start, | |
343 | + // end)` parameters whenever a comment is skipped. `block` is a | |
344 | + // boolean indicating whether this is a block (`/* */`) comment, | |
345 | + // `text` is the content of the comment, and `start` and `end` are | |
346 | + // character offsets that denote the start and end of the comment. | |
347 | + // When the `locations` option is on, two more parameters are | |
348 | + // passed, the full `{line, column}` locations of the start and | |
349 | + // end of the comments. Note that you are not allowed to call the | |
350 | + // parser from the callback—that will corrupt its internal state. | |
351 | + onComment: null, | |
352 | + // Nodes have their start and end characters offsets recorded in | |
353 | + // `start` and `end` properties (directly on the node, rather than | |
354 | + // the `loc` object, which holds line/column data. To also add a | |
355 | + // [semi-standardized][range] `range` property holding a `[start, | |
356 | + // end]` array with the same numbers, set the `ranges` option to | |
357 | + // `true`. | |
358 | + // | |
359 | + // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678 | |
360 | + ranges: false, | |
361 | + // It is possible to parse multiple files into a single AST by | |
362 | + // passing the tree produced by parsing the first file as | |
363 | + // `program` option in subsequent parses. This will add the | |
364 | + // toplevel forms of the parsed file to the `Program` (top) node | |
365 | + // of an existing parse tree. | |
366 | + program: null, | |
367 | + // When `locations` is on, you can pass this to record the source | |
368 | + // file in every node's `loc` object. | |
369 | + sourceFile: null, | |
370 | + // This value, if given, is stored in every node, whether | |
371 | + // `locations` is on or off. | |
372 | + directSourceFile: null, | |
373 | + // When enabled, parenthesized expressions are represented by | |
374 | + // (non-standard) ParenthesizedExpression nodes | |
375 | + preserveParens: false, | |
376 | + plugins: {} | |
377 | +} | |
378 | + | |
379 | +// Interpret and default an options object | |
380 | + | |
381 | +function getOptions(opts) { | |
382 | + var options = {} | |
383 | + | |
384 | + for (var opt in defaultOptions) | |
385 | + options[opt] = opts && has(opts, opt) ? opts[opt] : defaultOptions[opt] | |
386 | + | |
387 | + if (options.ecmaVersion >= 2015) | |
388 | + options.ecmaVersion -= 2009 | |
389 | + | |
390 | + if (options.allowReserved == null) | |
391 | + options.allowReserved = options.ecmaVersion < 5 | |
392 | + | |
393 | + if (isArray(options.onToken)) { | |
394 | + var tokens = options.onToken | |
395 | + options.onToken = function (token) { return tokens.push(token); } | |
396 | + } | |
397 | + if (isArray(options.onComment)) | |
398 | + options.onComment = pushComment(options, options.onComment) | |
399 | + | |
400 | + return options | |
401 | +} | |
402 | + | |
403 | +function pushComment(options, array) { | |
404 | + return function (block, text, start, end, startLoc, endLoc) { | |
405 | + var comment = { | |
406 | + type: block ? 'Block' : 'Line', | |
407 | + value: text, | |
408 | + start: start, | |
409 | + end: end | |
410 | + } | |
411 | + if (options.locations) | |
412 | + comment.loc = new SourceLocation(this, startLoc, endLoc) | |
413 | + if (options.ranges) | |
414 | + comment.range = [start, end] | |
415 | + array.push(comment) | |
416 | + } | |
417 | +} | |
418 | + | |
419 | +// Registered plugins | |
420 | +var plugins = {} | |
421 | + | |
422 | +function keywordRegexp(words) { | |
423 | + return new RegExp("^(" + words.replace(/ /g, "|") + ")$") | |
424 | +} | |
425 | + | |
426 | +var Parser = function Parser(options, input, startPos) { | |
427 | + this.options = options = getOptions(options) | |
428 | + this.sourceFile = options.sourceFile | |
429 | + this.keywords = keywordRegexp(keywords[options.ecmaVersion >= 6 ? 6 : 5]) | |
430 | + var reserved = "" | |
431 | + if (!options.allowReserved) { | |
432 | + for (var v = options.ecmaVersion;; v--) | |
433 | + if (reserved = reservedWords[v]) break | |
434 | + if (options.sourceType == "module") reserved += " await" | |
435 | + } | |
436 | + this.reservedWords = keywordRegexp(reserved) | |
437 | + var reservedStrict = (reserved ? reserved + " " : "") + reservedWords.strict | |
438 | + this.reservedWordsStrict = keywordRegexp(reservedStrict) | |
439 | + this.reservedWordsStrictBind = keywordRegexp(reservedStrict + " " + reservedWords.strictBind) | |
440 | + this.input = String(input) | |
441 | + | |
442 | + // Used to signal to callers of `readWord1` whether the word | |
443 | + // contained any escape sequences. This is needed because words with | |
444 | + // escape sequences must not be interpreted as keywords. | |
445 | + this.containsEsc = false | |
446 | + | |
447 | + // Load plugins | |
448 | + this.loadPlugins(options.plugins) | |
449 | + | |
450 | + // Set up token state | |
451 | + | |
452 | + // The current position of the tokenizer in the input. | |
453 | + if (startPos) { | |
454 | + this.pos = startPos | |
455 | + this.lineStart = this.input.lastIndexOf("\n", startPos - 1) + 1 | |
456 | + this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length | |
457 | + } else { | |
458 | + this.pos = this.lineStart = 0 | |
459 | + this.curLine = 1 | |
460 | + } | |
461 | + | |
462 | + // Properties of the current token: | |
463 | + // Its type | |
464 | + this.type = tt.eof | |
465 | + // For tokens that include more information than their type, the value | |
466 | + this.value = null | |
467 | + // Its start and end offset | |
468 | + this.start = this.end = this.pos | |
469 | + // And, if locations are used, the {line, column} object | |
470 | + // corresponding to those offsets | |
471 | + this.startLoc = this.endLoc = this.curPosition() | |
472 | + | |
473 | + // Position information for the previous token | |
474 | + this.lastTokEndLoc = this.lastTokStartLoc = null | |
475 | + this.lastTokStart = this.lastTokEnd = this.pos | |
476 | + | |
477 | + // The context stack is used to superficially track syntactic | |
478 | + // context to predict whether a regular expression is allowed in a | |
479 | + // given position. | |
480 | + this.context = this.initialContext() | |
481 | + this.exprAllowed = true | |
482 | + | |
483 | + // Figure out if it's a module code. | |
484 | + this.inModule = options.sourceType === "module" | |
485 | + this.strict = this.inModule || this.strictDirective(this.pos) | |
486 | + | |
487 | + // Used to signify the start of a potential arrow function | |
488 | + this.potentialArrowAt = -1 | |
489 | + | |
490 | + // Flags to track whether we are in a function, a generator, an async function. | |
491 | + this.inFunction = this.inGenerator = this.inAsync = false | |
492 | + // Positions to delayed-check that yield/await does not exist in default parameters. | |
493 | + this.yieldPos = this.awaitPos = 0 | |
494 | + // Labels in scope. | |
495 | + this.labels = [] | |
496 | + | |
497 | + // If enabled, skip leading hashbang line. | |
498 | + if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === '#!') | |
499 | + this.skipLineComment(2) | |
500 | +}; | |
501 | + | |
502 | +// DEPRECATED Kept for backwards compatibility until 3.0 in case a plugin uses them | |
503 | +Parser.prototype.isKeyword = function isKeyword (word) { return this.keywords.test(word) }; | |
504 | +Parser.prototype.isReservedWord = function isReservedWord (word) { return this.reservedWords.test(word) }; | |
505 | + | |
506 | +Parser.prototype.extend = function extend (name, f) { | |
507 | + this[name] = f(this[name]) | |
508 | +}; | |
509 | + | |
510 | +Parser.prototype.loadPlugins = function loadPlugins (pluginConfigs) { | |
511 | + var this$1 = this; | |
512 | + | |
513 | + for (var name in pluginConfigs) { | |
514 | + var plugin = plugins[name] | |
515 | + if (!plugin) throw new Error("Plugin '" + name + "' not found") | |
516 | + plugin(this$1, pluginConfigs[name]) | |
517 | + } | |
518 | +}; | |
519 | + | |
520 | +Parser.prototype.parse = function parse () { | |
521 | + var node = this.options.program || this.startNode() | |
522 | + this.nextToken() | |
523 | + return this.parseTopLevel(node) | |
524 | +}; | |
525 | + | |
526 | +var pp = Parser.prototype | |
527 | + | |
528 | +// ## Parser utilities | |
529 | + | |
530 | +var literal = /^(?:'((?:[^\']|\.)*)'|"((?:[^\"]|\.)*)"|;)/ | |
531 | +pp.strictDirective = function(start) { | |
532 | + var this$1 = this; | |
533 | + | |
534 | + for (;;) { | |
535 | + skipWhiteSpace.lastIndex = start | |
536 | + start += skipWhiteSpace.exec(this$1.input)[0].length | |
537 | + var match = literal.exec(this$1.input.slice(start)) | |
538 | + if (!match) return false | |
539 | + if ((match[1] || match[2]) == "use strict") return true | |
540 | + start += match[0].length | |
541 | + } | |
542 | +} | |
543 | + | |
544 | +// Predicate that tests whether the next token is of the given | |
545 | +// type, and if yes, consumes it as a side effect. | |
546 | + | |
547 | +pp.eat = function(type) { | |
548 | + if (this.type === type) { | |
549 | + this.next() | |
550 | + return true | |
551 | + } else { | |
552 | + return false | |
553 | + } | |
554 | +} | |
555 | + | |
556 | +// Tests whether parsed token is a contextual keyword. | |
557 | + | |
558 | +pp.isContextual = function(name) { | |
559 | + return this.type === tt.name && this.value === name | |
560 | +} | |
561 | + | |
562 | +// Consumes contextual keyword if possible. | |
563 | + | |
564 | +pp.eatContextual = function(name) { | |
565 | + return this.value === name && this.eat(tt.name) | |
566 | +} | |
567 | + | |
568 | +// Asserts that following token is given contextual keyword. | |
569 | + | |
570 | +pp.expectContextual = function(name) { | |
571 | + if (!this.eatContextual(name)) this.unexpected() | |
572 | +} | |
573 | + | |
574 | +// Test whether a semicolon can be inserted at the current position. | |
575 | + | |
576 | +pp.canInsertSemicolon = function() { | |
577 | + return this.type === tt.eof || | |
578 | + this.type === tt.braceR || | |
579 | + lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) | |
580 | +} | |
581 | + | |
582 | +pp.insertSemicolon = function() { | |
583 | + if (this.canInsertSemicolon()) { | |
584 | + if (this.options.onInsertedSemicolon) | |
585 | + this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc) | |
586 | + return true | |
587 | + } | |
588 | +} | |
589 | + | |
590 | +// Consume a semicolon, or, failing that, see if we are allowed to | |
591 | +// pretend that there is a semicolon at this position. | |
592 | + | |
593 | +pp.semicolon = function() { | |
594 | + if (!this.eat(tt.semi) && !this.insertSemicolon()) this.unexpected() | |
595 | +} | |
596 | + | |
597 | +pp.afterTrailingComma = function(tokType, notNext) { | |
598 | + if (this.type == tokType) { | |
599 | + if (this.options.onTrailingComma) | |
600 | + this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc) | |
601 | + if (!notNext) | |
602 | + this.next() | |
603 | + return true | |
604 | + } | |
605 | +} | |
606 | + | |
607 | +// Expect a token of a given type. If found, consume it, otherwise, | |
608 | +// raise an unexpected token error. | |
609 | + | |
610 | +pp.expect = function(type) { | |
611 | + this.eat(type) || this.unexpected() | |
612 | +} | |
613 | + | |
614 | +// Raise an unexpected token error. | |
615 | + | |
616 | +pp.unexpected = function(pos) { | |
617 | + this.raise(pos != null ? pos : this.start, "Unexpected token") | |
618 | +} | |
619 | + | |
620 | +var DestructuringErrors = function DestructuringErrors() { | |
621 | + this.shorthandAssign = this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = -1 | |
622 | +}; | |
623 | + | |
624 | +pp.checkPatternErrors = function(refDestructuringErrors, isAssign) { | |
625 | + if (!refDestructuringErrors) return | |
626 | + if (refDestructuringErrors.trailingComma > -1) | |
627 | + this.raiseRecoverable(refDestructuringErrors.trailingComma, "Comma is not permitted after the rest element") | |
628 | + var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind | |
629 | + if (parens > -1) this.raiseRecoverable(parens, "Parenthesized pattern") | |
630 | +} | |
631 | + | |
632 | +pp.checkExpressionErrors = function(refDestructuringErrors, andThrow) { | |
633 | + var pos = refDestructuringErrors ? refDestructuringErrors.shorthandAssign : -1 | |
634 | + if (!andThrow) return pos >= 0 | |
635 | + if (pos > -1) this.raise(pos, "Shorthand property assignments are valid only in destructuring patterns") | |
636 | +} | |
637 | + | |
638 | +pp.checkYieldAwaitInDefaultParams = function() { | |
639 | + if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos)) | |
640 | + this.raise(this.yieldPos, "Yield expression cannot be a default value") | |
641 | + if (this.awaitPos) | |
642 | + this.raise(this.awaitPos, "Await expression cannot be a default value") | |
643 | +} | |
644 | + | |
645 | +pp.isSimpleAssignTarget = function(expr) { | |
646 | + if (expr.type === "ParenthesizedExpression") | |
647 | + return this.isSimpleAssignTarget(expr.expression) | |
648 | + return expr.type === "Identifier" || expr.type === "MemberExpression" | |
649 | +} | |
650 | + | |
651 | +var pp$1 = Parser.prototype | |
652 | + | |
653 | +// ### Statement parsing | |
654 | + | |
655 | +// Parse a program. Initializes the parser, reads any number of | |
656 | +// statements, and wraps them in a Program node. Optionally takes a | |
657 | +// `program` argument. If present, the statements will be appended | |
658 | +// to its body instead of creating a new node. | |
659 | + | |
660 | +pp$1.parseTopLevel = function(node) { | |
661 | + var this$1 = this; | |
662 | + | |
663 | + var exports = {} | |
664 | + if (!node.body) node.body = [] | |
665 | + while (this.type !== tt.eof) { | |
666 | + var stmt = this$1.parseStatement(true, true, exports) | |
667 | + node.body.push(stmt) | |
668 | + } | |
669 | + this.next() | |
670 | + if (this.options.ecmaVersion >= 6) { | |
671 | + node.sourceType = this.options.sourceType | |
672 | + } | |
673 | + return this.finishNode(node, "Program") | |
674 | +} | |
675 | + | |
676 | +var loopLabel = {kind: "loop"}; | |
677 | +var switchLabel = {kind: "switch"}; | |
678 | +pp$1.isLet = function() { | |
679 | + if (this.type !== tt.name || this.options.ecmaVersion < 6 || this.value != "let") return false | |
680 | + skipWhiteSpace.lastIndex = this.pos | |
681 | + var skip = skipWhiteSpace.exec(this.input) | |
682 | + var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next) | |
683 | + if (nextCh === 91 || nextCh == 123) return true // '{' and '[' | |
684 | + if (isIdentifierStart(nextCh, true)) { | |
685 | + for (var pos = next + 1; isIdentifierChar(this.input.charCodeAt(pos), true); ++pos) {} | |
686 | + var ident = this.input.slice(next, pos) | |
687 | + if (!this.isKeyword(ident)) return true | |
688 | + } | |
689 | + return false | |
690 | +} | |
691 | + | |
692 | +// check 'async [no LineTerminator here] function' | |
693 | +// - 'async /*foo*/ function' is OK. | |
694 | +// - 'async /*\n*/ function' is invalid. | |
695 | +pp$1.isAsyncFunction = function() { | |
696 | + if (this.type !== tt.name || this.options.ecmaVersion < 8 || this.value != "async") | |
697 | + return false | |
698 | + | |
699 | + skipWhiteSpace.lastIndex = this.pos | |
700 | + var skip = skipWhiteSpace.exec(this.input) | |
701 | + var next = this.pos + skip[0].length | |
702 | + return !lineBreak.test(this.input.slice(this.pos, next)) && | |
703 | + this.input.slice(next, next + 8) === "function" && | |
704 | + (next + 8 == this.input.length || !isIdentifierChar(this.input.charAt(next + 8))) | |
705 | +} | |
706 | + | |
707 | +// Parse a single statement. | |
708 | +// | |
709 | +// If expecting a statement and finding a slash operator, parse a | |
710 | +// regular expression literal. This is to handle cases like | |
711 | +// `if (foo) /blah/.exec(foo)`, where looking at the previous token | |
712 | +// does not help. | |
713 | + | |
714 | +pp$1.parseStatement = function(declaration, topLevel, exports) { | |
715 | + var starttype = this.type, node = this.startNode(), kind | |
716 | + | |
717 | + if (this.isLet()) { | |
718 | + starttype = tt._var | |
719 | + kind = "let" | |
720 | + } | |
721 | + | |
722 | + // Most types of statements are recognized by the keyword they | |
723 | + // start with. Many are trivial to parse, some require a bit of | |
724 | + // complexity. | |
725 | + | |
726 | + switch (starttype) { | |
727 | + case tt._break: case tt._continue: return this.parseBreakContinueStatement(node, starttype.keyword) | |
728 | + case tt._debugger: return this.parseDebuggerStatement(node) | |
729 | + case tt._do: return this.parseDoStatement(node) | |
730 | + case tt._for: return this.parseForStatement(node) | |
731 | + case tt._function: | |
732 | + if (!declaration && this.options.ecmaVersion >= 6) this.unexpected() | |
733 | + return this.parseFunctionStatement(node, false) | |
734 | + case tt._class: | |
735 | + if (!declaration) this.unexpected() | |
736 | + return this.parseClass(node, true) | |
737 | + case tt._if: return this.parseIfStatement(node) | |
738 | + case tt._return: return this.parseReturnStatement(node) | |
739 | + case tt._switch: return this.parseSwitchStatement(node) | |
740 | + case tt._throw: return this.parseThrowStatement(node) | |
741 | + case tt._try: return this.parseTryStatement(node) | |
742 | + case tt._const: case tt._var: | |
743 | + kind = kind || this.value | |
744 | + if (!declaration && kind != "var") this.unexpected() | |
745 | + return this.parseVarStatement(node, kind) | |
746 | + case tt._while: return this.parseWhileStatement(node) | |
747 | + case tt._with: return this.parseWithStatement(node) | |
748 | + case tt.braceL: return this.parseBlock() | |
749 | + case tt.semi: return this.parseEmptyStatement(node) | |
750 | + case tt._export: | |
751 | + case tt._import: | |
752 | + if (!this.options.allowImportExportEverywhere) { | |
753 | + if (!topLevel) | |
754 | + this.raise(this.start, "'import' and 'export' may only appear at the top level") | |
755 | + if (!this.inModule) | |
756 | + this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'") | |
757 | + } | |
758 | + return starttype === tt._import ? this.parseImport(node) : this.parseExport(node, exports) | |
759 | + | |
760 | + // If the statement does not start with a statement keyword or a | |
761 | + // brace, it's an ExpressionStatement or LabeledStatement. We | |
762 | + // simply start parsing an expression, and afterwards, if the | |
763 | + // next token is a colon and the expression was a simple | |
764 | + // Identifier node, we switch to interpreting it as a label. | |
765 | + default: | |
766 | + if (this.isAsyncFunction() && declaration) { | |
767 | + this.next() | |
768 | + return this.parseFunctionStatement(node, true) | |
769 | + } | |
770 | + | |
771 | + var maybeName = this.value, expr = this.parseExpression() | |
772 | + if (starttype === tt.name && expr.type === "Identifier" && this.eat(tt.colon)) | |
773 | + return this.parseLabeledStatement(node, maybeName, expr) | |
774 | + else return this.parseExpressionStatement(node, expr) | |
775 | + } | |
776 | +} | |
777 | + | |
778 | +pp$1.parseBreakContinueStatement = function(node, keyword) { | |
779 | + var this$1 = this; | |
780 | + | |
781 | + var isBreak = keyword == "break" | |
782 | + this.next() | |
783 | + if (this.eat(tt.semi) || this.insertSemicolon()) node.label = null | |
784 | + else if (this.type !== tt.name) this.unexpected() | |
785 | + else { | |
786 | + node.label = this.parseIdent() | |
787 | + this.semicolon() | |
788 | + } | |
789 | + | |
790 | + // Verify that there is an actual destination to break or | |
791 | + // continue to. | |
792 | + for (var i = 0; i < this.labels.length; ++i) { | |
793 | + var lab = this$1.labels[i] | |
794 | + if (node.label == null || lab.name === node.label.name) { | |
795 | + if (lab.kind != null && (isBreak || lab.kind === "loop")) break | |
796 | + if (node.label && isBreak) break | |
797 | + } | |
798 | + } | |
799 | + if (i === this.labels.length) this.raise(node.start, "Unsyntactic " + keyword) | |
800 | + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement") | |
801 | +} | |
802 | + | |
803 | +pp$1.parseDebuggerStatement = function(node) { | |
804 | + this.next() | |
805 | + this.semicolon() | |
806 | + return this.finishNode(node, "DebuggerStatement") | |
807 | +} | |
808 | + | |
809 | +pp$1.parseDoStatement = function(node) { | |
810 | + this.next() | |
811 | + this.labels.push(loopLabel) | |
812 | + node.body = this.parseStatement(false) | |
813 | + this.labels.pop() | |
814 | + this.expect(tt._while) | |
815 | + node.test = this.parseParenExpression() | |
816 | + if (this.options.ecmaVersion >= 6) | |
817 | + this.eat(tt.semi) | |
818 | + else | |
819 | + this.semicolon() | |
820 | + return this.finishNode(node, "DoWhileStatement") | |
821 | +} | |
822 | + | |
823 | +// Disambiguating between a `for` and a `for`/`in` or `for`/`of` | |
824 | +// loop is non-trivial. Basically, we have to parse the init `var` | |
825 | +// statement or expression, disallowing the `in` operator (see | |
826 | +// the second parameter to `parseExpression`), and then check | |
827 | +// whether the next token is `in` or `of`. When there is no init | |
828 | +// part (semicolon immediately after the opening parenthesis), it | |
829 | +// is a regular `for` loop. | |
830 | + | |
831 | +pp$1.parseForStatement = function(node) { | |
832 | + this.next() | |
833 | + this.labels.push(loopLabel) | |
834 | + this.expect(tt.parenL) | |
835 | + if (this.type === tt.semi) return this.parseFor(node, null) | |
836 | + var isLet = this.isLet() | |
837 | + if (this.type === tt._var || this.type === tt._const || isLet) { | |
838 | + var init$1 = this.startNode(), kind = isLet ? "let" : this.value | |
839 | + this.next() | |
840 | + this.parseVar(init$1, true, kind) | |
841 | + this.finishNode(init$1, "VariableDeclaration") | |
842 | + if ((this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) && init$1.declarations.length === 1 && | |
843 | + !(kind !== "var" && init$1.declarations[0].init)) | |
844 | + return this.parseForIn(node, init$1) | |
845 | + return this.parseFor(node, init$1) | |
846 | + } | |
847 | + var refDestructuringErrors = new DestructuringErrors | |
848 | + var init = this.parseExpression(true, refDestructuringErrors) | |
849 | + if (this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) { | |
850 | + this.toAssignable(init) | |
851 | + this.checkLVal(init) | |
852 | + this.checkPatternErrors(refDestructuringErrors, true) | |
853 | + return this.parseForIn(node, init) | |
854 | + } else { | |
855 | + this.checkExpressionErrors(refDestructuringErrors, true) | |
856 | + } | |
857 | + return this.parseFor(node, init) | |
858 | +} | |
859 | + | |
860 | +pp$1.parseFunctionStatement = function(node, isAsync) { | |
861 | + this.next() | |
862 | + return this.parseFunction(node, true, false, isAsync) | |
863 | +} | |
864 | + | |
865 | +pp$1.isFunction = function() { | |
866 | + return this.type === tt._function || this.isAsyncFunction() | |
867 | +} | |
868 | + | |
869 | +pp$1.parseIfStatement = function(node) { | |
870 | + this.next() | |
871 | + node.test = this.parseParenExpression() | |
872 | + // allow function declarations in branches, but only in non-strict mode | |
873 | + node.consequent = this.parseStatement(!this.strict && this.isFunction()) | |
874 | + node.alternate = this.eat(tt._else) ? this.parseStatement(!this.strict && this.isFunction()) : null | |
875 | + return this.finishNode(node, "IfStatement") | |
876 | +} | |
877 | + | |
878 | +pp$1.parseReturnStatement = function(node) { | |
879 | + if (!this.inFunction && !this.options.allowReturnOutsideFunction) | |
880 | + this.raise(this.start, "'return' outside of function") | |
881 | + this.next() | |
882 | + | |
883 | + // In `return` (and `break`/`continue`), the keywords with | |
884 | + // optional arguments, we eagerly look for a semicolon or the | |
885 | + // possibility to insert one. | |
886 | + | |
887 | + if (this.eat(tt.semi) || this.insertSemicolon()) node.argument = null | |
888 | + else { node.argument = this.parseExpression(); this.semicolon() } | |
889 | + return this.finishNode(node, "ReturnStatement") | |
890 | +} | |
891 | + | |
892 | +pp$1.parseSwitchStatement = function(node) { | |
893 | + var this$1 = this; | |
894 | + | |
895 | + this.next() | |
896 | + node.discriminant = this.parseParenExpression() | |
897 | + node.cases = [] | |
898 | + this.expect(tt.braceL) | |
899 | + this.labels.push(switchLabel) | |
900 | + | |
901 | + // Statements under must be grouped (by label) in SwitchCase | |
902 | + // nodes. `cur` is used to keep the node that we are currently | |
903 | + // adding statements to. | |
904 | + | |
905 | + for (var cur, sawDefault = false; this.type != tt.braceR;) { | |
906 | + if (this$1.type === tt._case || this$1.type === tt._default) { | |
907 | + var isCase = this$1.type === tt._case | |
908 | + if (cur) this$1.finishNode(cur, "SwitchCase") | |
909 | + node.cases.push(cur = this$1.startNode()) | |
910 | + cur.consequent = [] | |
911 | + this$1.next() | |
912 | + if (isCase) { | |
913 | + cur.test = this$1.parseExpression() | |
914 | + } else { | |
915 | + if (sawDefault) this$1.raiseRecoverable(this$1.lastTokStart, "Multiple default clauses") | |
916 | + sawDefault = true | |
917 | + cur.test = null | |
918 | + } | |
919 | + this$1.expect(tt.colon) | |
920 | + } else { | |
921 | + if (!cur) this$1.unexpected() | |
922 | + cur.consequent.push(this$1.parseStatement(true)) | |
923 | + } | |
924 | + } | |
925 | + if (cur) this.finishNode(cur, "SwitchCase") | |
926 | + this.next() // Closing brace | |
927 | + this.labels.pop() | |
928 | + return this.finishNode(node, "SwitchStatement") | |
929 | +} | |
930 | + | |
931 | +pp$1.parseThrowStatement = function(node) { | |
932 | + this.next() | |
933 | + if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) | |
934 | + this.raise(this.lastTokEnd, "Illegal newline after throw") | |
935 | + node.argument = this.parseExpression() | |
936 | + this.semicolon() | |
937 | + return this.finishNode(node, "ThrowStatement") | |
938 | +} | |
939 | + | |
940 | +// Reused empty array added for node fields that are always empty. | |
941 | + | |
942 | +var empty = [] | |
943 | + | |
944 | +pp$1.parseTryStatement = function(node) { | |
945 | + this.next() | |
946 | + node.block = this.parseBlock() | |
947 | + node.handler = null | |
948 | + if (this.type === tt._catch) { | |
949 | + var clause = this.startNode() | |
950 | + this.next() | |
951 | + this.expect(tt.parenL) | |
952 | + clause.param = this.parseBindingAtom() | |
953 | + this.checkLVal(clause.param, true) | |
954 | + this.expect(tt.parenR) | |
955 | + clause.body = this.parseBlock() | |
956 | + node.handler = this.finishNode(clause, "CatchClause") | |
957 | + } | |
958 | + node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null | |
959 | + if (!node.handler && !node.finalizer) | |
960 | + this.raise(node.start, "Missing catch or finally clause") | |
961 | + return this.finishNode(node, "TryStatement") | |
962 | +} | |
963 | + | |
964 | +pp$1.parseVarStatement = function(node, kind) { | |
965 | + this.next() | |
966 | + this.parseVar(node, false, kind) | |
967 | + this.semicolon() | |
968 | + return this.finishNode(node, "VariableDeclaration") | |
969 | +} | |
970 | + | |
971 | +pp$1.parseWhileStatement = function(node) { | |
972 | + this.next() | |
973 | + node.test = this.parseParenExpression() | |
974 | + this.labels.push(loopLabel) | |
975 | + node.body = this.parseStatement(false) | |
976 | + this.labels.pop() | |
977 | + return this.finishNode(node, "WhileStatement") | |
978 | +} | |
979 | + | |
980 | +pp$1.parseWithStatement = function(node) { | |
981 | + if (this.strict) this.raise(this.start, "'with' in strict mode") | |
982 | + this.next() | |
983 | + node.object = this.parseParenExpression() | |
984 | + node.body = this.parseStatement(false) | |
985 | + return this.finishNode(node, "WithStatement") | |
986 | +} | |
987 | + | |
988 | +pp$1.parseEmptyStatement = function(node) { | |
989 | + this.next() | |
990 | + return this.finishNode(node, "EmptyStatement") | |
991 | +} | |
992 | + | |
993 | +pp$1.parseLabeledStatement = function(node, maybeName, expr) { | |
994 | + var this$1 = this; | |
995 | + | |
996 | + for (var i = 0; i < this.labels.length; ++i) | |
997 | + if (this$1.labels[i].name === maybeName) this$1.raise(expr.start, "Label '" + maybeName + "' is already declared") | |
998 | + var kind = this.type.isLoop ? "loop" : this.type === tt._switch ? "switch" : null | |
999 | + for (var i$1 = this.labels.length - 1; i$1 >= 0; i$1--) { | |
1000 | + var label = this$1.labels[i$1] | |
1001 | + if (label.statementStart == node.start) { | |
1002 | + label.statementStart = this$1.start | |
1003 | + label.kind = kind | |
1004 | + } else break | |
1005 | + } | |
1006 | + this.labels.push({name: maybeName, kind: kind, statementStart: this.start}) | |
1007 | + node.body = this.parseStatement(true) | |
1008 | + if (node.body.type == "ClassDeclaration" || | |
1009 | + node.body.type == "VariableDeclaration" && (this.strict || node.body.kind != "var") || | |
1010 | + node.body.type == "FunctionDeclaration" && (this.strict || node.body.generator)) | |
1011 | + this.raiseRecoverable(node.body.start, "Invalid labeled declaration") | |
1012 | + this.labels.pop() | |
1013 | + node.label = expr | |
1014 | + return this.finishNode(node, "LabeledStatement") | |
1015 | +} | |
1016 | + | |
1017 | +pp$1.parseExpressionStatement = function(node, expr) { | |
1018 | + node.expression = expr | |
1019 | + this.semicolon() | |
1020 | + return this.finishNode(node, "ExpressionStatement") | |
1021 | +} | |
1022 | + | |
1023 | +// Parse a semicolon-enclosed block of statements, handling `"use | |
1024 | +// strict"` declarations when `allowStrict` is true (used for | |
1025 | +// function bodies). | |
1026 | + | |
1027 | +pp$1.parseBlock = function() { | |
1028 | + var this$1 = this; | |
1029 | + | |
1030 | + var node = this.startNode() | |
1031 | + node.body = [] | |
1032 | + this.expect(tt.braceL) | |
1033 | + while (!this.eat(tt.braceR)) { | |
1034 | + var stmt = this$1.parseStatement(true) | |
1035 | + node.body.push(stmt) | |
1036 | + } | |
1037 | + return this.finishNode(node, "BlockStatement") | |
1038 | +} | |
1039 | + | |
1040 | +// Parse a regular `for` loop. The disambiguation code in | |
1041 | +// `parseStatement` will already have parsed the init statement or | |
1042 | +// expression. | |
1043 | + | |
1044 | +pp$1.parseFor = function(node, init) { | |
1045 | + node.init = init | |
1046 | + this.expect(tt.semi) | |
1047 | + node.test = this.type === tt.semi ? null : this.parseExpression() | |
1048 | + this.expect(tt.semi) | |
1049 | + node.update = this.type === tt.parenR ? null : this.parseExpression() | |
1050 | + this.expect(tt.parenR) | |
1051 | + node.body = this.parseStatement(false) | |
1052 | + this.labels.pop() | |
1053 | + return this.finishNode(node, "ForStatement") | |
1054 | +} | |
1055 | + | |
1056 | +// Parse a `for`/`in` and `for`/`of` loop, which are almost | |
1057 | +// same from parser's perspective. | |
1058 | + | |
1059 | +pp$1.parseForIn = function(node, init) { | |
1060 | + var type = this.type === tt._in ? "ForInStatement" : "ForOfStatement" | |
1061 | + this.next() | |
1062 | + node.left = init | |
1063 | + node.right = this.parseExpression() | |
1064 | + this.expect(tt.parenR) | |
1065 | + node.body = this.parseStatement(false) | |
1066 | + this.labels.pop() | |
1067 | + return this.finishNode(node, type) | |
1068 | +} | |
1069 | + | |
1070 | +// Parse a list of variable declarations. | |
1071 | + | |
1072 | +pp$1.parseVar = function(node, isFor, kind) { | |
1073 | + var this$1 = this; | |
1074 | + | |
1075 | + node.declarations = [] | |
1076 | + node.kind = kind | |
1077 | + for (;;) { | |
1078 | + var decl = this$1.startNode() | |
1079 | + this$1.parseVarId(decl) | |
1080 | + if (this$1.eat(tt.eq)) { | |
1081 | + decl.init = this$1.parseMaybeAssign(isFor) | |
1082 | + } else if (kind === "const" && !(this$1.type === tt._in || (this$1.options.ecmaVersion >= 6 && this$1.isContextual("of")))) { | |
1083 | + this$1.unexpected() | |
1084 | + } else if (decl.id.type != "Identifier" && !(isFor && (this$1.type === tt._in || this$1.isContextual("of")))) { | |
1085 | + this$1.raise(this$1.lastTokEnd, "Complex binding patterns require an initialization value") | |
1086 | + } else { | |
1087 | + decl.init = null | |
1088 | + } | |
1089 | + node.declarations.push(this$1.finishNode(decl, "VariableDeclarator")) | |
1090 | + if (!this$1.eat(tt.comma)) break | |
1091 | + } | |
1092 | + return node | |
1093 | +} | |
1094 | + | |
1095 | +pp$1.parseVarId = function(decl) { | |
1096 | + decl.id = this.parseBindingAtom() | |
1097 | + this.checkLVal(decl.id, true) | |
1098 | +} | |
1099 | + | |
1100 | +// Parse a function declaration or literal (depending on the | |
1101 | +// `isStatement` parameter). | |
1102 | + | |
1103 | +pp$1.parseFunction = function(node, isStatement, allowExpressionBody, isAsync) { | |
1104 | + this.initFunction(node) | |
1105 | + if (this.options.ecmaVersion >= 6 && !isAsync) | |
1106 | + node.generator = this.eat(tt.star) | |
1107 | + if (this.options.ecmaVersion >= 8) | |
1108 | + node.async = !!isAsync | |
1109 | + | |
1110 | + if (isStatement == null) | |
1111 | + isStatement = this.type == tt.name | |
1112 | + if (isStatement) | |
1113 | + node.id = this.parseIdent() | |
1114 | + | |
1115 | + var oldInGen = this.inGenerator, oldInAsync = this.inAsync, | |
1116 | + oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction | |
1117 | + this.inGenerator = node.generator | |
1118 | + this.inAsync = node.async | |
1119 | + this.yieldPos = 0 | |
1120 | + this.awaitPos = 0 | |
1121 | + this.inFunction = true | |
1122 | + | |
1123 | + if (!isStatement && this.type === tt.name) | |
1124 | + node.id = this.parseIdent() | |
1125 | + this.parseFunctionParams(node) | |
1126 | + this.parseFunctionBody(node, allowExpressionBody) | |
1127 | + | |
1128 | + this.inGenerator = oldInGen | |
1129 | + this.inAsync = oldInAsync | |
1130 | + this.yieldPos = oldYieldPos | |
1131 | + this.awaitPos = oldAwaitPos | |
1132 | + this.inFunction = oldInFunc | |
1133 | + return this.finishNode(node, isStatement ? "FunctionDeclaration" : "FunctionExpression") | |
1134 | +} | |
1135 | + | |
1136 | +pp$1.parseFunctionParams = function(node) { | |
1137 | + this.expect(tt.parenL) | |
1138 | + node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8, true) | |
1139 | + this.checkYieldAwaitInDefaultParams() | |
1140 | +} | |
1141 | + | |
1142 | +// Parse a class declaration or literal (depending on the | |
1143 | +// `isStatement` parameter). | |
1144 | + | |
1145 | +pp$1.parseClass = function(node, isStatement) { | |
1146 | + var this$1 = this; | |
1147 | + | |
1148 | + this.next() | |
1149 | + if (isStatement == null) isStatement = this.type === tt.name | |
1150 | + this.parseClassId(node, isStatement) | |
1151 | + this.parseClassSuper(node) | |
1152 | + var classBody = this.startNode() | |
1153 | + var hadConstructor = false | |
1154 | + classBody.body = [] | |
1155 | + this.expect(tt.braceL) | |
1156 | + while (!this.eat(tt.braceR)) { | |
1157 | + if (this$1.eat(tt.semi)) continue | |
1158 | + var method = this$1.startNode() | |
1159 | + var isGenerator = this$1.eat(tt.star) | |
1160 | + var isAsync = false | |
1161 | + var isMaybeStatic = this$1.type === tt.name && this$1.value === "static" | |
1162 | + this$1.parsePropertyName(method) | |
1163 | + method.static = isMaybeStatic && this$1.type !== tt.parenL | |
1164 | + if (method.static) { | |
1165 | + if (isGenerator) this$1.unexpected() | |
1166 | + isGenerator = this$1.eat(tt.star) | |
1167 | + this$1.parsePropertyName(method) | |
1168 | + } | |
1169 | + if (this$1.options.ecmaVersion >= 8 && !isGenerator && !method.computed && | |
1170 | + method.key.type === "Identifier" && method.key.name === "async" && this$1.type !== tt.parenL && | |
1171 | + !this$1.canInsertSemicolon()) { | |
1172 | + isAsync = true | |
1173 | + this$1.parsePropertyName(method) | |
1174 | + } | |
1175 | + method.kind = "method" | |
1176 | + var isGetSet = false | |
1177 | + if (!method.computed) { | |
1178 | + var key = method.key; | |
1179 | + if (!isGenerator && !isAsync && key.type === "Identifier" && this$1.type !== tt.parenL && (key.name === "get" || key.name === "set")) { | |
1180 | + isGetSet = true | |
1181 | + method.kind = key.name | |
1182 | + key = this$1.parsePropertyName(method) | |
1183 | + } | |
1184 | + if (!method.static && (key.type === "Identifier" && key.name === "constructor" || | |
1185 | + key.type === "Literal" && key.value === "constructor")) { | |
1186 | + if (hadConstructor) this$1.raise(key.start, "Duplicate constructor in the same class") | |
1187 | + if (isGetSet) this$1.raise(key.start, "Constructor can't have get/set modifier") | |
1188 | + if (isGenerator) this$1.raise(key.start, "Constructor can't be a generator") | |
1189 | + if (isAsync) this$1.raise(key.start, "Constructor can't be an async method") | |
1190 | + method.kind = "constructor" | |
1191 | + hadConstructor = true | |
1192 | + } | |
1193 | + } | |
1194 | + this$1.parseClassMethod(classBody, method, isGenerator, isAsync) | |
1195 | + if (isGetSet) { | |
1196 | + var paramCount = method.kind === "get" ? 0 : 1 | |
1197 | + if (method.value.params.length !== paramCount) { | |
1198 | + var start = method.value.start | |
1199 | + if (method.kind === "get") | |
1200 | + this$1.raiseRecoverable(start, "getter should have no params") | |
1201 | + else | |
1202 | + this$1.raiseRecoverable(start, "setter should have exactly one param") | |
1203 | + } else { | |
1204 | + if (method.kind === "set" && method.value.params[0].type === "RestElement") | |
1205 | + this$1.raiseRecoverable(method.value.params[0].start, "Setter cannot use rest params") | |
1206 | + } | |
1207 | + } | |
1208 | + } | |
1209 | + node.body = this.finishNode(classBody, "ClassBody") | |
1210 | + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression") | |
1211 | +} | |
1212 | + | |
1213 | +pp$1.parseClassMethod = function(classBody, method, isGenerator, isAsync) { | |
1214 | + method.value = this.parseMethod(isGenerator, isAsync) | |
1215 | + classBody.body.push(this.finishNode(method, "MethodDefinition")) | |
1216 | +} | |
1217 | + | |
1218 | +pp$1.parseClassId = function(node, isStatement) { | |
1219 | + node.id = this.type === tt.name ? this.parseIdent() : isStatement ? this.unexpected() : null | |
1220 | +} | |
1221 | + | |
1222 | +pp$1.parseClassSuper = function(node) { | |
1223 | + node.superClass = this.eat(tt._extends) ? this.parseExprSubscripts() : null | |
1224 | +} | |
1225 | + | |
1226 | +// Parses module export declaration. | |
1227 | + | |
1228 | +pp$1.parseExport = function(node, exports) { | |
1229 | + var this$1 = this; | |
1230 | + | |
1231 | + this.next() | |
1232 | + // export * from '...' | |
1233 | + if (this.eat(tt.star)) { | |
1234 | + this.expectContextual("from") | |
1235 | + node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected() | |
1236 | + this.semicolon() | |
1237 | + return this.finishNode(node, "ExportAllDeclaration") | |
1238 | + } | |
1239 | + if (this.eat(tt._default)) { // export default ... | |
1240 | + this.checkExport(exports, "default", this.lastTokStart) | |
1241 | + var isAsync | |
1242 | + if (this.type === tt._function || (isAsync = this.isAsyncFunction())) { | |
1243 | + var fNode = this.startNode() | |
1244 | + this.next() | |
1245 | + if (isAsync) this.next() | |
1246 | + node.declaration = this.parseFunction(fNode, null, false, isAsync) | |
1247 | + } else if (this.type === tt._class) { | |
1248 | + var cNode = this.startNode() | |
1249 | + node.declaration = this.parseClass(cNode, null) | |
1250 | + } else { | |
1251 | + node.declaration = this.parseMaybeAssign() | |
1252 | + this.semicolon() | |
1253 | + } | |
1254 | + return this.finishNode(node, "ExportDefaultDeclaration") | |
1255 | + } | |
1256 | + // export var|const|let|function|class ... | |
1257 | + if (this.shouldParseExportStatement()) { | |
1258 | + node.declaration = this.parseStatement(true) | |
1259 | + if (node.declaration.type === "VariableDeclaration") | |
1260 | + this.checkVariableExport(exports, node.declaration.declarations) | |
1261 | + else | |
1262 | + this.checkExport(exports, node.declaration.id.name, node.declaration.id.start) | |
1263 | + node.specifiers = [] | |
1264 | + node.source = null | |
1265 | + } else { // export { x, y as z } [from '...'] | |
1266 | + node.declaration = null | |
1267 | + node.specifiers = this.parseExportSpecifiers(exports) | |
1268 | + if (this.eatContextual("from")) { | |
1269 | + node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected() | |
1270 | + } else { | |
1271 | + // check for keywords used as local names | |
1272 | + for (var i = 0; i < node.specifiers.length; i++) { | |
1273 | + if (this$1.keywords.test(node.specifiers[i].local.name) || this$1.reservedWords.test(node.specifiers[i].local.name)) { | |
1274 | + this$1.unexpected(node.specifiers[i].local.start) | |
1275 | + } | |
1276 | + } | |
1277 | + | |
1278 | + node.source = null | |
1279 | + } | |
1280 | + this.semicolon() | |
1281 | + } | |
1282 | + return this.finishNode(node, "ExportNamedDeclaration") | |
1283 | +} | |
1284 | + | |
1285 | +pp$1.checkExport = function(exports, name, pos) { | |
1286 | + if (!exports) return | |
1287 | + if (Object.prototype.hasOwnProperty.call(exports, name)) | |
1288 | + this.raiseRecoverable(pos, "Duplicate export '" + name + "'") | |
1289 | + exports[name] = true | |
1290 | +} | |
1291 | + | |
1292 | +pp$1.checkPatternExport = function(exports, pat) { | |
1293 | + var this$1 = this; | |
1294 | + | |
1295 | + var type = pat.type | |
1296 | + if (type == "Identifier") | |
1297 | + this.checkExport(exports, pat.name, pat.start) | |
1298 | + else if (type == "ObjectPattern") | |
1299 | + for (var i = 0; i < pat.properties.length; ++i) | |
1300 | + this$1.checkPatternExport(exports, pat.properties[i].value) | |
1301 | + else if (type == "ArrayPattern") | |
1302 | + for (var i$1 = 0; i$1 < pat.elements.length; ++i$1) { | |
1303 | + var elt = pat.elements[i$1] | |
1304 | + if (elt) this$1.checkPatternExport(exports, elt) | |
1305 | + } | |
1306 | + else if (type == "AssignmentPattern") | |
1307 | + this.checkPatternExport(exports, pat.left) | |
1308 | + else if (type == "ParenthesizedExpression") | |
1309 | + this.checkPatternExport(exports, pat.expression) | |
1310 | +} | |
1311 | + | |
1312 | +pp$1.checkVariableExport = function(exports, decls) { | |
1313 | + var this$1 = this; | |
1314 | + | |
1315 | + if (!exports) return | |
1316 | + for (var i = 0; i < decls.length; i++) | |
1317 | + this$1.checkPatternExport(exports, decls[i].id) | |
1318 | +} | |
1319 | + | |
1320 | +pp$1.shouldParseExportStatement = function() { | |
1321 | + return this.type.keyword === "var" | |
1322 | + || this.type.keyword === "const" | |
1323 | + || this.type.keyword === "class" | |
1324 | + || this.type.keyword === "function" | |
1325 | + || this.isLet() | |
1326 | + || this.isAsyncFunction() | |
1327 | +} | |
1328 | + | |
1329 | +// Parses a comma-separated list of module exports. | |
1330 | + | |
1331 | +pp$1.parseExportSpecifiers = function(exports) { | |
1332 | + var this$1 = this; | |
1333 | + | |
1334 | + var nodes = [], first = true | |
1335 | + // export { x, y as z } [from '...'] | |
1336 | + this.expect(tt.braceL) | |
1337 | + while (!this.eat(tt.braceR)) { | |
1338 | + if (!first) { | |
1339 | + this$1.expect(tt.comma) | |
1340 | + if (this$1.afterTrailingComma(tt.braceR)) break | |
1341 | + } else first = false | |
1342 | + | |
1343 | + var node = this$1.startNode() | |
1344 | + node.local = this$1.parseIdent(true) | |
1345 | + node.exported = this$1.eatContextual("as") ? this$1.parseIdent(true) : node.local | |
1346 | + this$1.checkExport(exports, node.exported.name, node.exported.start) | |
1347 | + nodes.push(this$1.finishNode(node, "ExportSpecifier")) | |
1348 | + } | |
1349 | + return nodes | |
1350 | +} | |
1351 | + | |
1352 | +// Parses import declaration. | |
1353 | + | |
1354 | +pp$1.parseImport = function(node) { | |
1355 | + this.next() | |
1356 | + // import '...' | |
1357 | + if (this.type === tt.string) { | |
1358 | + node.specifiers = empty | |
1359 | + node.source = this.parseExprAtom() | |
1360 | + } else { | |
1361 | + node.specifiers = this.parseImportSpecifiers() | |
1362 | + this.expectContextual("from") | |
1363 | + node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected() | |
1364 | + } | |
1365 | + this.semicolon() | |
1366 | + return this.finishNode(node, "ImportDeclaration") | |
1367 | +} | |
1368 | + | |
1369 | +// Parses a comma-separated list of module imports. | |
1370 | + | |
1371 | +pp$1.parseImportSpecifiers = function() { | |
1372 | + var this$1 = this; | |
1373 | + | |
1374 | + var nodes = [], first = true | |
1375 | + if (this.type === tt.name) { | |
1376 | + // import defaultObj, { x, y as z } from '...' | |
1377 | + var node = this.startNode() | |
1378 | + node.local = this.parseIdent() | |
1379 | + this.checkLVal(node.local, true) | |
1380 | + nodes.push(this.finishNode(node, "ImportDefaultSpecifier")) | |
1381 | + if (!this.eat(tt.comma)) return nodes | |
1382 | + } | |
1383 | + if (this.type === tt.star) { | |
1384 | + var node$1 = this.startNode() | |
1385 | + this.next() | |
1386 | + this.expectContextual("as") | |
1387 | + node$1.local = this.parseIdent() | |
1388 | + this.checkLVal(node$1.local, true) | |
1389 | + nodes.push(this.finishNode(node$1, "ImportNamespaceSpecifier")) | |
1390 | + return nodes | |
1391 | + } | |
1392 | + this.expect(tt.braceL) | |
1393 | + while (!this.eat(tt.braceR)) { | |
1394 | + if (!first) { | |
1395 | + this$1.expect(tt.comma) | |
1396 | + if (this$1.afterTrailingComma(tt.braceR)) break | |
1397 | + } else first = false | |
1398 | + | |
1399 | + var node$2 = this$1.startNode() | |
1400 | + node$2.imported = this$1.parseIdent(true) | |
1401 | + if (this$1.eatContextual("as")) { | |
1402 | + node$2.local = this$1.parseIdent() | |
1403 | + } else { | |
1404 | + node$2.local = node$2.imported | |
1405 | + if (this$1.isKeyword(node$2.local.name)) this$1.unexpected(node$2.local.start) | |
1406 | + if (this$1.reservedWordsStrict.test(node$2.local.name)) this$1.raiseRecoverable(node$2.local.start, "The keyword '" + node$2.local.name + "' is reserved") | |
1407 | + } | |
1408 | + this$1.checkLVal(node$2.local, true) | |
1409 | + nodes.push(this$1.finishNode(node$2, "ImportSpecifier")) | |
1410 | + } | |
1411 | + return nodes | |
1412 | +} | |
1413 | + | |
1414 | +var pp$2 = Parser.prototype | |
1415 | + | |
1416 | +// Convert existing expression atom to assignable pattern | |
1417 | +// if possible. | |
1418 | + | |
1419 | +pp$2.toAssignable = function(node, isBinding) { | |
1420 | + var this$1 = this; | |
1421 | + | |
1422 | + if (this.options.ecmaVersion >= 6 && node) { | |
1423 | + switch (node.type) { | |
1424 | + case "Identifier": | |
1425 | + if (this.inAsync && node.name === "await") | |
1426 | + this.raise(node.start, "Can not use 'await' as identifier inside an async function") | |
1427 | + break | |
1428 | + | |
1429 | + case "ObjectPattern": | |
1430 | + case "ArrayPattern": | |
1431 | + break | |
1432 | + | |
1433 | + case "ObjectExpression": | |
1434 | + node.type = "ObjectPattern" | |
1435 | + for (var i = 0; i < node.properties.length; i++) { | |
1436 | + var prop = node.properties[i] | |
1437 | + if (prop.kind !== "init") this$1.raise(prop.key.start, "Object pattern can't contain getter or setter") | |
1438 | + this$1.toAssignable(prop.value, isBinding) | |
1439 | + } | |
1440 | + break | |
1441 | + | |
1442 | + case "ArrayExpression": | |
1443 | + node.type = "ArrayPattern" | |
1444 | + this.toAssignableList(node.elements, isBinding) | |
1445 | + break | |
1446 | + | |
1447 | + case "AssignmentExpression": | |
1448 | + if (node.operator === "=") { | |
1449 | + node.type = "AssignmentPattern" | |
1450 | + delete node.operator | |
1451 | + this.toAssignable(node.left, isBinding) | |
1452 | + // falls through to AssignmentPattern | |
1453 | + } else { | |
1454 | + this.raise(node.left.end, "Only '=' operator can be used for specifying default value.") | |
1455 | + break | |
1456 | + } | |
1457 | + | |
1458 | + case "AssignmentPattern": | |
1459 | + break | |
1460 | + | |
1461 | + case "ParenthesizedExpression": | |
1462 | + node.expression = this.toAssignable(node.expression, isBinding) | |
1463 | + break | |
1464 | + | |
1465 | + case "MemberExpression": | |
1466 | + if (!isBinding) break | |
1467 | + | |
1468 | + default: | |
1469 | + this.raise(node.start, "Assigning to rvalue") | |
1470 | + } | |
1471 | + } | |
1472 | + return node | |
1473 | +} | |
1474 | + | |
1475 | +// Convert list of expression atoms to binding list. | |
1476 | + | |
1477 | +pp$2.toAssignableList = function(exprList, isBinding) { | |
1478 | + var this$1 = this; | |
1479 | + | |
1480 | + var end = exprList.length | |
1481 | + if (end) { | |
1482 | + var last = exprList[end - 1] | |
1483 | + if (last && last.type == "RestElement") { | |
1484 | + --end | |
1485 | + } else if (last && last.type == "SpreadElement") { | |
1486 | + last.type = "RestElement" | |
1487 | + var arg = last.argument | |
1488 | + this.toAssignable(arg, isBinding) | |
1489 | + if (arg.type !== "Identifier" && arg.type !== "MemberExpression" && arg.type !== "ArrayPattern") | |
1490 | + this.unexpected(arg.start) | |
1491 | + --end | |
1492 | + } | |
1493 | + | |
1494 | + if (isBinding && last && last.type === "RestElement" && last.argument.type !== "Identifier") | |
1495 | + this.unexpected(last.argument.start) | |
1496 | + } | |
1497 | + for (var i = 0; i < end; i++) { | |
1498 | + var elt = exprList[i] | |
1499 | + if (elt) this$1.toAssignable(elt, isBinding) | |
1500 | + } | |
1501 | + return exprList | |
1502 | +} | |
1503 | + | |
1504 | +// Parses spread element. | |
1505 | + | |
1506 | +pp$2.parseSpread = function(refDestructuringErrors) { | |
1507 | + var node = this.startNode() | |
1508 | + this.next() | |
1509 | + node.argument = this.parseMaybeAssign(false, refDestructuringErrors) | |
1510 | + return this.finishNode(node, "SpreadElement") | |
1511 | +} | |
1512 | + | |
1513 | +pp$2.parseRest = function(allowNonIdent) { | |
1514 | + var node = this.startNode() | |
1515 | + this.next() | |
1516 | + | |
1517 | + // RestElement inside of a function parameter must be an identifier | |
1518 | + if (allowNonIdent) node.argument = this.type === tt.name ? this.parseIdent() : this.unexpected() | |
1519 | + else node.argument = this.type === tt.name || this.type === tt.bracketL ? this.parseBindingAtom() : this.unexpected() | |
1520 | + | |
1521 | + return this.finishNode(node, "RestElement") | |
1522 | +} | |
1523 | + | |
1524 | +// Parses lvalue (assignable) atom. | |
1525 | + | |
1526 | +pp$2.parseBindingAtom = function() { | |
1527 | + if (this.options.ecmaVersion < 6) return this.parseIdent() | |
1528 | + switch (this.type) { | |
1529 | + case tt.name: | |
1530 | + return this.parseIdent() | |
1531 | + | |
1532 | + case tt.bracketL: | |
1533 | + var node = this.startNode() | |
1534 | + this.next() | |
1535 | + node.elements = this.parseBindingList(tt.bracketR, true, true) | |
1536 | + return this.finishNode(node, "ArrayPattern") | |
1537 | + | |
1538 | + case tt.braceL: | |
1539 | + return this.parseObj(true) | |
1540 | + | |
1541 | + default: | |
1542 | + this.unexpected() | |
1543 | + } | |
1544 | +} | |
1545 | + | |
1546 | +pp$2.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowNonIdent) { | |
1547 | + var this$1 = this; | |
1548 | + | |
1549 | + var elts = [], first = true | |
1550 | + while (!this.eat(close)) { | |
1551 | + if (first) first = false | |
1552 | + else this$1.expect(tt.comma) | |
1553 | + if (allowEmpty && this$1.type === tt.comma) { | |
1554 | + elts.push(null) | |
1555 | + } else if (allowTrailingComma && this$1.afterTrailingComma(close)) { | |
1556 | + break | |
1557 | + } else if (this$1.type === tt.ellipsis) { | |
1558 | + var rest = this$1.parseRest(allowNonIdent) | |
1559 | + this$1.parseBindingListItem(rest) | |
1560 | + elts.push(rest) | |
1561 | + if (this$1.type === tt.comma) this$1.raise(this$1.start, "Comma is not permitted after the rest element") | |
1562 | + this$1.expect(close) | |
1563 | + break | |
1564 | + } else { | |
1565 | + var elem = this$1.parseMaybeDefault(this$1.start, this$1.startLoc) | |
1566 | + this$1.parseBindingListItem(elem) | |
1567 | + elts.push(elem) | |
1568 | + } | |
1569 | + } | |
1570 | + return elts | |
1571 | +} | |
1572 | + | |
1573 | +pp$2.parseBindingListItem = function(param) { | |
1574 | + return param | |
1575 | +} | |
1576 | + | |
1577 | +// Parses assignment pattern around given atom if possible. | |
1578 | + | |
1579 | +pp$2.parseMaybeDefault = function(startPos, startLoc, left) { | |
1580 | + left = left || this.parseBindingAtom() | |
1581 | + if (this.options.ecmaVersion < 6 || !this.eat(tt.eq)) return left | |
1582 | + var node = this.startNodeAt(startPos, startLoc) | |
1583 | + node.left = left | |
1584 | + node.right = this.parseMaybeAssign() | |
1585 | + return this.finishNode(node, "AssignmentPattern") | |
1586 | +} | |
1587 | + | |
1588 | +// Verify that a node is an lval — something that can be assigned | |
1589 | +// to. | |
1590 | + | |
1591 | +pp$2.checkLVal = function(expr, isBinding, checkClashes) { | |
1592 | + var this$1 = this; | |
1593 | + | |
1594 | + switch (expr.type) { | |
1595 | + case "Identifier": | |
1596 | + if (this.strict && this.reservedWordsStrictBind.test(expr.name)) | |
1597 | + this.raiseRecoverable(expr.start, (isBinding ? "Binding " : "Assigning to ") + expr.name + " in strict mode") | |
1598 | + if (checkClashes) { | |
1599 | + if (has(checkClashes, expr.name)) | |
1600 | + this.raiseRecoverable(expr.start, "Argument name clash") | |
1601 | + checkClashes[expr.name] = true | |
1602 | + } | |
1603 | + break | |
1604 | + | |
1605 | + case "MemberExpression": | |
1606 | + if (isBinding) this.raiseRecoverable(expr.start, (isBinding ? "Binding" : "Assigning to") + " member expression") | |
1607 | + break | |
1608 | + | |
1609 | + case "ObjectPattern": | |
1610 | + for (var i = 0; i < expr.properties.length; i++) | |
1611 | + this$1.checkLVal(expr.properties[i].value, isBinding, checkClashes) | |
1612 | + break | |
1613 | + | |
1614 | + case "ArrayPattern": | |
1615 | + for (var i$1 = 0; i$1 < expr.elements.length; i$1++) { | |
1616 | + var elem = expr.elements[i$1] | |
1617 | + if (elem) this$1.checkLVal(elem, isBinding, checkClashes) | |
1618 | + } | |
1619 | + break | |
1620 | + | |
1621 | + case "AssignmentPattern": | |
1622 | + this.checkLVal(expr.left, isBinding, checkClashes) | |
1623 | + break | |
1624 | + | |
1625 | + case "RestElement": | |
1626 | + this.checkLVal(expr.argument, isBinding, checkClashes) | |
1627 | + break | |
1628 | + | |
1629 | + case "ParenthesizedExpression": | |
1630 | + this.checkLVal(expr.expression, isBinding, checkClashes) | |
1631 | + break | |
1632 | + | |
1633 | + default: | |
1634 | + this.raise(expr.start, (isBinding ? "Binding" : "Assigning to") + " rvalue") | |
1635 | + } | |
1636 | +} | |
1637 | + | |
1638 | +// A recursive descent parser operates by defining functions for all | |
1639 | +// syntactic elements, and recursively calling those, each function | |
1640 | +// advancing the input stream and returning an AST node. Precedence | |
1641 | +// of constructs (for example, the fact that `!x[1]` means `!(x[1])` | |
1642 | +// instead of `(!x)[1]` is handled by the fact that the parser | |
1643 | +// function that parses unary prefix operators is called first, and | |
1644 | +// in turn calls the function that parses `[]` subscripts — that | |
1645 | +// way, it'll receive the node for `x[1]` already parsed, and wraps | |
1646 | +// *that* in the unary operator node. | |
1647 | +// | |
1648 | +// Acorn uses an [operator precedence parser][opp] to handle binary | |
1649 | +// operator precedence, because it is much more compact than using | |
1650 | +// the technique outlined above, which uses different, nesting | |
1651 | +// functions to specify precedence, for all of the ten binary | |
1652 | +// precedence levels that JavaScript defines. | |
1653 | +// | |
1654 | +// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser | |
1655 | + | |
1656 | +var pp$3 = Parser.prototype | |
1657 | + | |
1658 | +// Check if property name clashes with already added. | |
1659 | +// Object/class getters and setters are not allowed to clash — | |
1660 | +// either with each other or with an init property — and in | |
1661 | +// strict mode, init properties are also not allowed to be repeated. | |
1662 | + | |
1663 | +pp$3.checkPropClash = function(prop, propHash) { | |
1664 | + if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand)) | |
1665 | + return | |
1666 | + var key = prop.key; | |
1667 | + var name | |
1668 | + switch (key.type) { | |
1669 | + case "Identifier": name = key.name; break | |
1670 | + case "Literal": name = String(key.value); break | |
1671 | + default: return | |
1672 | + } | |
1673 | + var kind = prop.kind; | |
1674 | + if (this.options.ecmaVersion >= 6) { | |
1675 | + if (name === "__proto__" && kind === "init") { | |
1676 | + if (propHash.proto) this.raiseRecoverable(key.start, "Redefinition of __proto__ property") | |
1677 | + propHash.proto = true | |
1678 | + } | |
1679 | + return | |
1680 | + } | |
1681 | + name = "$" + name | |
1682 | + var other = propHash[name] | |
1683 | + if (other) { | |
1684 | + var isGetSet = kind !== "init" | |
1685 | + if ((this.strict || isGetSet) && other[kind] || !(isGetSet ^ other.init)) | |
1686 | + this.raiseRecoverable(key.start, "Redefinition of property") | |
1687 | + } else { | |
1688 | + other = propHash[name] = { | |
1689 | + init: false, | |
1690 | + get: false, | |
1691 | + set: false | |
1692 | + } | |
1693 | + } | |
1694 | + other[kind] = true | |
1695 | +} | |
1696 | + | |
1697 | +// ### Expression parsing | |
1698 | + | |
1699 | +// These nest, from the most general expression type at the top to | |
1700 | +// 'atomic', nondivisible expression types at the bottom. Most of | |
1701 | +// the functions will simply let the function(s) below them parse, | |
1702 | +// and, *if* the syntactic construct they handle is present, wrap | |
1703 | +// the AST node that the inner parser gave them in another node. | |
1704 | + | |
1705 | +// Parse a full expression. The optional arguments are used to | |
1706 | +// forbid the `in` operator (in for loops initalization expressions) | |
1707 | +// and provide reference for storing '=' operator inside shorthand | |
1708 | +// property assignment in contexts where both object expression | |
1709 | +// and object pattern might appear (so it's possible to raise | |
1710 | +// delayed syntax error at correct position). | |
1711 | + | |
1712 | +pp$3.parseExpression = function(noIn, refDestructuringErrors) { | |
1713 | + var this$1 = this; | |
1714 | + | |
1715 | + var startPos = this.start, startLoc = this.startLoc | |
1716 | + var expr = this.parseMaybeAssign(noIn, refDestructuringErrors) | |
1717 | + if (this.type === tt.comma) { | |
1718 | + var node = this.startNodeAt(startPos, startLoc) | |
1719 | + node.expressions = [expr] | |
1720 | + while (this.eat(tt.comma)) node.expressions.push(this$1.parseMaybeAssign(noIn, refDestructuringErrors)) | |
1721 | + return this.finishNode(node, "SequenceExpression") | |
1722 | + } | |
1723 | + return expr | |
1724 | +} | |
1725 | + | |
1726 | +// Parse an assignment expression. This includes applications of | |
1727 | +// operators like `+=`. | |
1728 | + | |
1729 | +pp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) { | |
1730 | + if (this.inGenerator && this.isContextual("yield")) return this.parseYield() | |
1731 | + | |
1732 | + var ownDestructuringErrors = false, oldParenAssign = -1 | |
1733 | + if (refDestructuringErrors) { | |
1734 | + oldParenAssign = refDestructuringErrors.parenthesizedAssign | |
1735 | + refDestructuringErrors.parenthesizedAssign = -1 | |
1736 | + } else { | |
1737 | + refDestructuringErrors = new DestructuringErrors | |
1738 | + ownDestructuringErrors = true | |
1739 | + } | |
1740 | + | |
1741 | + var startPos = this.start, startLoc = this.startLoc | |
1742 | + if (this.type == tt.parenL || this.type == tt.name) | |
1743 | + this.potentialArrowAt = this.start | |
1744 | + var left = this.parseMaybeConditional(noIn, refDestructuringErrors) | |
1745 | + if (afterLeftParse) left = afterLeftParse.call(this, left, startPos, startLoc) | |
1746 | + if (this.type.isAssign) { | |
1747 | + this.checkPatternErrors(refDestructuringErrors, true) | |
1748 | + if (!ownDestructuringErrors) DestructuringErrors.call(refDestructuringErrors) | |
1749 | + var node = this.startNodeAt(startPos, startLoc) | |
1750 | + node.operator = this.value | |
1751 | + node.left = this.type === tt.eq ? this.toAssignable(left) : left | |
1752 | + refDestructuringErrors.shorthandAssign = -1 // reset because shorthand default was used correctly | |
1753 | + this.checkLVal(left) | |
1754 | + this.next() | |
1755 | + node.right = this.parseMaybeAssign(noIn) | |
1756 | + return this.finishNode(node, "AssignmentExpression") | |
1757 | + } else { | |
1758 | + if (ownDestructuringErrors) this.checkExpressionErrors(refDestructuringErrors, true) | |
1759 | + } | |
1760 | + if (oldParenAssign > -1) refDestructuringErrors.parenthesizedAssign = oldParenAssign | |
1761 | + return left | |
1762 | +} | |
1763 | + | |
1764 | +// Parse a ternary conditional (`?:`) operator. | |
1765 | + | |
1766 | +pp$3.parseMaybeConditional = function(noIn, refDestructuringErrors) { | |
1767 | + var startPos = this.start, startLoc = this.startLoc | |
1768 | + var expr = this.parseExprOps(noIn, refDestructuringErrors) | |
1769 | + if (this.checkExpressionErrors(refDestructuringErrors)) return expr | |
1770 | + if (this.eat(tt.question)) { | |
1771 | + var node = this.startNodeAt(startPos, startLoc) | |
1772 | + node.test = expr | |
1773 | + node.consequent = this.parseMaybeAssign() | |
1774 | + this.expect(tt.colon) | |
1775 | + node.alternate = this.parseMaybeAssign(noIn) | |
1776 | + return this.finishNode(node, "ConditionalExpression") | |
1777 | + } | |
1778 | + return expr | |
1779 | +} | |
1780 | + | |
1781 | +// Start the precedence parser. | |
1782 | + | |
1783 | +pp$3.parseExprOps = function(noIn, refDestructuringErrors) { | |
1784 | + var startPos = this.start, startLoc = this.startLoc | |
1785 | + var expr = this.parseMaybeUnary(refDestructuringErrors, false) | |
1786 | + if (this.checkExpressionErrors(refDestructuringErrors)) return expr | |
1787 | + return this.parseExprOp(expr, startPos, startLoc, -1, noIn) | |
1788 | +} | |
1789 | + | |
1790 | +// Parse binary operators with the operator precedence parsing | |
1791 | +// algorithm. `left` is the left-hand side of the operator. | |
1792 | +// `minPrec` provides context that allows the function to stop and | |
1793 | +// defer further parser to one of its callers when it encounters an | |
1794 | +// operator that has a lower precedence than the set it is parsing. | |
1795 | + | |
1796 | +pp$3.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, noIn) { | |
1797 | + var prec = this.type.binop | |
1798 | + if (prec != null && (!noIn || this.type !== tt._in)) { | |
1799 | + if (prec > minPrec) { | |
1800 | + var logical = this.type === tt.logicalOR || this.type === tt.logicalAND | |
1801 | + var op = this.value | |
1802 | + this.next() | |
1803 | + var startPos = this.start, startLoc = this.startLoc | |
1804 | + var right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, noIn) | |
1805 | + var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical) | |
1806 | + return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn) | |
1807 | + } | |
1808 | + } | |
1809 | + return left | |
1810 | +} | |
1811 | + | |
1812 | +pp$3.buildBinary = function(startPos, startLoc, left, right, op, logical) { | |
1813 | + var node = this.startNodeAt(startPos, startLoc) | |
1814 | + node.left = left | |
1815 | + node.operator = op | |
1816 | + node.right = right | |
1817 | + return this.finishNode(node, logical ? "LogicalExpression" : "BinaryExpression") | |
1818 | +} | |
1819 | + | |
1820 | +// Parse unary operators, both prefix and postfix. | |
1821 | + | |
1822 | +pp$3.parseMaybeUnary = function(refDestructuringErrors, sawUnary) { | |
1823 | + var this$1 = this; | |
1824 | + | |
1825 | + var startPos = this.start, startLoc = this.startLoc, expr | |
1826 | + if (this.inAsync && this.isContextual("await")) { | |
1827 | + expr = this.parseAwait(refDestructuringErrors) | |
1828 | + sawUnary = true | |
1829 | + } else if (this.type.prefix) { | |
1830 | + var node = this.startNode(), update = this.type === tt.incDec | |
1831 | + node.operator = this.value | |
1832 | + node.prefix = true | |
1833 | + this.next() | |
1834 | + node.argument = this.parseMaybeUnary(null, true) | |
1835 | + this.checkExpressionErrors(refDestructuringErrors, true) | |
1836 | + if (update) this.checkLVal(node.argument) | |
1837 | + else if (this.strict && node.operator === "delete" && | |
1838 | + node.argument.type === "Identifier") | |
1839 | + this.raiseRecoverable(node.start, "Deleting local variable in strict mode") | |
1840 | + else sawUnary = true | |
1841 | + expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression") | |
1842 | + } else { | |
1843 | + expr = this.parseExprSubscripts(refDestructuringErrors) | |
1844 | + if (this.checkExpressionErrors(refDestructuringErrors)) return expr | |
1845 | + while (this.type.postfix && !this.canInsertSemicolon()) { | |
1846 | + var node$1 = this$1.startNodeAt(startPos, startLoc) | |
1847 | + node$1.operator = this$1.value | |
1848 | + node$1.prefix = false | |
1849 | + node$1.argument = expr | |
1850 | + this$1.checkLVal(expr) | |
1851 | + this$1.next() | |
1852 | + expr = this$1.finishNode(node$1, "UpdateExpression") | |
1853 | + } | |
1854 | + } | |
1855 | + | |
1856 | + if (!sawUnary && this.eat(tt.starstar)) | |
1857 | + return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), "**", false) | |
1858 | + else | |
1859 | + return expr | |
1860 | +} | |
1861 | + | |
1862 | +// Parse call, dot, and `[]`-subscript expressions. | |
1863 | + | |
1864 | +pp$3.parseExprSubscripts = function(refDestructuringErrors) { | |
1865 | + var startPos = this.start, startLoc = this.startLoc | |
1866 | + var expr = this.parseExprAtom(refDestructuringErrors) | |
1867 | + var skipArrowSubscripts = expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")" | |
1868 | + if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) return expr | |
1869 | + var result = this.parseSubscripts(expr, startPos, startLoc) | |
1870 | + if (refDestructuringErrors && result.type === "MemberExpression") { | |
1871 | + if (refDestructuringErrors.parenthesizedAssign >= result.start) refDestructuringErrors.parenthesizedAssign = -1 | |
1872 | + if (refDestructuringErrors.parenthesizedBind >= result.start) refDestructuringErrors.parenthesizedBind = -1 | |
1873 | + } | |
1874 | + return result | |
1875 | +} | |
1876 | + | |
1877 | +pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) { | |
1878 | + var this$1 = this; | |
1879 | + | |
1880 | + var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && | |
1881 | + this.lastTokEnd == base.end && !this.canInsertSemicolon() | |
1882 | + for (var computed;;) { | |
1883 | + if ((computed = this$1.eat(tt.bracketL)) || this$1.eat(tt.dot)) { | |
1884 | + var node = this$1.startNodeAt(startPos, startLoc) | |
1885 | + node.object = base | |
1886 | + node.property = computed ? this$1.parseExpression() : this$1.parseIdent(true) | |
1887 | + node.computed = !!computed | |
1888 | + if (computed) this$1.expect(tt.bracketR) | |
1889 | + base = this$1.finishNode(node, "MemberExpression") | |
1890 | + } else if (!noCalls && this$1.eat(tt.parenL)) { | |
1891 | + var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this$1.yieldPos, oldAwaitPos = this$1.awaitPos | |
1892 | + this$1.yieldPos = 0 | |
1893 | + this$1.awaitPos = 0 | |
1894 | + var exprList = this$1.parseExprList(tt.parenR, this$1.options.ecmaVersion >= 8, false, refDestructuringErrors) | |
1895 | + if (maybeAsyncArrow && !this$1.canInsertSemicolon() && this$1.eat(tt.arrow)) { | |
1896 | + this$1.checkPatternErrors(refDestructuringErrors, false) | |
1897 | + this$1.checkYieldAwaitInDefaultParams() | |
1898 | + this$1.yieldPos = oldYieldPos | |
1899 | + this$1.awaitPos = oldAwaitPos | |
1900 | + return this$1.parseArrowExpression(this$1.startNodeAt(startPos, startLoc), exprList, true) | |
1901 | + } | |
1902 | + this$1.checkExpressionErrors(refDestructuringErrors, true) | |
1903 | + this$1.yieldPos = oldYieldPos || this$1.yieldPos | |
1904 | + this$1.awaitPos = oldAwaitPos || this$1.awaitPos | |
1905 | + var node$1 = this$1.startNodeAt(startPos, startLoc) | |
1906 | + node$1.callee = base | |
1907 | + node$1.arguments = exprList | |
1908 | + base = this$1.finishNode(node$1, "CallExpression") | |
1909 | + } else if (this$1.type === tt.backQuote) { | |
1910 | + var node$2 = this$1.startNodeAt(startPos, startLoc) | |
1911 | + node$2.tag = base | |
1912 | + node$2.quasi = this$1.parseTemplate() | |
1913 | + base = this$1.finishNode(node$2, "TaggedTemplateExpression") | |
1914 | + } else { | |
1915 | + return base | |
1916 | + } | |
1917 | + } | |
1918 | +} | |
1919 | + | |
1920 | +// Parse an atomic expression — either a single token that is an | |
1921 | +// expression, an expression started by a keyword like `function` or | |
1922 | +// `new`, or an expression wrapped in punctuation like `()`, `[]`, | |
1923 | +// or `{}`. | |
1924 | + | |
1925 | +pp$3.parseExprAtom = function(refDestructuringErrors) { | |
1926 | + var node, canBeArrow = this.potentialArrowAt == this.start | |
1927 | + switch (this.type) { | |
1928 | + case tt._super: | |
1929 | + if (!this.inFunction) | |
1930 | + this.raise(this.start, "'super' outside of function or class") | |
1931 | + | |
1932 | + case tt._this: | |
1933 | + var type = this.type === tt._this ? "ThisExpression" : "Super" | |
1934 | + node = this.startNode() | |
1935 | + this.next() | |
1936 | + return this.finishNode(node, type) | |
1937 | + | |
1938 | + case tt.name: | |
1939 | + var startPos = this.start, startLoc = this.startLoc | |
1940 | + var id = this.parseIdent(this.type !== tt.name) | |
1941 | + if (this.options.ecmaVersion >= 8 && id.name === "async" && !this.canInsertSemicolon() && this.eat(tt._function)) | |
1942 | + return this.parseFunction(this.startNodeAt(startPos, startLoc), false, false, true) | |
1943 | + if (canBeArrow && !this.canInsertSemicolon()) { | |
1944 | + if (this.eat(tt.arrow)) | |
1945 | + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false) | |
1946 | + if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === tt.name) { | |
1947 | + id = this.parseIdent() | |
1948 | + if (this.canInsertSemicolon() || !this.eat(tt.arrow)) | |
1949 | + this.unexpected() | |
1950 | + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true) | |
1951 | + } | |
1952 | + } | |
1953 | + return id | |
1954 | + | |
1955 | + case tt.regexp: | |
1956 | + var value = this.value | |
1957 | + node = this.parseLiteral(value.value) | |
1958 | + node.regex = {pattern: value.pattern, flags: value.flags} | |
1959 | + return node | |
1960 | + | |
1961 | + case tt.num: case tt.string: | |
1962 | + return this.parseLiteral(this.value) | |
1963 | + | |
1964 | + case tt._null: case tt._true: case tt._false: | |
1965 | + node = this.startNode() | |
1966 | + node.value = this.type === tt._null ? null : this.type === tt._true | |
1967 | + node.raw = this.type.keyword | |
1968 | + this.next() | |
1969 | + return this.finishNode(node, "Literal") | |
1970 | + | |
1971 | + case tt.parenL: | |
1972 | + var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow) | |
1973 | + if (refDestructuringErrors) { | |
1974 | + if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr)) | |
1975 | + refDestructuringErrors.parenthesizedAssign = start | |
1976 | + if (refDestructuringErrors.parenthesizedBind < 0) | |
1977 | + refDestructuringErrors.parenthesizedBind = start | |
1978 | + } | |
1979 | + return expr | |
1980 | + | |
1981 | + case tt.bracketL: | |
1982 | + node = this.startNode() | |
1983 | + this.next() | |
1984 | + node.elements = this.parseExprList(tt.bracketR, true, true, refDestructuringErrors) | |
1985 | + return this.finishNode(node, "ArrayExpression") | |
1986 | + | |
1987 | + case tt.braceL: | |
1988 | + return this.parseObj(false, refDestructuringErrors) | |
1989 | + | |
1990 | + case tt._function: | |
1991 | + node = this.startNode() | |
1992 | + this.next() | |
1993 | + return this.parseFunction(node, false) | |
1994 | + | |
1995 | + case tt._class: | |
1996 | + return this.parseClass(this.startNode(), false) | |
1997 | + | |
1998 | + case tt._new: | |
1999 | + return this.parseNew() | |
2000 | + | |
2001 | + case tt.backQuote: | |
2002 | + return this.parseTemplate() | |
2003 | + | |
2004 | + default: | |
2005 | + this.unexpected() | |
2006 | + } | |
2007 | +} | |
2008 | + | |
2009 | +pp$3.parseLiteral = function(value) { | |
2010 | + var node = this.startNode() | |
2011 | + node.value = value | |
2012 | + node.raw = this.input.slice(this.start, this.end) | |
2013 | + this.next() | |
2014 | + return this.finishNode(node, "Literal") | |
2015 | +} | |
2016 | + | |
2017 | +pp$3.parseParenExpression = function() { | |
2018 | + this.expect(tt.parenL) | |
2019 | + var val = this.parseExpression() | |
2020 | + this.expect(tt.parenR) | |
2021 | + return val | |
2022 | +} | |
2023 | + | |
2024 | +pp$3.parseParenAndDistinguishExpression = function(canBeArrow) { | |
2025 | + var this$1 = this; | |
2026 | + | |
2027 | + var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8 | |
2028 | + if (this.options.ecmaVersion >= 6) { | |
2029 | + this.next() | |
2030 | + | |
2031 | + var innerStartPos = this.start, innerStartLoc = this.startLoc | |
2032 | + var exprList = [], first = true, lastIsComma = false | |
2033 | + var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart, innerParenStart | |
2034 | + this.yieldPos = 0 | |
2035 | + this.awaitPos = 0 | |
2036 | + while (this.type !== tt.parenR) { | |
2037 | + first ? first = false : this$1.expect(tt.comma) | |
2038 | + if (allowTrailingComma && this$1.afterTrailingComma(tt.parenR, true)) { | |
2039 | + lastIsComma = true | |
2040 | + break | |
2041 | + } else if (this$1.type === tt.ellipsis) { | |
2042 | + spreadStart = this$1.start | |
2043 | + exprList.push(this$1.parseParenItem(this$1.parseRest())) | |
2044 | + if (this$1.type === tt.comma) this$1.raise(this$1.start, "Comma is not permitted after the rest element") | |
2045 | + break | |
2046 | + } else { | |
2047 | + if (this$1.type === tt.parenL && !innerParenStart) { | |
2048 | + innerParenStart = this$1.start | |
2049 | + } | |
2050 | + exprList.push(this$1.parseMaybeAssign(false, refDestructuringErrors, this$1.parseParenItem)) | |
2051 | + } | |
2052 | + } | |
2053 | + var innerEndPos = this.start, innerEndLoc = this.startLoc | |
2054 | + this.expect(tt.parenR) | |
2055 | + | |
2056 | + if (canBeArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) { | |
2057 | + this.checkPatternErrors(refDestructuringErrors, false) | |
2058 | + this.checkYieldAwaitInDefaultParams() | |
2059 | + if (innerParenStart) this.unexpected(innerParenStart) | |
2060 | + this.yieldPos = oldYieldPos | |
2061 | + this.awaitPos = oldAwaitPos | |
2062 | + return this.parseParenArrowList(startPos, startLoc, exprList) | |
2063 | + } | |
2064 | + | |
2065 | + if (!exprList.length || lastIsComma) this.unexpected(this.lastTokStart) | |
2066 | + if (spreadStart) this.unexpected(spreadStart) | |
2067 | + this.checkExpressionErrors(refDestructuringErrors, true) | |
2068 | + this.yieldPos = oldYieldPos || this.yieldPos | |
2069 | + this.awaitPos = oldAwaitPos || this.awaitPos | |
2070 | + | |
2071 | + if (exprList.length > 1) { | |
2072 | + val = this.startNodeAt(innerStartPos, innerStartLoc) | |
2073 | + val.expressions = exprList | |
2074 | + this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc) | |
2075 | + } else { | |
2076 | + val = exprList[0] | |
2077 | + } | |
2078 | + } else { | |
2079 | + val = this.parseParenExpression() | |
2080 | + } | |
2081 | + | |
2082 | + if (this.options.preserveParens) { | |
2083 | + var par = this.startNodeAt(startPos, startLoc) | |
2084 | + par.expression = val | |
2085 | + return this.finishNode(par, "ParenthesizedExpression") | |
2086 | + } else { | |
2087 | + return val | |
2088 | + } | |
2089 | +} | |
2090 | + | |
2091 | +pp$3.parseParenItem = function(item) { | |
2092 | + return item | |
2093 | +} | |
2094 | + | |
2095 | +pp$3.parseParenArrowList = function(startPos, startLoc, exprList) { | |
2096 | + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList) | |
2097 | +} | |
2098 | + | |
2099 | +// New's precedence is slightly tricky. It must allow its argument to | |
2100 | +// be a `[]` or dot subscript expression, but not a call — at least, | |
2101 | +// not without wrapping it in parentheses. Thus, it uses the noCalls | |
2102 | +// argument to parseSubscripts to prevent it from consuming the | |
2103 | +// argument list. | |
2104 | + | |
2105 | +var empty$1 = [] | |
2106 | + | |
2107 | +pp$3.parseNew = function() { | |
2108 | + var node = this.startNode() | |
2109 | + var meta = this.parseIdent(true) | |
2110 | + if (this.options.ecmaVersion >= 6 && this.eat(tt.dot)) { | |
2111 | + node.meta = meta | |
2112 | + node.property = this.parseIdent(true) | |
2113 | + if (node.property.name !== "target") | |
2114 | + this.raiseRecoverable(node.property.start, "The only valid meta property for new is new.target") | |
2115 | + if (!this.inFunction) | |
2116 | + this.raiseRecoverable(node.start, "new.target can only be used in functions") | |
2117 | + return this.finishNode(node, "MetaProperty") | |
2118 | + } | |
2119 | + var startPos = this.start, startLoc = this.startLoc | |
2120 | + node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true) | |
2121 | + if (this.eat(tt.parenL)) node.arguments = this.parseExprList(tt.parenR, this.options.ecmaVersion >= 8, false) | |
2122 | + else node.arguments = empty$1 | |
2123 | + return this.finishNode(node, "NewExpression") | |
2124 | +} | |
2125 | + | |
2126 | +// Parse template expression. | |
2127 | + | |
2128 | +pp$3.parseTemplateElement = function() { | |
2129 | + var elem = this.startNode() | |
2130 | + elem.value = { | |
2131 | + raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, '\n'), | |
2132 | + cooked: this.value | |
2133 | + } | |
2134 | + this.next() | |
2135 | + elem.tail = this.type === tt.backQuote | |
2136 | + return this.finishNode(elem, "TemplateElement") | |
2137 | +} | |
2138 | + | |
2139 | +pp$3.parseTemplate = function() { | |
2140 | + var this$1 = this; | |
2141 | + | |
2142 | + var node = this.startNode() | |
2143 | + this.next() | |
2144 | + node.expressions = [] | |
2145 | + var curElt = this.parseTemplateElement() | |
2146 | + node.quasis = [curElt] | |
2147 | + while (!curElt.tail) { | |
2148 | + this$1.expect(tt.dollarBraceL) | |
2149 | + node.expressions.push(this$1.parseExpression()) | |
2150 | + this$1.expect(tt.braceR) | |
2151 | + node.quasis.push(curElt = this$1.parseTemplateElement()) | |
2152 | + } | |
2153 | + this.next() | |
2154 | + return this.finishNode(node, "TemplateLiteral") | |
2155 | +} | |
2156 | + | |
2157 | +// Parse an object literal or binding pattern. | |
2158 | + | |
2159 | +pp$3.parseObj = function(isPattern, refDestructuringErrors) { | |
2160 | + var this$1 = this; | |
2161 | + | |
2162 | + var node = this.startNode(), first = true, propHash = {} | |
2163 | + node.properties = [] | |
2164 | + this.next() | |
2165 | + while (!this.eat(tt.braceR)) { | |
2166 | + if (!first) { | |
2167 | + this$1.expect(tt.comma) | |
2168 | + if (this$1.afterTrailingComma(tt.braceR)) break | |
2169 | + } else first = false | |
2170 | + | |
2171 | + var prop = this$1.startNode(), isGenerator, isAsync, startPos, startLoc | |
2172 | + if (this$1.options.ecmaVersion >= 6) { | |
2173 | + prop.method = false | |
2174 | + prop.shorthand = false | |
2175 | + if (isPattern || refDestructuringErrors) { | |
2176 | + startPos = this$1.start | |
2177 | + startLoc = this$1.startLoc | |
2178 | + } | |
2179 | + if (!isPattern) | |
2180 | + isGenerator = this$1.eat(tt.star) | |
2181 | + } | |
2182 | + this$1.parsePropertyName(prop) | |
2183 | + if (!isPattern && this$1.options.ecmaVersion >= 8 && !isGenerator && !prop.computed && | |
2184 | + prop.key.type === "Identifier" && prop.key.name === "async" && this$1.type !== tt.parenL && | |
2185 | + this$1.type !== tt.colon && !this$1.canInsertSemicolon()) { | |
2186 | + isAsync = true | |
2187 | + this$1.parsePropertyName(prop, refDestructuringErrors) | |
2188 | + } else { | |
2189 | + isAsync = false | |
2190 | + } | |
2191 | + this$1.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors) | |
2192 | + this$1.checkPropClash(prop, propHash) | |
2193 | + node.properties.push(this$1.finishNode(prop, "Property")) | |
2194 | + } | |
2195 | + return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression") | |
2196 | +} | |
2197 | + | |
2198 | +pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors) { | |
2199 | + if ((isGenerator || isAsync) && this.type === tt.colon) | |
2200 | + this.unexpected() | |
2201 | + | |
2202 | + if (this.eat(tt.colon)) { | |
2203 | + prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors) | |
2204 | + prop.kind = "init" | |
2205 | + } else if (this.options.ecmaVersion >= 6 && this.type === tt.parenL) { | |
2206 | + if (isPattern) this.unexpected() | |
2207 | + prop.kind = "init" | |
2208 | + prop.method = true | |
2209 | + prop.value = this.parseMethod(isGenerator, isAsync) | |
2210 | + } else if (this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && | |
2211 | + (prop.key.name === "get" || prop.key.name === "set") && | |
2212 | + (this.type != tt.comma && this.type != tt.braceR)) { | |
2213 | + if (isGenerator || isAsync || isPattern) this.unexpected() | |
2214 | + prop.kind = prop.key.name | |
2215 | + this.parsePropertyName(prop) | |
2216 | + prop.value = this.parseMethod(false) | |
2217 | + var paramCount = prop.kind === "get" ? 0 : 1 | |
2218 | + if (prop.value.params.length !== paramCount) { | |
2219 | + var start = prop.value.start | |
2220 | + if (prop.kind === "get") | |
2221 | + this.raiseRecoverable(start, "getter should have no params") | |
2222 | + else | |
2223 | + this.raiseRecoverable(start, "setter should have exactly one param") | |
2224 | + } else { | |
2225 | + if (prop.kind === "set" && prop.value.params[0].type === "RestElement") | |
2226 | + this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params") | |
2227 | + } | |
2228 | + } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier") { | |
2229 | + if (this.keywords.test(prop.key.name) || | |
2230 | + (this.strict ? this.reservedWordsStrict : this.reservedWords).test(prop.key.name) || | |
2231 | + (this.inGenerator && prop.key.name == "yield") || | |
2232 | + (this.inAsync && prop.key.name == "await")) | |
2233 | + this.raiseRecoverable(prop.key.start, "'" + prop.key.name + "' can not be used as shorthand property") | |
2234 | + prop.kind = "init" | |
2235 | + if (isPattern) { | |
2236 | + prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key) | |
2237 | + } else if (this.type === tt.eq && refDestructuringErrors) { | |
2238 | + if (refDestructuringErrors.shorthandAssign < 0) | |
2239 | + refDestructuringErrors.shorthandAssign = this.start | |
2240 | + prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key) | |
2241 | + } else { | |
2242 | + prop.value = prop.key | |
2243 | + } | |
2244 | + prop.shorthand = true | |
2245 | + } else this.unexpected() | |
2246 | +} | |
2247 | + | |
2248 | +pp$3.parsePropertyName = function(prop) { | |
2249 | + if (this.options.ecmaVersion >= 6) { | |
2250 | + if (this.eat(tt.bracketL)) { | |
2251 | + prop.computed = true | |
2252 | + prop.key = this.parseMaybeAssign() | |
2253 | + this.expect(tt.bracketR) | |
2254 | + return prop.key | |
2255 | + } else { | |
2256 | + prop.computed = false | |
2257 | + } | |
2258 | + } | |
2259 | + return prop.key = this.type === tt.num || this.type === tt.string ? this.parseExprAtom() : this.parseIdent(true) | |
2260 | +} | |
2261 | + | |
2262 | +// Initialize empty function node. | |
2263 | + | |
2264 | +pp$3.initFunction = function(node) { | |
2265 | + node.id = null | |
2266 | + if (this.options.ecmaVersion >= 6) { | |
2267 | + node.generator = false | |
2268 | + node.expression = false | |
2269 | + } | |
2270 | + if (this.options.ecmaVersion >= 8) | |
2271 | + node.async = false | |
2272 | +} | |
2273 | + | |
2274 | +// Parse object or class method. | |
2275 | + | |
2276 | +pp$3.parseMethod = function(isGenerator, isAsync) { | |
2277 | + var node = this.startNode(), oldInGen = this.inGenerator, oldInAsync = this.inAsync, | |
2278 | + oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction | |
2279 | + | |
2280 | + this.initFunction(node) | |
2281 | + if (this.options.ecmaVersion >= 6) | |
2282 | + node.generator = isGenerator | |
2283 | + if (this.options.ecmaVersion >= 8) | |
2284 | + node.async = !!isAsync | |
2285 | + | |
2286 | + this.inGenerator = node.generator | |
2287 | + this.inAsync = node.async | |
2288 | + this.yieldPos = 0 | |
2289 | + this.awaitPos = 0 | |
2290 | + this.inFunction = true | |
2291 | + | |
2292 | + this.expect(tt.parenL) | |
2293 | + node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8) | |
2294 | + this.checkYieldAwaitInDefaultParams() | |
2295 | + this.parseFunctionBody(node, false) | |
2296 | + | |
2297 | + this.inGenerator = oldInGen | |
2298 | + this.inAsync = oldInAsync | |
2299 | + this.yieldPos = oldYieldPos | |
2300 | + this.awaitPos = oldAwaitPos | |
2301 | + this.inFunction = oldInFunc | |
2302 | + return this.finishNode(node, "FunctionExpression") | |
2303 | +} | |
2304 | + | |
2305 | +// Parse arrow function expression with given parameters. | |
2306 | + | |
2307 | +pp$3.parseArrowExpression = function(node, params, isAsync) { | |
2308 | + var oldInGen = this.inGenerator, oldInAsync = this.inAsync, | |
2309 | + oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction | |
2310 | + | |
2311 | + this.initFunction(node) | |
2312 | + if (this.options.ecmaVersion >= 8) | |
2313 | + node.async = !!isAsync | |
2314 | + | |
2315 | + this.inGenerator = false | |
2316 | + this.inAsync = node.async | |
2317 | + this.yieldPos = 0 | |
2318 | + this.awaitPos = 0 | |
2319 | + this.inFunction = true | |
2320 | + | |
2321 | + node.params = this.toAssignableList(params, true) | |
2322 | + this.parseFunctionBody(node, true) | |
2323 | + | |
2324 | + this.inGenerator = oldInGen | |
2325 | + this.inAsync = oldInAsync | |
2326 | + this.yieldPos = oldYieldPos | |
2327 | + this.awaitPos = oldAwaitPos | |
2328 | + this.inFunction = oldInFunc | |
2329 | + return this.finishNode(node, "ArrowFunctionExpression") | |
2330 | +} | |
2331 | + | |
2332 | +// Parse function body and check parameters. | |
2333 | + | |
2334 | +pp$3.parseFunctionBody = function(node, isArrowFunction) { | |
2335 | + var isExpression = isArrowFunction && this.type !== tt.braceL | |
2336 | + var oldStrict = this.strict, useStrict = false | |
2337 | + | |
2338 | + if (isExpression) { | |
2339 | + node.body = this.parseMaybeAssign() | |
2340 | + node.expression = true | |
2341 | + } else { | |
2342 | + var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params) | |
2343 | + if (!oldStrict || nonSimple) { | |
2344 | + useStrict = this.strictDirective(this.end) | |
2345 | + // If this is a strict mode function, verify that argument names | |
2346 | + // are not repeated, and it does not try to bind the words `eval` | |
2347 | + // or `arguments`. | |
2348 | + if (useStrict && nonSimple) | |
2349 | + this.raiseRecoverable(node.start, "Illegal 'use strict' directive in function with non-simple parameter list") | |
2350 | + } | |
2351 | + // Start a new scope with regard to labels and the `inFunction` | |
2352 | + // flag (restore them to their old value afterwards). | |
2353 | + var oldLabels = this.labels | |
2354 | + this.labels = [] | |
2355 | + if (useStrict) this.strict = true | |
2356 | + node.body = this.parseBlock(true) | |
2357 | + node.expression = false | |
2358 | + this.labels = oldLabels | |
2359 | + } | |
2360 | + | |
2361 | + if (oldStrict || useStrict) { | |
2362 | + this.strict = true | |
2363 | + if (node.id) | |
2364 | + this.checkLVal(node.id, true) | |
2365 | + this.checkParams(node) | |
2366 | + this.strict = oldStrict | |
2367 | + } else if (isArrowFunction || !this.isSimpleParamList(node.params)) { | |
2368 | + this.checkParams(node) | |
2369 | + } | |
2370 | +} | |
2371 | + | |
2372 | +pp$3.isSimpleParamList = function(params) { | |
2373 | + for (var i = 0; i < params.length; i++) | |
2374 | + if (params[i].type !== "Identifier") return false | |
2375 | + return true | |
2376 | +} | |
2377 | + | |
2378 | +// Checks function params for various disallowed patterns such as using "eval" | |
2379 | +// or "arguments" and duplicate parameters. | |
2380 | + | |
2381 | +pp$3.checkParams = function(node) { | |
2382 | + var this$1 = this; | |
2383 | + | |
2384 | + var nameHash = {} | |
2385 | + for (var i = 0; i < node.params.length; i++) this$1.checkLVal(node.params[i], true, nameHash) | |
2386 | +} | |
2387 | + | |
2388 | +// Parses a comma-separated list of expressions, and returns them as | |
2389 | +// an array. `close` is the token type that ends the list, and | |
2390 | +// `allowEmpty` can be turned on to allow subsequent commas with | |
2391 | +// nothing in between them to be parsed as `null` (which is needed | |
2392 | +// for array literals). | |
2393 | + | |
2394 | +pp$3.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) { | |
2395 | + var this$1 = this; | |
2396 | + | |
2397 | + var elts = [], first = true | |
2398 | + while (!this.eat(close)) { | |
2399 | + if (!first) { | |
2400 | + this$1.expect(tt.comma) | |
2401 | + if (allowTrailingComma && this$1.afterTrailingComma(close)) break | |
2402 | + } else first = false | |
2403 | + | |
2404 | + var elt | |
2405 | + if (allowEmpty && this$1.type === tt.comma) | |
2406 | + elt = null | |
2407 | + else if (this$1.type === tt.ellipsis) { | |
2408 | + elt = this$1.parseSpread(refDestructuringErrors) | |
2409 | + if (refDestructuringErrors && this$1.type === tt.comma && refDestructuringErrors.trailingComma < 0) | |
2410 | + refDestructuringErrors.trailingComma = this$1.start | |
2411 | + } else { | |
2412 | + elt = this$1.parseMaybeAssign(false, refDestructuringErrors) | |
2413 | + } | |
2414 | + elts.push(elt) | |
2415 | + } | |
2416 | + return elts | |
2417 | +} | |
2418 | + | |
2419 | +// Parse the next token as an identifier. If `liberal` is true (used | |
2420 | +// when parsing properties), it will also convert keywords into | |
2421 | +// identifiers. | |
2422 | + | |
2423 | +pp$3.parseIdent = function(liberal) { | |
2424 | + var node = this.startNode() | |
2425 | + if (liberal && this.options.allowReserved == "never") liberal = false | |
2426 | + if (this.type === tt.name) { | |
2427 | + if (!liberal && (this.strict ? this.reservedWordsStrict : this.reservedWords).test(this.value) && | |
2428 | + (this.options.ecmaVersion >= 6 || | |
2429 | + this.input.slice(this.start, this.end).indexOf("\\") == -1)) | |
2430 | + this.raiseRecoverable(this.start, "The keyword '" + this.value + "' is reserved") | |
2431 | + if (this.inGenerator && this.value === "yield") | |
2432 | + this.raiseRecoverable(this.start, "Can not use 'yield' as identifier inside a generator") | |
2433 | + if (this.inAsync && this.value === "await") | |
2434 | + this.raiseRecoverable(this.start, "Can not use 'await' as identifier inside an async function") | |
2435 | + node.name = this.value | |
2436 | + } else if (liberal && this.type.keyword) { | |
2437 | + node.name = this.type.keyword | |
2438 | + } else { | |
2439 | + this.unexpected() | |
2440 | + } | |
2441 | + this.next() | |
2442 | + return this.finishNode(node, "Identifier") | |
2443 | +} | |
2444 | + | |
2445 | +// Parses yield expression inside generator. | |
2446 | + | |
2447 | +pp$3.parseYield = function() { | |
2448 | + if (!this.yieldPos) this.yieldPos = this.start | |
2449 | + | |
2450 | + var node = this.startNode() | |
2451 | + this.next() | |
2452 | + if (this.type == tt.semi || this.canInsertSemicolon() || (this.type != tt.star && !this.type.startsExpr)) { | |
2453 | + node.delegate = false | |
2454 | + node.argument = null | |
2455 | + } else { | |
2456 | + node.delegate = this.eat(tt.star) | |
2457 | + node.argument = this.parseMaybeAssign() | |
2458 | + } | |
2459 | + return this.finishNode(node, "YieldExpression") | |
2460 | +} | |
2461 | + | |
2462 | +pp$3.parseAwait = function() { | |
2463 | + if (!this.awaitPos) this.awaitPos = this.start | |
2464 | + | |
2465 | + var node = this.startNode() | |
2466 | + this.next() | |
2467 | + node.argument = this.parseMaybeUnary(null, true) | |
2468 | + return this.finishNode(node, "AwaitExpression") | |
2469 | +} | |
2470 | + | |
2471 | +var pp$4 = Parser.prototype | |
2472 | + | |
2473 | +// This function is used to raise exceptions on parse errors. It | |
2474 | +// takes an offset integer (into the current `input`) to indicate | |
2475 | +// the location of the error, attaches the position to the end | |
2476 | +// of the error message, and then raises a `SyntaxError` with that | |
2477 | +// message. | |
2478 | + | |
2479 | +pp$4.raise = function(pos, message) { | |
2480 | + var loc = getLineInfo(this.input, pos) | |
2481 | + message += " (" + loc.line + ":" + loc.column + ")" | |
2482 | + var err = new SyntaxError(message) | |
2483 | + err.pos = pos; err.loc = loc; err.raisedAt = this.pos | |
2484 | + throw err | |
2485 | +} | |
2486 | + | |
2487 | +pp$4.raiseRecoverable = pp$4.raise | |
2488 | + | |
2489 | +pp$4.curPosition = function() { | |
2490 | + if (this.options.locations) { | |
2491 | + return new Position(this.curLine, this.pos - this.lineStart) | |
2492 | + } | |
2493 | +} | |
2494 | + | |
2495 | +var Node = function Node(parser, pos, loc) { | |
2496 | + this.type = "" | |
2497 | + this.start = pos | |
2498 | + this.end = 0 | |
2499 | + if (parser.options.locations) | |
2500 | + this.loc = new SourceLocation(parser, loc) | |
2501 | + if (parser.options.directSourceFile) | |
2502 | + this.sourceFile = parser.options.directSourceFile | |
2503 | + if (parser.options.ranges) | |
2504 | + this.range = [pos, 0] | |
2505 | +}; | |
2506 | + | |
2507 | +// Start an AST node, attaching a start offset. | |
2508 | + | |
2509 | +var pp$5 = Parser.prototype | |
2510 | + | |
2511 | +pp$5.startNode = function() { | |
2512 | + return new Node(this, this.start, this.startLoc) | |
2513 | +} | |
2514 | + | |
2515 | +pp$5.startNodeAt = function(pos, loc) { | |
2516 | + return new Node(this, pos, loc) | |
2517 | +} | |
2518 | + | |
2519 | +// Finish an AST node, adding `type` and `end` properties. | |
2520 | + | |
2521 | +function finishNodeAt(node, type, pos, loc) { | |
2522 | + node.type = type | |
2523 | + node.end = pos | |
2524 | + if (this.options.locations) | |
2525 | + node.loc.end = loc | |
2526 | + if (this.options.ranges) | |
2527 | + node.range[1] = pos | |
2528 | + return node | |
2529 | +} | |
2530 | + | |
2531 | +pp$5.finishNode = function(node, type) { | |
2532 | + return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc) | |
2533 | +} | |
2534 | + | |
2535 | +// Finish node at given position | |
2536 | + | |
2537 | +pp$5.finishNodeAt = function(node, type, pos, loc) { | |
2538 | + return finishNodeAt.call(this, node, type, pos, loc) | |
2539 | +} | |
2540 | + | |
2541 | +// The algorithm used to determine whether a regexp can appear at a | |
2542 | +// given point in the program is loosely based on sweet.js' approach. | |
2543 | +// See https://github.com/mozilla/sweet.js/wiki/design | |
2544 | + | |
2545 | +var TokContext = function TokContext(token, isExpr, preserveSpace, override) { | |
2546 | + this.token = token | |
2547 | + this.isExpr = !!isExpr | |
2548 | + this.preserveSpace = !!preserveSpace | |
2549 | + this.override = override | |
2550 | +}; | |
2551 | + | |
2552 | +var types = { | |
2553 | + b_stat: new TokContext("{", false), | |
2554 | + b_expr: new TokContext("{", true), | |
2555 | + b_tmpl: new TokContext("${", true), | |
2556 | + p_stat: new TokContext("(", false), | |
2557 | + p_expr: new TokContext("(", true), | |
2558 | + q_tmpl: new TokContext("`", true, true, function (p) { return p.readTmplToken(); }), | |
2559 | + f_expr: new TokContext("function", true) | |
2560 | +} | |
2561 | + | |
2562 | +var pp$6 = Parser.prototype | |
2563 | + | |
2564 | +pp$6.initialContext = function() { | |
2565 | + return [types.b_stat] | |
2566 | +} | |
2567 | + | |
2568 | +pp$6.braceIsBlock = function(prevType) { | |
2569 | + if (prevType === tt.colon) { | |
2570 | + var parent = this.curContext() | |
2571 | + if (parent === types.b_stat || parent === types.b_expr) | |
2572 | + return !parent.isExpr | |
2573 | + } | |
2574 | + if (prevType === tt._return) | |
2575 | + return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) | |
2576 | + if (prevType === tt._else || prevType === tt.semi || prevType === tt.eof || prevType === tt.parenR) | |
2577 | + return true | |
2578 | + if (prevType == tt.braceL) | |
2579 | + return this.curContext() === types.b_stat | |
2580 | + return !this.exprAllowed | |
2581 | +} | |
2582 | + | |
2583 | +pp$6.updateContext = function(prevType) { | |
2584 | + var update, type = this.type | |
2585 | + if (type.keyword && prevType == tt.dot) | |
2586 | + this.exprAllowed = false | |
2587 | + else if (update = type.updateContext) | |
2588 | + update.call(this, prevType) | |
2589 | + else | |
2590 | + this.exprAllowed = type.beforeExpr | |
2591 | +} | |
2592 | + | |
2593 | +// Token-specific context update code | |
2594 | + | |
2595 | +tt.parenR.updateContext = tt.braceR.updateContext = function() { | |
2596 | + if (this.context.length == 1) { | |
2597 | + this.exprAllowed = true | |
2598 | + return | |
2599 | + } | |
2600 | + var out = this.context.pop() | |
2601 | + if (out === types.b_stat && this.curContext() === types.f_expr) { | |
2602 | + this.context.pop() | |
2603 | + this.exprAllowed = false | |
2604 | + } else if (out === types.b_tmpl) { | |
2605 | + this.exprAllowed = true | |
2606 | + } else { | |
2607 | + this.exprAllowed = !out.isExpr | |
2608 | + } | |
2609 | +} | |
2610 | + | |
2611 | +tt.braceL.updateContext = function(prevType) { | |
2612 | + this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr) | |
2613 | + this.exprAllowed = true | |
2614 | +} | |
2615 | + | |
2616 | +tt.dollarBraceL.updateContext = function() { | |
2617 | + this.context.push(types.b_tmpl) | |
2618 | + this.exprAllowed = true | |
2619 | +} | |
2620 | + | |
2621 | +tt.parenL.updateContext = function(prevType) { | |
2622 | + var statementParens = prevType === tt._if || prevType === tt._for || prevType === tt._with || prevType === tt._while | |
2623 | + this.context.push(statementParens ? types.p_stat : types.p_expr) | |
2624 | + this.exprAllowed = true | |
2625 | +} | |
2626 | + | |
2627 | +tt.incDec.updateContext = function() { | |
2628 | + // tokExprAllowed stays unchanged | |
2629 | +} | |
2630 | + | |
2631 | +tt._function.updateContext = function(prevType) { | |
2632 | + if (prevType.beforeExpr && prevType !== tt.semi && prevType !== tt._else && | |
2633 | + !((prevType === tt.colon || prevType === tt.braceL) && this.curContext() === types.b_stat)) | |
2634 | + this.context.push(types.f_expr) | |
2635 | + this.exprAllowed = false | |
2636 | +} | |
2637 | + | |
2638 | +tt.backQuote.updateContext = function() { | |
2639 | + if (this.curContext() === types.q_tmpl) | |
2640 | + this.context.pop() | |
2641 | + else | |
2642 | + this.context.push(types.q_tmpl) | |
2643 | + this.exprAllowed = false | |
2644 | +} | |
2645 | + | |
2646 | +// Object type used to represent tokens. Note that normally, tokens | |
2647 | +// simply exist as properties on the parser object. This is only | |
2648 | +// used for the onToken callback and the external tokenizer. | |
2649 | + | |
2650 | +var Token = function Token(p) { | |
2651 | + this.type = p.type | |
2652 | + this.value = p.value | |
2653 | + this.start = p.start | |
2654 | + this.end = p.end | |
2655 | + if (p.options.locations) | |
2656 | + this.loc = new SourceLocation(p, p.startLoc, p.endLoc) | |
2657 | + if (p.options.ranges) | |
2658 | + this.range = [p.start, p.end] | |
2659 | +}; | |
2660 | + | |
2661 | +// ## Tokenizer | |
2662 | + | |
2663 | +var pp$7 = Parser.prototype | |
2664 | + | |
2665 | +// Are we running under Rhino? | |
2666 | +var isRhino = typeof Packages == "object" && Object.prototype.toString.call(Packages) == "[object JavaPackage]" | |
2667 | + | |
2668 | +// Move to the next token | |
2669 | + | |
2670 | +pp$7.next = function() { | |
2671 | + if (this.options.onToken) | |
2672 | + this.options.onToken(new Token(this)) | |
2673 | + | |
2674 | + this.lastTokEnd = this.end | |
2675 | + this.lastTokStart = this.start | |
2676 | + this.lastTokEndLoc = this.endLoc | |
2677 | + this.lastTokStartLoc = this.startLoc | |
2678 | + this.nextToken() | |
2679 | +} | |
2680 | + | |
2681 | +pp$7.getToken = function() { | |
2682 | + this.next() | |
2683 | + return new Token(this) | |
2684 | +} | |
2685 | + | |
2686 | +// If we're in an ES6 environment, make parsers iterable | |
2687 | +if (typeof Symbol !== "undefined") | |
2688 | + pp$7[Symbol.iterator] = function () { | |
2689 | + var self = this | |
2690 | + return {next: function () { | |
2691 | + var token = self.getToken() | |
2692 | + return { | |
2693 | + done: token.type === tt.eof, | |
2694 | + value: token | |
2695 | + } | |
2696 | + }} | |
2697 | + } | |
2698 | + | |
2699 | +// Toggle strict mode. Re-reads the next number or string to please | |
2700 | +// pedantic tests (`"use strict"; 010;` should fail). | |
2701 | + | |
2702 | +pp$7.curContext = function() { | |
2703 | + return this.context[this.context.length - 1] | |
2704 | +} | |
2705 | + | |
2706 | +// Read a single token, updating the parser object's token-related | |
2707 | +// properties. | |
2708 | + | |
2709 | +pp$7.nextToken = function() { | |
2710 | + var curContext = this.curContext() | |
2711 | + if (!curContext || !curContext.preserveSpace) this.skipSpace() | |
2712 | + | |
2713 | + this.start = this.pos | |
2714 | + if (this.options.locations) this.startLoc = this.curPosition() | |
2715 | + if (this.pos >= this.input.length) return this.finishToken(tt.eof) | |
2716 | + | |
2717 | + if (curContext.override) return curContext.override(this) | |
2718 | + else this.readToken(this.fullCharCodeAtPos()) | |
2719 | +} | |
2720 | + | |
2721 | +pp$7.readToken = function(code) { | |
2722 | + // Identifier or keyword. '\uXXXX' sequences are allowed in | |
2723 | + // identifiers, so '\' also dispatches to that. | |
2724 | + if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\' */) | |
2725 | + return this.readWord() | |
2726 | + | |
2727 | + return this.getTokenFromCode(code) | |
2728 | +} | |
2729 | + | |
2730 | +pp$7.fullCharCodeAtPos = function() { | |
2731 | + var code = this.input.charCodeAt(this.pos) | |
2732 | + if (code <= 0xd7ff || code >= 0xe000) return code | |
2733 | + var next = this.input.charCodeAt(this.pos + 1) | |
2734 | + return (code << 10) + next - 0x35fdc00 | |
2735 | +} | |
2736 | + | |
2737 | +pp$7.skipBlockComment = function() { | |
2738 | + var this$1 = this; | |
2739 | + | |
2740 | + var startLoc = this.options.onComment && this.curPosition() | |
2741 | + var start = this.pos, end = this.input.indexOf("*/", this.pos += 2) | |
2742 | + if (end === -1) this.raise(this.pos - 2, "Unterminated comment") | |
2743 | + this.pos = end + 2 | |
2744 | + if (this.options.locations) { | |
2745 | + lineBreakG.lastIndex = start | |
2746 | + var match | |
2747 | + while ((match = lineBreakG.exec(this.input)) && match.index < this.pos) { | |
2748 | + ++this$1.curLine | |
2749 | + this$1.lineStart = match.index + match[0].length | |
2750 | + } | |
2751 | + } | |
2752 | + if (this.options.onComment) | |
2753 | + this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos, | |
2754 | + startLoc, this.curPosition()) | |
2755 | +} | |
2756 | + | |
2757 | +pp$7.skipLineComment = function(startSkip) { | |
2758 | + var this$1 = this; | |
2759 | + | |
2760 | + var start = this.pos | |
2761 | + var startLoc = this.options.onComment && this.curPosition() | |
2762 | + var ch = this.input.charCodeAt(this.pos+=startSkip) | |
2763 | + while (this.pos < this.input.length && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) { | |
2764 | + ++this$1.pos | |
2765 | + ch = this$1.input.charCodeAt(this$1.pos) | |
2766 | + } | |
2767 | + if (this.options.onComment) | |
2768 | + this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos, | |
2769 | + startLoc, this.curPosition()) | |
2770 | +} | |
2771 | + | |
2772 | +// Called at the start of the parse and after every token. Skips | |
2773 | +// whitespace and comments, and. | |
2774 | + | |
2775 | +pp$7.skipSpace = function() { | |
2776 | + var this$1 = this; | |
2777 | + | |
2778 | + loop: while (this.pos < this.input.length) { | |
2779 | + var ch = this$1.input.charCodeAt(this$1.pos) | |
2780 | + switch (ch) { | |
2781 | + case 32: case 160: // ' ' | |
2782 | + ++this$1.pos | |
2783 | + break | |
2784 | + case 13: | |
2785 | + if (this$1.input.charCodeAt(this$1.pos + 1) === 10) { | |
2786 | + ++this$1.pos | |
2787 | + } | |
2788 | + case 10: case 8232: case 8233: | |
2789 | + ++this$1.pos | |
2790 | + if (this$1.options.locations) { | |
2791 | + ++this$1.curLine | |
2792 | + this$1.lineStart = this$1.pos | |
2793 | + } | |
2794 | + break | |
2795 | + case 47: // '/' | |
2796 | + switch (this$1.input.charCodeAt(this$1.pos + 1)) { | |
2797 | + case 42: // '*' | |
2798 | + this$1.skipBlockComment() | |
2799 | + break | |
2800 | + case 47: | |
2801 | + this$1.skipLineComment(2) | |
2802 | + break | |
2803 | + default: | |
2804 | + break loop | |
2805 | + } | |
2806 | + break | |
2807 | + default: | |
2808 | + if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) { | |
2809 | + ++this$1.pos | |
2810 | + } else { | |
2811 | + break loop | |
2812 | + } | |
2813 | + } | |
2814 | + } | |
2815 | +} | |
2816 | + | |
2817 | +// Called at the end of every token. Sets `end`, `val`, and | |
2818 | +// maintains `context` and `exprAllowed`, and skips the space after | |
2819 | +// the token, so that the next one's `start` will point at the | |
2820 | +// right position. | |
2821 | + | |
2822 | +pp$7.finishToken = function(type, val) { | |
2823 | + this.end = this.pos | |
2824 | + if (this.options.locations) this.endLoc = this.curPosition() | |
2825 | + var prevType = this.type | |
2826 | + this.type = type | |
2827 | + this.value = val | |
2828 | + | |
2829 | + this.updateContext(prevType) | |
2830 | +} | |
2831 | + | |
2832 | +// ### Token reading | |
2833 | + | |
2834 | +// This is the function that is called to fetch the next token. It | |
2835 | +// is somewhat obscure, because it works in character codes rather | |
2836 | +// than characters, and because operator parsing has been inlined | |
2837 | +// into it. | |
2838 | +// | |
2839 | +// All in the name of speed. | |
2840 | +// | |
2841 | +pp$7.readToken_dot = function() { | |
2842 | + var next = this.input.charCodeAt(this.pos + 1) | |
2843 | + if (next >= 48 && next <= 57) return this.readNumber(true) | |
2844 | + var next2 = this.input.charCodeAt(this.pos + 2) | |
2845 | + if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.' | |
2846 | + this.pos += 3 | |
2847 | + return this.finishToken(tt.ellipsis) | |
2848 | + } else { | |
2849 | + ++this.pos | |
2850 | + return this.finishToken(tt.dot) | |
2851 | + } | |
2852 | +} | |
2853 | + | |
2854 | +pp$7.readToken_slash = function() { // '/' | |
2855 | + var next = this.input.charCodeAt(this.pos + 1) | |
2856 | + if (this.exprAllowed) {++this.pos; return this.readRegexp()} | |
2857 | + if (next === 61) return this.finishOp(tt.assign, 2) | |
2858 | + return this.finishOp(tt.slash, 1) | |
2859 | +} | |
2860 | + | |
2861 | +pp$7.readToken_mult_modulo_exp = function(code) { // '%*' | |
2862 | + var next = this.input.charCodeAt(this.pos + 1) | |
2863 | + var size = 1 | |
2864 | + var tokentype = code === 42 ? tt.star : tt.modulo | |
2865 | + | |
2866 | + // exponentiation operator ** and **= | |
2867 | + if (this.options.ecmaVersion >= 7 && next === 42) { | |
2868 | + ++size | |
2869 | + tokentype = tt.starstar | |
2870 | + next = this.input.charCodeAt(this.pos + 2) | |
2871 | + } | |
2872 | + | |
2873 | + if (next === 61) return this.finishOp(tt.assign, size + 1) | |
2874 | + return this.finishOp(tokentype, size) | |
2875 | +} | |
2876 | + | |
2877 | +pp$7.readToken_pipe_amp = function(code) { // '|&' | |
2878 | + var next = this.input.charCodeAt(this.pos + 1) | |
2879 | + if (next === code) return this.finishOp(code === 124 ? tt.logicalOR : tt.logicalAND, 2) | |
2880 | + if (next === 61) return this.finishOp(tt.assign, 2) | |
2881 | + return this.finishOp(code === 124 ? tt.bitwiseOR : tt.bitwiseAND, 1) | |
2882 | +} | |
2883 | + | |
2884 | +pp$7.readToken_caret = function() { // '^' | |
2885 | + var next = this.input.charCodeAt(this.pos + 1) | |
2886 | + if (next === 61) return this.finishOp(tt.assign, 2) | |
2887 | + return this.finishOp(tt.bitwiseXOR, 1) | |
2888 | +} | |
2889 | + | |
2890 | +pp$7.readToken_plus_min = function(code) { // '+-' | |
2891 | + var next = this.input.charCodeAt(this.pos + 1) | |
2892 | + if (next === code) { | |
2893 | + if (next == 45 && this.input.charCodeAt(this.pos + 2) == 62 && | |
2894 | + lineBreak.test(this.input.slice(this.lastTokEnd, this.pos))) { | |
2895 | + // A `-->` line comment | |
2896 | + this.skipLineComment(3) | |
2897 | + this.skipSpace() | |
2898 | + return this.nextToken() | |
2899 | + } | |
2900 | + return this.finishOp(tt.incDec, 2) | |
2901 | + } | |
2902 | + if (next === 61) return this.finishOp(tt.assign, 2) | |
2903 | + return this.finishOp(tt.plusMin, 1) | |
2904 | +} | |
2905 | + | |
2906 | +pp$7.readToken_lt_gt = function(code) { // '<>' | |
2907 | + var next = this.input.charCodeAt(this.pos + 1) | |
2908 | + var size = 1 | |
2909 | + if (next === code) { | |
2910 | + size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2 | |
2911 | + if (this.input.charCodeAt(this.pos + size) === 61) return this.finishOp(tt.assign, size + 1) | |
2912 | + return this.finishOp(tt.bitShift, size) | |
2913 | + } | |
2914 | + if (next == 33 && code == 60 && this.input.charCodeAt(this.pos + 2) == 45 && | |
2915 | + this.input.charCodeAt(this.pos + 3) == 45) { | |
2916 | + if (this.inModule) this.unexpected() | |
2917 | + // `<!--`, an XML-style comment that should be interpreted as a line comment | |
2918 | + this.skipLineComment(4) | |
2919 | + this.skipSpace() | |
2920 | + return this.nextToken() | |
2921 | + } | |
2922 | + if (next === 61) size = 2 | |
2923 | + return this.finishOp(tt.relational, size) | |
2924 | +} | |
2925 | + | |
2926 | +pp$7.readToken_eq_excl = function(code) { // '=!' | |
2927 | + var next = this.input.charCodeAt(this.pos + 1) | |
2928 | + if (next === 61) return this.finishOp(tt.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) | |
2929 | + if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>' | |
2930 | + this.pos += 2 | |
2931 | + return this.finishToken(tt.arrow) | |
2932 | + } | |
2933 | + return this.finishOp(code === 61 ? tt.eq : tt.prefix, 1) | |
2934 | +} | |
2935 | + | |
2936 | +pp$7.getTokenFromCode = function(code) { | |
2937 | + switch (code) { | |
2938 | + // The interpretation of a dot depends on whether it is followed | |
2939 | + // by a digit or another two dots. | |
2940 | + case 46: // '.' | |
2941 | + return this.readToken_dot() | |
2942 | + | |
2943 | + // Punctuation tokens. | |
2944 | + case 40: ++this.pos; return this.finishToken(tt.parenL) | |
2945 | + case 41: ++this.pos; return this.finishToken(tt.parenR) | |
2946 | + case 59: ++this.pos; return this.finishToken(tt.semi) | |
2947 | + case 44: ++this.pos; return this.finishToken(tt.comma) | |
2948 | + case 91: ++this.pos; return this.finishToken(tt.bracketL) | |
2949 | + case 93: ++this.pos; return this.finishToken(tt.bracketR) | |
2950 | + case 123: ++this.pos; return this.finishToken(tt.braceL) | |
2951 | + case 125: ++this.pos; return this.finishToken(tt.braceR) | |
2952 | + case 58: ++this.pos; return this.finishToken(tt.colon) | |
2953 | + case 63: ++this.pos; return this.finishToken(tt.question) | |
2954 | + | |
2955 | + case 96: // '`' | |
2956 | + if (this.options.ecmaVersion < 6) break | |
2957 | + ++this.pos | |
2958 | + return this.finishToken(tt.backQuote) | |
2959 | + | |
2960 | + case 48: // '0' | |
2961 | + var next = this.input.charCodeAt(this.pos + 1) | |
2962 | + if (next === 120 || next === 88) return this.readRadixNumber(16) // '0x', '0X' - hex number | |
2963 | + if (this.options.ecmaVersion >= 6) { | |
2964 | + if (next === 111 || next === 79) return this.readRadixNumber(8) // '0o', '0O' - octal number | |
2965 | + if (next === 98 || next === 66) return this.readRadixNumber(2) // '0b', '0B' - binary number | |
2966 | + } | |
2967 | + // Anything else beginning with a digit is an integer, octal | |
2968 | + // number, or float. | |
2969 | + case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9 | |
2970 | + return this.readNumber(false) | |
2971 | + | |
2972 | + // Quotes produce strings. | |
2973 | + case 34: case 39: // '"', "'" | |
2974 | + return this.readString(code) | |
2975 | + | |
2976 | + // Operators are parsed inline in tiny state machines. '=' (61) is | |
2977 | + // often referred to. `finishOp` simply skips the amount of | |
2978 | + // characters it is given as second argument, and returns a token | |
2979 | + // of the type given by its first argument. | |
2980 | + | |
2981 | + case 47: // '/' | |
2982 | + return this.readToken_slash() | |
2983 | + | |
2984 | + case 37: case 42: // '%*' | |
2985 | + return this.readToken_mult_modulo_exp(code) | |
2986 | + | |
2987 | + case 124: case 38: // '|&' | |
2988 | + return this.readToken_pipe_amp(code) | |
2989 | + | |
2990 | + case 94: // '^' | |
2991 | + return this.readToken_caret() | |
2992 | + | |
2993 | + case 43: case 45: // '+-' | |
2994 | + return this.readToken_plus_min(code) | |
2995 | + | |
2996 | + case 60: case 62: // '<>' | |
2997 | + return this.readToken_lt_gt(code) | |
2998 | + | |
2999 | + case 61: case 33: // '=!' | |
3000 | + return this.readToken_eq_excl(code) | |
3001 | + | |
3002 | + case 126: // '~' | |
3003 | + return this.finishOp(tt.prefix, 1) | |
3004 | + } | |
3005 | + | |
3006 | + this.raise(this.pos, "Unexpected character '" + codePointToString(code) + "'") | |
3007 | +} | |
3008 | + | |
3009 | +pp$7.finishOp = function(type, size) { | |
3010 | + var str = this.input.slice(this.pos, this.pos + size) | |
3011 | + this.pos += size | |
3012 | + return this.finishToken(type, str) | |
3013 | +} | |
3014 | + | |
3015 | +// Parse a regular expression. Some context-awareness is necessary, | |
3016 | +// since a '/' inside a '[]' set does not end the expression. | |
3017 | + | |
3018 | +function tryCreateRegexp(src, flags, throwErrorAt, parser) { | |
3019 | + try { | |
3020 | + return new RegExp(src, flags) | |
3021 | + } catch (e) { | |
3022 | + if (throwErrorAt !== undefined) { | |
3023 | + if (e instanceof SyntaxError) parser.raise(throwErrorAt, "Error parsing regular expression: " + e.message) | |
3024 | + throw e | |
3025 | + } | |
3026 | + } | |
3027 | +} | |
3028 | + | |
3029 | +var regexpUnicodeSupport = !!tryCreateRegexp("\uffff", "u") | |
3030 | + | |
3031 | +pp$7.readRegexp = function() { | |
3032 | + var this$1 = this; | |
3033 | + | |
3034 | + var escaped, inClass, start = this.pos | |
3035 | + for (;;) { | |
3036 | + if (this$1.pos >= this$1.input.length) this$1.raise(start, "Unterminated regular expression") | |
3037 | + var ch = this$1.input.charAt(this$1.pos) | |
3038 | + if (lineBreak.test(ch)) this$1.raise(start, "Unterminated regular expression") | |
3039 | + if (!escaped) { | |
3040 | + if (ch === "[") inClass = true | |
3041 | + else if (ch === "]" && inClass) inClass = false | |
3042 | + else if (ch === "/" && !inClass) break | |
3043 | + escaped = ch === "\\" | |
3044 | + } else escaped = false | |
3045 | + ++this$1.pos | |
3046 | + } | |
3047 | + var content = this.input.slice(start, this.pos) | |
3048 | + ++this.pos | |
3049 | + // Need to use `readWord1` because '\uXXXX' sequences are allowed | |
3050 | + // here (don't ask). | |
3051 | + var mods = this.readWord1() | |
3052 | + var tmp = content, tmpFlags = "" | |
3053 | + if (mods) { | |
3054 | + var validFlags = /^[gim]*$/ | |
3055 | + if (this.options.ecmaVersion >= 6) validFlags = /^[gimuy]*$/ | |
3056 | + if (!validFlags.test(mods)) this.raise(start, "Invalid regular expression flag") | |
3057 | + if (mods.indexOf("u") >= 0) { | |
3058 | + if (regexpUnicodeSupport) { | |
3059 | + tmpFlags = "u" | |
3060 | + } else { | |
3061 | + // Replace each astral symbol and every Unicode escape sequence that | |
3062 | + // possibly represents an astral symbol or a paired surrogate with a | |
3063 | + // single ASCII symbol to avoid throwing on regular expressions that | |
3064 | + // are only valid in combination with the `/u` flag. | |
3065 | + // Note: replacing with the ASCII symbol `x` might cause false | |
3066 | + // negatives in unlikely scenarios. For example, `[\u{61}-b]` is a | |
3067 | + // perfectly valid pattern that is equivalent to `[a-b]`, but it would | |
3068 | + // be replaced by `[x-b]` which throws an error. | |
3069 | + tmp = tmp.replace(/\\u\{([0-9a-fA-F]+)\}/g, function (_match, code, offset) { | |
3070 | + code = Number("0x" + code) | |
3071 | + if (code > 0x10FFFF) this$1.raise(start + offset + 3, "Code point out of bounds") | |
3072 | + return "x" | |
3073 | + }) | |
3074 | + tmp = tmp.replace(/\\u([a-fA-F0-9]{4})|[\uD800-\uDBFF][\uDC00-\uDFFF]/g, "x") | |
3075 | + tmpFlags = tmpFlags.replace("u", "") | |
3076 | + } | |
3077 | + } | |
3078 | + } | |
3079 | + // Detect invalid regular expressions. | |
3080 | + var value = null | |
3081 | + // Rhino's regular expression parser is flaky and throws uncatchable exceptions, | |
3082 | + // so don't do detection if we are running under Rhino | |
3083 | + if (!isRhino) { | |
3084 | + tryCreateRegexp(tmp, tmpFlags, start, this) | |
3085 | + // Get a regular expression object for this pattern-flag pair, or `null` in | |
3086 | + // case the current environment doesn't support the flags it uses. | |
3087 | + value = tryCreateRegexp(content, mods) | |
3088 | + } | |
3089 | + return this.finishToken(tt.regexp, {pattern: content, flags: mods, value: value}) | |
3090 | +} | |
3091 | + | |
3092 | +// Read an integer in the given radix. Return null if zero digits | |
3093 | +// were read, the integer value otherwise. When `len` is given, this | |
3094 | +// will return `null` unless the integer has exactly `len` digits. | |
3095 | + | |
3096 | +pp$7.readInt = function(radix, len) { | |
3097 | + var this$1 = this; | |
3098 | + | |
3099 | + var start = this.pos, total = 0 | |
3100 | + for (var i = 0, e = len == null ? Infinity : len; i < e; ++i) { | |
3101 | + var code = this$1.input.charCodeAt(this$1.pos), val | |
3102 | + if (code >= 97) val = code - 97 + 10 // a | |
3103 | + else if (code >= 65) val = code - 65 + 10 // A | |
3104 | + else if (code >= 48 && code <= 57) val = code - 48 // 0-9 | |
3105 | + else val = Infinity | |
3106 | + if (val >= radix) break | |
3107 | + ++this$1.pos | |
3108 | + total = total * radix + val | |
3109 | + } | |
3110 | + if (this.pos === start || len != null && this.pos - start !== len) return null | |
3111 | + | |
3112 | + return total | |
3113 | +} | |
3114 | + | |
3115 | +pp$7.readRadixNumber = function(radix) { | |
3116 | + this.pos += 2 // 0x | |
3117 | + var val = this.readInt(radix) | |
3118 | + if (val == null) this.raise(this.start + 2, "Expected number in radix " + radix) | |
3119 | + if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, "Identifier directly after number") | |
3120 | + return this.finishToken(tt.num, val) | |
3121 | +} | |
3122 | + | |
3123 | +// Read an integer, octal integer, or floating-point number. | |
3124 | + | |
3125 | +pp$7.readNumber = function(startsWithDot) { | |
3126 | + var start = this.pos, isFloat = false, octal = this.input.charCodeAt(this.pos) === 48 | |
3127 | + if (!startsWithDot && this.readInt(10) === null) this.raise(start, "Invalid number") | |
3128 | + if (octal && this.pos == start + 1) octal = false | |
3129 | + var next = this.input.charCodeAt(this.pos) | |
3130 | + if (next === 46 && !octal) { // '.' | |
3131 | + ++this.pos | |
3132 | + this.readInt(10) | |
3133 | + isFloat = true | |
3134 | + next = this.input.charCodeAt(this.pos) | |
3135 | + } | |
3136 | + if ((next === 69 || next === 101) && !octal) { // 'eE' | |
3137 | + next = this.input.charCodeAt(++this.pos) | |
3138 | + if (next === 43 || next === 45) ++this.pos // '+-' | |
3139 | + if (this.readInt(10) === null) this.raise(start, "Invalid number") | |
3140 | + isFloat = true | |
3141 | + } | |
3142 | + if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, "Identifier directly after number") | |
3143 | + | |
3144 | + var str = this.input.slice(start, this.pos), val | |
3145 | + if (isFloat) val = parseFloat(str) | |
3146 | + else if (!octal || str.length === 1) val = parseInt(str, 10) | |
3147 | + else if (/[89]/.test(str) || this.strict) this.raise(start, "Invalid number") | |
3148 | + else val = parseInt(str, 8) | |
3149 | + return this.finishToken(tt.num, val) | |
3150 | +} | |
3151 | + | |
3152 | +// Read a string value, interpreting backslash-escapes. | |
3153 | + | |
3154 | +pp$7.readCodePoint = function() { | |
3155 | + var ch = this.input.charCodeAt(this.pos), code | |
3156 | + | |
3157 | + if (ch === 123) { | |
3158 | + if (this.options.ecmaVersion < 6) this.unexpected() | |
3159 | + var codePos = ++this.pos | |
3160 | + code = this.readHexChar(this.input.indexOf('}', this.pos) - this.pos) | |
3161 | + ++this.pos | |
3162 | + if (code > 0x10FFFF) this.raise(codePos, "Code point out of bounds") | |
3163 | + } else { | |
3164 | + code = this.readHexChar(4) | |
3165 | + } | |
3166 | + return code | |
3167 | +} | |
3168 | + | |
3169 | +function codePointToString(code) { | |
3170 | + // UTF-16 Decoding | |
3171 | + if (code <= 0xFFFF) return String.fromCharCode(code) | |
3172 | + code -= 0x10000 | |
3173 | + return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00) | |
3174 | +} | |
3175 | + | |
3176 | +pp$7.readString = function(quote) { | |
3177 | + var this$1 = this; | |
3178 | + | |
3179 | + var out = "", chunkStart = ++this.pos | |
3180 | + for (;;) { | |
3181 | + if (this$1.pos >= this$1.input.length) this$1.raise(this$1.start, "Unterminated string constant") | |
3182 | + var ch = this$1.input.charCodeAt(this$1.pos) | |
3183 | + if (ch === quote) break | |
3184 | + if (ch === 92) { // '\' | |
3185 | + out += this$1.input.slice(chunkStart, this$1.pos) | |
3186 | + out += this$1.readEscapedChar(false) | |
3187 | + chunkStart = this$1.pos | |
3188 | + } else { | |
3189 | + if (isNewLine(ch)) this$1.raise(this$1.start, "Unterminated string constant") | |
3190 | + ++this$1.pos | |
3191 | + } | |
3192 | + } | |
3193 | + out += this.input.slice(chunkStart, this.pos++) | |
3194 | + return this.finishToken(tt.string, out) | |
3195 | +} | |
3196 | + | |
3197 | +// Reads template string tokens. | |
3198 | + | |
3199 | +pp$7.readTmplToken = function() { | |
3200 | + var this$1 = this; | |
3201 | + | |
3202 | + var out = "", chunkStart = this.pos | |
3203 | + for (;;) { | |
3204 | + if (this$1.pos >= this$1.input.length) this$1.raise(this$1.start, "Unterminated template") | |
3205 | + var ch = this$1.input.charCodeAt(this$1.pos) | |
3206 | + if (ch === 96 || ch === 36 && this$1.input.charCodeAt(this$1.pos + 1) === 123) { // '`', '${' | |
3207 | + if (this$1.pos === this$1.start && this$1.type === tt.template) { | |
3208 | + if (ch === 36) { | |
3209 | + this$1.pos += 2 | |
3210 | + return this$1.finishToken(tt.dollarBraceL) | |
3211 | + } else { | |
3212 | + ++this$1.pos | |
3213 | + return this$1.finishToken(tt.backQuote) | |
3214 | + } | |
3215 | + } | |
3216 | + out += this$1.input.slice(chunkStart, this$1.pos) | |
3217 | + return this$1.finishToken(tt.template, out) | |
3218 | + } | |
3219 | + if (ch === 92) { // '\' | |
3220 | + out += this$1.input.slice(chunkStart, this$1.pos) | |
3221 | + out += this$1.readEscapedChar(true) | |
3222 | + chunkStart = this$1.pos | |
3223 | + } else if (isNewLine(ch)) { | |
3224 | + out += this$1.input.slice(chunkStart, this$1.pos) | |
3225 | + ++this$1.pos | |
3226 | + switch (ch) { | |
3227 | + case 13: | |
3228 | + if (this$1.input.charCodeAt(this$1.pos) === 10) ++this$1.pos | |
3229 | + case 10: | |
3230 | + out += "\n" | |
3231 | + break | |
3232 | + default: | |
3233 | + out += String.fromCharCode(ch) | |
3234 | + break | |
3235 | + } | |
3236 | + if (this$1.options.locations) { | |
3237 | + ++this$1.curLine | |
3238 | + this$1.lineStart = this$1.pos | |
3239 | + } | |
3240 | + chunkStart = this$1.pos | |
3241 | + } else { | |
3242 | + ++this$1.pos | |
3243 | + } | |
3244 | + } | |
3245 | +} | |
3246 | + | |
3247 | +// Used to read escaped characters | |
3248 | + | |
3249 | +pp$7.readEscapedChar = function(inTemplate) { | |
3250 | + var ch = this.input.charCodeAt(++this.pos) | |
3251 | + ++this.pos | |
3252 | + switch (ch) { | |
3253 | + case 110: return "\n" // 'n' -> '\n' | |
3254 | + case 114: return "\r" // 'r' -> '\r' | |
3255 | + case 120: return String.fromCharCode(this.readHexChar(2)) // 'x' | |
3256 | + case 117: return codePointToString(this.readCodePoint()) // 'u' | |
3257 | + case 116: return "\t" // 't' -> '\t' | |
3258 | + case 98: return "\b" // 'b' -> '\b' | |
3259 | + case 118: return "\u000b" // 'v' -> '\u000b' | |
3260 | + case 102: return "\f" // 'f' -> '\f' | |
3261 | + case 13: if (this.input.charCodeAt(this.pos) === 10) ++this.pos // '\r\n' | |
3262 | + case 10: // ' \n' | |
3263 | + if (this.options.locations) { this.lineStart = this.pos; ++this.curLine } | |
3264 | + return "" | |
3265 | + default: | |
3266 | + if (ch >= 48 && ch <= 55) { | |
3267 | + var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0] | |
3268 | + var octal = parseInt(octalStr, 8) | |
3269 | + if (octal > 255) { | |
3270 | + octalStr = octalStr.slice(0, -1) | |
3271 | + octal = parseInt(octalStr, 8) | |
3272 | + } | |
3273 | + if (octalStr !== "0" && (this.strict || inTemplate)) { | |
3274 | + this.raise(this.pos - 2, "Octal literal in strict mode") | |
3275 | + } | |
3276 | + this.pos += octalStr.length - 1 | |
3277 | + return String.fromCharCode(octal) | |
3278 | + } | |
3279 | + return String.fromCharCode(ch) | |
3280 | + } | |
3281 | +} | |
3282 | + | |
3283 | +// Used to read character escape sequences ('\x', '\u', '\U'). | |
3284 | + | |
3285 | +pp$7.readHexChar = function(len) { | |
3286 | + var codePos = this.pos | |
3287 | + var n = this.readInt(16, len) | |
3288 | + if (n === null) this.raise(codePos, "Bad character escape sequence") | |
3289 | + return n | |
3290 | +} | |
3291 | + | |
3292 | +// Read an identifier, and return it as a string. Sets `this.containsEsc` | |
3293 | +// to whether the word contained a '\u' escape. | |
3294 | +// | |
3295 | +// Incrementally adds only escaped chars, adding other chunks as-is | |
3296 | +// as a micro-optimization. | |
3297 | + | |
3298 | +pp$7.readWord1 = function() { | |
3299 | + var this$1 = this; | |
3300 | + | |
3301 | + this.containsEsc = false | |
3302 | + var word = "", first = true, chunkStart = this.pos | |
3303 | + var astral = this.options.ecmaVersion >= 6 | |
3304 | + while (this.pos < this.input.length) { | |
3305 | + var ch = this$1.fullCharCodeAtPos() | |
3306 | + if (isIdentifierChar(ch, astral)) { | |
3307 | + this$1.pos += ch <= 0xffff ? 1 : 2 | |
3308 | + } else if (ch === 92) { // "\" | |
3309 | + this$1.containsEsc = true | |
3310 | + word += this$1.input.slice(chunkStart, this$1.pos) | |
3311 | + var escStart = this$1.pos | |
3312 | + if (this$1.input.charCodeAt(++this$1.pos) != 117) // "u" | |
3313 | + this$1.raise(this$1.pos, "Expecting Unicode escape sequence \\uXXXX") | |
3314 | + ++this$1.pos | |
3315 | + var esc = this$1.readCodePoint() | |
3316 | + if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral)) | |
3317 | + this$1.raise(escStart, "Invalid Unicode escape") | |
3318 | + word += codePointToString(esc) | |
3319 | + chunkStart = this$1.pos | |
3320 | + } else { | |
3321 | + break | |
3322 | + } | |
3323 | + first = false | |
3324 | + } | |
3325 | + return word + this.input.slice(chunkStart, this.pos) | |
3326 | +} | |
3327 | + | |
3328 | +// Read an identifier or keyword token. Will check for reserved | |
3329 | +// words when necessary. | |
3330 | + | |
3331 | +pp$7.readWord = function() { | |
3332 | + var word = this.readWord1() | |
3333 | + var type = tt.name | |
3334 | + if (this.keywords.test(word)) { | |
3335 | + if (this.containsEsc) this.raiseRecoverable(this.start, "Escape sequence in keyword " + word) | |
3336 | + type = keywordTypes[word] | |
3337 | + } | |
3338 | + return this.finishToken(type, word) | |
3339 | +} | |
3340 | + | |
3341 | +// Acorn is a tiny, fast JavaScript parser written in JavaScript. | |
3342 | +// | |
3343 | +// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and | |
3344 | +// various contributors and released under an MIT license. | |
3345 | +// | |
3346 | +// Git repositories for Acorn are available at | |
3347 | +// | |
3348 | +// http://marijnhaverbeke.nl/git/acorn | |
3349 | +// https://github.com/ternjs/acorn.git | |
3350 | +// | |
3351 | +// Please use the [github bug tracker][ghbt] to report issues. | |
3352 | +// | |
3353 | +// [ghbt]: https://github.com/ternjs/acorn/issues | |
3354 | +// | |
3355 | +// This file defines the main parser interface. The library also comes | |
3356 | +// with a [error-tolerant parser][dammit] and an | |
3357 | +// [abstract syntax tree walker][walk], defined in other files. | |
3358 | +// | |
3359 | +// [dammit]: acorn_loose.js | |
3360 | +// [walk]: util/walk.js | |
3361 | + | |
3362 | +var version = "4.0.11" | |
3363 | + | |
3364 | +// The main exported interface (under `self.acorn` when in the | |
3365 | +// browser) is a `parse` function that takes a code string and | |
3366 | +// returns an abstract syntax tree as specified by [Mozilla parser | |
3367 | +// API][api]. | |
3368 | +// | |
3369 | +// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API | |
3370 | + | |
3371 | +function parse(input, options) { | |
3372 | + return new Parser(options, input).parse() | |
3373 | +} | |
3374 | + | |
3375 | +// This function tries to parse a single expression at a given | |
3376 | +// offset in a string. Useful for parsing mixed-language formats | |
3377 | +// that embed JavaScript expressions. | |
3378 | + | |
3379 | +function parseExpressionAt(input, pos, options) { | |
3380 | + var p = new Parser(options, input, pos) | |
3381 | + p.nextToken() | |
3382 | + return p.parseExpression() | |
3383 | +} | |
3384 | + | |
3385 | +// Acorn is organized as a tokenizer and a recursive-descent parser. | |
3386 | +// The `tokenizer` export provides an interface to the tokenizer. | |
3387 | + | |
3388 | +function tokenizer(input, options) { | |
3389 | + return new Parser(options, input) | |
3390 | +} | |
3391 | + | |
3392 | +// This is a terrible kludge to support the existing, pre-ES6 | |
3393 | +// interface where the loose parser module retroactively adds exports | |
3394 | +// to this module. | |
3395 | +function addLooseExports(parse, Parser, plugins) { | |
3396 | + parse_dammit = parse | |
3397 | + LooseParser = Parser | |
3398 | + pluginsLoose = plugins | |
3399 | +} | |
3400 | + | |
3401 | +export { version, parse, parseExpressionAt, tokenizer, parse_dammit, LooseParser, pluginsLoose, addLooseExports, Parser, plugins, defaultOptions, Position, SourceLocation, getLineInfo, Node, TokenType, tt as tokTypes, keywordTypes, TokContext, types as tokContexts, isIdentifierChar, isIdentifierStart, Token, isNewLine, lineBreak, lineBreakG }; | |
0 | 3402 | \ No newline at end of file | ... | ... |
node_modules/acorn-dynamic-import/node_modules/acorn/dist/acorn.js
0 → 100644
1 | +(function (global, factory) { | |
2 | + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | |
3 | + typeof define === 'function' && define.amd ? define(['exports'], factory) : | |
4 | + (factory((global.acorn = global.acorn || {}))); | |
5 | +}(this, (function (exports) { 'use strict'; | |
6 | + | |
7 | +// Reserved word lists for various dialects of the language | |
8 | + | |
9 | +var reservedWords = { | |
10 | + 3: "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile", | |
11 | + 5: "class enum extends super const export import", | |
12 | + 6: "enum", | |
13 | + strict: "implements interface let package private protected public static yield", | |
14 | + strictBind: "eval arguments" | |
15 | +} | |
16 | + | |
17 | +// And the keywords | |
18 | + | |
19 | +var ecma5AndLessKeywords = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this" | |
20 | + | |
21 | +var keywords = { | |
22 | + 5: ecma5AndLessKeywords, | |
23 | + 6: ecma5AndLessKeywords + " const class extends export import super" | |
24 | +} | |
25 | + | |
26 | +// ## Character categories | |
27 | + | |
28 | +// Big ugly regular expressions that match characters in the | |
29 | +// whitespace, identifier, and identifier-start categories. These | |
30 | +// are only applied when a character is found to actually have a | |
31 | +// code point above 128. | |
32 | +// Generated by `bin/generate-identifier-regex.js`. | |
33 | + | |
34 | +var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0-\u08b4\u08b6-\u08bd\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fd5\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ae\ua7b0-\ua7b7\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab65\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc" | |
35 | +var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d4-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d01-\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2-\u1cf4\u1cf8\u1cf9\u1dc0-\u1df5\u1dfb-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua900-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f" | |
36 | + | |
37 | +var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]") | |
38 | +var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]") | |
39 | + | |
40 | +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null | |
41 | + | |
42 | +// These are a run-length and offset encoded representation of the | |
43 | +// >0xffff code points that are a valid part of identifiers. The | |
44 | +// offset starts at 0x10000, and each pair of numbers represents an | |
45 | +// offset to the next range, and then a size of the range. They were | |
46 | +// generated by bin/generate-identifier-regex.js | |
47 | +var astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541] | |
48 | +var astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239] | |
49 | + | |
50 | +// This has a complexity linear to the value of the code. The | |
51 | +// assumption is that looking up astral identifier characters is | |
52 | +// rare. | |
53 | +function isInAstralSet(code, set) { | |
54 | + var pos = 0x10000 | |
55 | + for (var i = 0; i < set.length; i += 2) { | |
56 | + pos += set[i] | |
57 | + if (pos > code) return false | |
58 | + pos += set[i + 1] | |
59 | + if (pos >= code) return true | |
60 | + } | |
61 | +} | |
62 | + | |
63 | +// Test whether a given character code starts an identifier. | |
64 | + | |
65 | +function isIdentifierStart(code, astral) { | |
66 | + if (code < 65) return code === 36 | |
67 | + if (code < 91) return true | |
68 | + if (code < 97) return code === 95 | |
69 | + if (code < 123) return true | |
70 | + if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) | |
71 | + if (astral === false) return false | |
72 | + return isInAstralSet(code, astralIdentifierStartCodes) | |
73 | +} | |
74 | + | |
75 | +// Test whether a given character is part of an identifier. | |
76 | + | |
77 | +function isIdentifierChar(code, astral) { | |
78 | + if (code < 48) return code === 36 | |
79 | + if (code < 58) return true | |
80 | + if (code < 65) return false | |
81 | + if (code < 91) return true | |
82 | + if (code < 97) return code === 95 | |
83 | + if (code < 123) return true | |
84 | + if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) | |
85 | + if (astral === false) return false | |
86 | + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes) | |
87 | +} | |
88 | + | |
89 | +// ## Token types | |
90 | + | |
91 | +// The assignment of fine-grained, information-carrying type objects | |
92 | +// allows the tokenizer to store the information it has about a | |
93 | +// token in a way that is very cheap for the parser to look up. | |
94 | + | |
95 | +// All token type variables start with an underscore, to make them | |
96 | +// easy to recognize. | |
97 | + | |
98 | +// The `beforeExpr` property is used to disambiguate between regular | |
99 | +// expressions and divisions. It is set on all token types that can | |
100 | +// be followed by an expression (thus, a slash after them would be a | |
101 | +// regular expression). | |
102 | +// | |
103 | +// The `startsExpr` property is used to check if the token ends a | |
104 | +// `yield` expression. It is set on all token types that either can | |
105 | +// directly start an expression (like a quotation mark) or can | |
106 | +// continue an expression (like the body of a string). | |
107 | +// | |
108 | +// `isLoop` marks a keyword as starting a loop, which is important | |
109 | +// to know when parsing a label, in order to allow or disallow | |
110 | +// continue jumps to that label. | |
111 | + | |
112 | +var TokenType = function TokenType(label, conf) { | |
113 | + if ( conf === void 0 ) conf = {}; | |
114 | + | |
115 | + this.label = label | |
116 | + this.keyword = conf.keyword | |
117 | + this.beforeExpr = !!conf.beforeExpr | |
118 | + this.startsExpr = !!conf.startsExpr | |
119 | + this.isLoop = !!conf.isLoop | |
120 | + this.isAssign = !!conf.isAssign | |
121 | + this.prefix = !!conf.prefix | |
122 | + this.postfix = !!conf.postfix | |
123 | + this.binop = conf.binop || null | |
124 | + this.updateContext = null | |
125 | +}; | |
126 | + | |
127 | +function binop(name, prec) { | |
128 | + return new TokenType(name, {beforeExpr: true, binop: prec}) | |
129 | +} | |
130 | +var beforeExpr = {beforeExpr: true}; | |
131 | +var startsExpr = {startsExpr: true}; | |
132 | +// Map keyword names to token types. | |
133 | + | |
134 | +var keywordTypes = {} | |
135 | + | |
136 | +// Succinct definitions of keyword token types | |
137 | +function kw(name, options) { | |
138 | + if ( options === void 0 ) options = {}; | |
139 | + | |
140 | + options.keyword = name | |
141 | + return keywordTypes[name] = new TokenType(name, options) | |
142 | +} | |
143 | + | |
144 | +var tt = { | |
145 | + num: new TokenType("num", startsExpr), | |
146 | + regexp: new TokenType("regexp", startsExpr), | |
147 | + string: new TokenType("string", startsExpr), | |
148 | + name: new TokenType("name", startsExpr), | |
149 | + eof: new TokenType("eof"), | |
150 | + | |
151 | + // Punctuation token types. | |
152 | + bracketL: new TokenType("[", {beforeExpr: true, startsExpr: true}), | |
153 | + bracketR: new TokenType("]"), | |
154 | + braceL: new TokenType("{", {beforeExpr: true, startsExpr: true}), | |
155 | + braceR: new TokenType("}"), | |
156 | + parenL: new TokenType("(", {beforeExpr: true, startsExpr: true}), | |
157 | + parenR: new TokenType(")"), | |
158 | + comma: new TokenType(",", beforeExpr), | |
159 | + semi: new TokenType(";", beforeExpr), | |
160 | + colon: new TokenType(":", beforeExpr), | |
161 | + dot: new TokenType("."), | |
162 | + question: new TokenType("?", beforeExpr), | |
163 | + arrow: new TokenType("=>", beforeExpr), | |
164 | + template: new TokenType("template"), | |
165 | + ellipsis: new TokenType("...", beforeExpr), | |
166 | + backQuote: new TokenType("`", startsExpr), | |
167 | + dollarBraceL: new TokenType("${", {beforeExpr: true, startsExpr: true}), | |
168 | + | |
169 | + // Operators. These carry several kinds of properties to help the | |
170 | + // parser use them properly (the presence of these properties is | |
171 | + // what categorizes them as operators). | |
172 | + // | |
173 | + // `binop`, when present, specifies that this operator is a binary | |
174 | + // operator, and will refer to its precedence. | |
175 | + // | |
176 | + // `prefix` and `postfix` mark the operator as a prefix or postfix | |
177 | + // unary operator. | |
178 | + // | |
179 | + // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as | |
180 | + // binary operators with a very low precedence, that should result | |
181 | + // in AssignmentExpression nodes. | |
182 | + | |
183 | + eq: new TokenType("=", {beforeExpr: true, isAssign: true}), | |
184 | + assign: new TokenType("_=", {beforeExpr: true, isAssign: true}), | |
185 | + incDec: new TokenType("++/--", {prefix: true, postfix: true, startsExpr: true}), | |
186 | + prefix: new TokenType("prefix", {beforeExpr: true, prefix: true, startsExpr: true}), | |
187 | + logicalOR: binop("||", 1), | |
188 | + logicalAND: binop("&&", 2), | |
189 | + bitwiseOR: binop("|", 3), | |
190 | + bitwiseXOR: binop("^", 4), | |
191 | + bitwiseAND: binop("&", 5), | |
192 | + equality: binop("==/!=", 6), | |
193 | + relational: binop("</>", 7), | |
194 | + bitShift: binop("<</>>", 8), | |
195 | + plusMin: new TokenType("+/-", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}), | |
196 | + modulo: binop("%", 10), | |
197 | + star: binop("*", 10), | |
198 | + slash: binop("/", 10), | |
199 | + starstar: new TokenType("**", {beforeExpr: true}), | |
200 | + | |
201 | + // Keyword token types. | |
202 | + _break: kw("break"), | |
203 | + _case: kw("case", beforeExpr), | |
204 | + _catch: kw("catch"), | |
205 | + _continue: kw("continue"), | |
206 | + _debugger: kw("debugger"), | |
207 | + _default: kw("default", beforeExpr), | |
208 | + _do: kw("do", {isLoop: true, beforeExpr: true}), | |
209 | + _else: kw("else", beforeExpr), | |
210 | + _finally: kw("finally"), | |
211 | + _for: kw("for", {isLoop: true}), | |
212 | + _function: kw("function", startsExpr), | |
213 | + _if: kw("if"), | |
214 | + _return: kw("return", beforeExpr), | |
215 | + _switch: kw("switch"), | |
216 | + _throw: kw("throw", beforeExpr), | |
217 | + _try: kw("try"), | |
218 | + _var: kw("var"), | |
219 | + _const: kw("const"), | |
220 | + _while: kw("while", {isLoop: true}), | |
221 | + _with: kw("with"), | |
222 | + _new: kw("new", {beforeExpr: true, startsExpr: true}), | |
223 | + _this: kw("this", startsExpr), | |
224 | + _super: kw("super", startsExpr), | |
225 | + _class: kw("class"), | |
226 | + _extends: kw("extends", beforeExpr), | |
227 | + _export: kw("export"), | |
228 | + _import: kw("import"), | |
229 | + _null: kw("null", startsExpr), | |
230 | + _true: kw("true", startsExpr), | |
231 | + _false: kw("false", startsExpr), | |
232 | + _in: kw("in", {beforeExpr: true, binop: 7}), | |
233 | + _instanceof: kw("instanceof", {beforeExpr: true, binop: 7}), | |
234 | + _typeof: kw("typeof", {beforeExpr: true, prefix: true, startsExpr: true}), | |
235 | + _void: kw("void", {beforeExpr: true, prefix: true, startsExpr: true}), | |
236 | + _delete: kw("delete", {beforeExpr: true, prefix: true, startsExpr: true}) | |
237 | +} | |
238 | + | |
239 | +// Matches a whole line break (where CRLF is considered a single | |
240 | +// line break). Used to count lines. | |
241 | + | |
242 | +var lineBreak = /\r\n?|\n|\u2028|\u2029/ | |
243 | +var lineBreakG = new RegExp(lineBreak.source, "g") | |
244 | + | |
245 | +function isNewLine(code) { | |
246 | + return code === 10 || code === 13 || code === 0x2028 || code === 0x2029 | |
247 | +} | |
248 | + | |
249 | +var nonASCIIwhitespace = /[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/ | |
250 | + | |
251 | +var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g | |
252 | + | |
253 | +function isArray(obj) { | |
254 | + return Object.prototype.toString.call(obj) === "[object Array]" | |
255 | +} | |
256 | + | |
257 | +// Checks if an object has a property. | |
258 | + | |
259 | +function has(obj, propName) { | |
260 | + return Object.prototype.hasOwnProperty.call(obj, propName) | |
261 | +} | |
262 | + | |
263 | +// These are used when `options.locations` is on, for the | |
264 | +// `startLoc` and `endLoc` properties. | |
265 | + | |
266 | +var Position = function Position(line, col) { | |
267 | + this.line = line | |
268 | + this.column = col | |
269 | +}; | |
270 | + | |
271 | +Position.prototype.offset = function offset (n) { | |
272 | + return new Position(this.line, this.column + n) | |
273 | +}; | |
274 | + | |
275 | +var SourceLocation = function SourceLocation(p, start, end) { | |
276 | + this.start = start | |
277 | + this.end = end | |
278 | + if (p.sourceFile !== null) this.source = p.sourceFile | |
279 | +}; | |
280 | + | |
281 | +// The `getLineInfo` function is mostly useful when the | |
282 | +// `locations` option is off (for performance reasons) and you | |
283 | +// want to find the line/column position for a given character | |
284 | +// offset. `input` should be the code string that the offset refers | |
285 | +// into. | |
286 | + | |
287 | +function getLineInfo(input, offset) { | |
288 | + for (var line = 1, cur = 0;;) { | |
289 | + lineBreakG.lastIndex = cur | |
290 | + var match = lineBreakG.exec(input) | |
291 | + if (match && match.index < offset) { | |
292 | + ++line | |
293 | + cur = match.index + match[0].length | |
294 | + } else { | |
295 | + return new Position(line, offset - cur) | |
296 | + } | |
297 | + } | |
298 | +} | |
299 | + | |
300 | +// A second optional argument can be given to further configure | |
301 | +// the parser process. These options are recognized: | |
302 | + | |
303 | +var defaultOptions = { | |
304 | + // `ecmaVersion` indicates the ECMAScript version to parse. Must | |
305 | + // be either 3, 5, 6 (2015), 7 (2016), or 8 (2017). This influences support | |
306 | + // for strict mode, the set of reserved words, and support for | |
307 | + // new syntax features. The default is 7. | |
308 | + ecmaVersion: 7, | |
309 | + // `sourceType` indicates the mode the code should be parsed in. | |
310 | + // Can be either `"script"` or `"module"`. This influences global | |
311 | + // strict mode and parsing of `import` and `export` declarations. | |
312 | + sourceType: "script", | |
313 | + // `onInsertedSemicolon` can be a callback that will be called | |
314 | + // when a semicolon is automatically inserted. It will be passed | |
315 | + // th position of the comma as an offset, and if `locations` is | |
316 | + // enabled, it is given the location as a `{line, column}` object | |
317 | + // as second argument. | |
318 | + onInsertedSemicolon: null, | |
319 | + // `onTrailingComma` is similar to `onInsertedSemicolon`, but for | |
320 | + // trailing commas. | |
321 | + onTrailingComma: null, | |
322 | + // By default, reserved words are only enforced if ecmaVersion >= 5. | |
323 | + // Set `allowReserved` to a boolean value to explicitly turn this on | |
324 | + // an off. When this option has the value "never", reserved words | |
325 | + // and keywords can also not be used as property names. | |
326 | + allowReserved: null, | |
327 | + // When enabled, a return at the top level is not considered an | |
328 | + // error. | |
329 | + allowReturnOutsideFunction: false, | |
330 | + // When enabled, import/export statements are not constrained to | |
331 | + // appearing at the top of the program. | |
332 | + allowImportExportEverywhere: false, | |
333 | + // When enabled, hashbang directive in the beginning of file | |
334 | + // is allowed and treated as a line comment. | |
335 | + allowHashBang: false, | |
336 | + // When `locations` is on, `loc` properties holding objects with | |
337 | + // `start` and `end` properties in `{line, column}` form (with | |
338 | + // line being 1-based and column 0-based) will be attached to the | |
339 | + // nodes. | |
340 | + locations: false, | |
341 | + // A function can be passed as `onToken` option, which will | |
342 | + // cause Acorn to call that function with object in the same | |
343 | + // format as tokens returned from `tokenizer().getToken()`. Note | |
344 | + // that you are not allowed to call the parser from the | |
345 | + // callback—that will corrupt its internal state. | |
346 | + onToken: null, | |
347 | + // A function can be passed as `onComment` option, which will | |
348 | + // cause Acorn to call that function with `(block, text, start, | |
349 | + // end)` parameters whenever a comment is skipped. `block` is a | |
350 | + // boolean indicating whether this is a block (`/* */`) comment, | |
351 | + // `text` is the content of the comment, and `start` and `end` are | |
352 | + // character offsets that denote the start and end of the comment. | |
353 | + // When the `locations` option is on, two more parameters are | |
354 | + // passed, the full `{line, column}` locations of the start and | |
355 | + // end of the comments. Note that you are not allowed to call the | |
356 | + // parser from the callback—that will corrupt its internal state. | |
357 | + onComment: null, | |
358 | + // Nodes have their start and end characters offsets recorded in | |
359 | + // `start` and `end` properties (directly on the node, rather than | |
360 | + // the `loc` object, which holds line/column data. To also add a | |
361 | + // [semi-standardized][range] `range` property holding a `[start, | |
362 | + // end]` array with the same numbers, set the `ranges` option to | |
363 | + // `true`. | |
364 | + // | |
365 | + // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678 | |
366 | + ranges: false, | |
367 | + // It is possible to parse multiple files into a single AST by | |
368 | + // passing the tree produced by parsing the first file as | |
369 | + // `program` option in subsequent parses. This will add the | |
370 | + // toplevel forms of the parsed file to the `Program` (top) node | |
371 | + // of an existing parse tree. | |
372 | + program: null, | |
373 | + // When `locations` is on, you can pass this to record the source | |
374 | + // file in every node's `loc` object. | |
375 | + sourceFile: null, | |
376 | + // This value, if given, is stored in every node, whether | |
377 | + // `locations` is on or off. | |
378 | + directSourceFile: null, | |
379 | + // When enabled, parenthesized expressions are represented by | |
380 | + // (non-standard) ParenthesizedExpression nodes | |
381 | + preserveParens: false, | |
382 | + plugins: {} | |
383 | +} | |
384 | + | |
385 | +// Interpret and default an options object | |
386 | + | |
387 | +function getOptions(opts) { | |
388 | + var options = {} | |
389 | + | |
390 | + for (var opt in defaultOptions) | |
391 | + options[opt] = opts && has(opts, opt) ? opts[opt] : defaultOptions[opt] | |
392 | + | |
393 | + if (options.ecmaVersion >= 2015) | |
394 | + options.ecmaVersion -= 2009 | |
395 | + | |
396 | + if (options.allowReserved == null) | |
397 | + options.allowReserved = options.ecmaVersion < 5 | |
398 | + | |
399 | + if (isArray(options.onToken)) { | |
400 | + var tokens = options.onToken | |
401 | + options.onToken = function (token) { return tokens.push(token); } | |
402 | + } | |
403 | + if (isArray(options.onComment)) | |
404 | + options.onComment = pushComment(options, options.onComment) | |
405 | + | |
406 | + return options | |
407 | +} | |
408 | + | |
409 | +function pushComment(options, array) { | |
410 | + return function (block, text, start, end, startLoc, endLoc) { | |
411 | + var comment = { | |
412 | + type: block ? 'Block' : 'Line', | |
413 | + value: text, | |
414 | + start: start, | |
415 | + end: end | |
416 | + } | |
417 | + if (options.locations) | |
418 | + comment.loc = new SourceLocation(this, startLoc, endLoc) | |
419 | + if (options.ranges) | |
420 | + comment.range = [start, end] | |
421 | + array.push(comment) | |
422 | + } | |
423 | +} | |
424 | + | |
425 | +// Registered plugins | |
426 | +var plugins = {} | |
427 | + | |
428 | +function keywordRegexp(words) { | |
429 | + return new RegExp("^(" + words.replace(/ /g, "|") + ")$") | |
430 | +} | |
431 | + | |
432 | +var Parser = function Parser(options, input, startPos) { | |
433 | + this.options = options = getOptions(options) | |
434 | + this.sourceFile = options.sourceFile | |
435 | + this.keywords = keywordRegexp(keywords[options.ecmaVersion >= 6 ? 6 : 5]) | |
436 | + var reserved = "" | |
437 | + if (!options.allowReserved) { | |
438 | + for (var v = options.ecmaVersion;; v--) | |
439 | + if (reserved = reservedWords[v]) break | |
440 | + if (options.sourceType == "module") reserved += " await" | |
441 | + } | |
442 | + this.reservedWords = keywordRegexp(reserved) | |
443 | + var reservedStrict = (reserved ? reserved + " " : "") + reservedWords.strict | |
444 | + this.reservedWordsStrict = keywordRegexp(reservedStrict) | |
445 | + this.reservedWordsStrictBind = keywordRegexp(reservedStrict + " " + reservedWords.strictBind) | |
446 | + this.input = String(input) | |
447 | + | |
448 | + // Used to signal to callers of `readWord1` whether the word | |
449 | + // contained any escape sequences. This is needed because words with | |
450 | + // escape sequences must not be interpreted as keywords. | |
451 | + this.containsEsc = false | |
452 | + | |
453 | + // Load plugins | |
454 | + this.loadPlugins(options.plugins) | |
455 | + | |
456 | + // Set up token state | |
457 | + | |
458 | + // The current position of the tokenizer in the input. | |
459 | + if (startPos) { | |
460 | + this.pos = startPos | |
461 | + this.lineStart = this.input.lastIndexOf("\n", startPos - 1) + 1 | |
462 | + this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length | |
463 | + } else { | |
464 | + this.pos = this.lineStart = 0 | |
465 | + this.curLine = 1 | |
466 | + } | |
467 | + | |
468 | + // Properties of the current token: | |
469 | + // Its type | |
470 | + this.type = tt.eof | |
471 | + // For tokens that include more information than their type, the value | |
472 | + this.value = null | |
473 | + // Its start and end offset | |
474 | + this.start = this.end = this.pos | |
475 | + // And, if locations are used, the {line, column} object | |
476 | + // corresponding to those offsets | |
477 | + this.startLoc = this.endLoc = this.curPosition() | |
478 | + | |
479 | + // Position information for the previous token | |
480 | + this.lastTokEndLoc = this.lastTokStartLoc = null | |
481 | + this.lastTokStart = this.lastTokEnd = this.pos | |
482 | + | |
483 | + // The context stack is used to superficially track syntactic | |
484 | + // context to predict whether a regular expression is allowed in a | |
485 | + // given position. | |
486 | + this.context = this.initialContext() | |
487 | + this.exprAllowed = true | |
488 | + | |
489 | + // Figure out if it's a module code. | |
490 | + this.inModule = options.sourceType === "module" | |
491 | + this.strict = this.inModule || this.strictDirective(this.pos) | |
492 | + | |
493 | + // Used to signify the start of a potential arrow function | |
494 | + this.potentialArrowAt = -1 | |
495 | + | |
496 | + // Flags to track whether we are in a function, a generator, an async function. | |
497 | + this.inFunction = this.inGenerator = this.inAsync = false | |
498 | + // Positions to delayed-check that yield/await does not exist in default parameters. | |
499 | + this.yieldPos = this.awaitPos = 0 | |
500 | + // Labels in scope. | |
501 | + this.labels = [] | |
502 | + | |
503 | + // If enabled, skip leading hashbang line. | |
504 | + if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === '#!') | |
505 | + this.skipLineComment(2) | |
506 | +}; | |
507 | + | |
508 | +// DEPRECATED Kept for backwards compatibility until 3.0 in case a plugin uses them | |
509 | +Parser.prototype.isKeyword = function isKeyword (word) { return this.keywords.test(word) }; | |
510 | +Parser.prototype.isReservedWord = function isReservedWord (word) { return this.reservedWords.test(word) }; | |
511 | + | |
512 | +Parser.prototype.extend = function extend (name, f) { | |
513 | + this[name] = f(this[name]) | |
514 | +}; | |
515 | + | |
516 | +Parser.prototype.loadPlugins = function loadPlugins (pluginConfigs) { | |
517 | + var this$1 = this; | |
518 | + | |
519 | + for (var name in pluginConfigs) { | |
520 | + var plugin = plugins[name] | |
521 | + if (!plugin) throw new Error("Plugin '" + name + "' not found") | |
522 | + plugin(this$1, pluginConfigs[name]) | |
523 | + } | |
524 | +}; | |
525 | + | |
526 | +Parser.prototype.parse = function parse () { | |
527 | + var node = this.options.program || this.startNode() | |
528 | + this.nextToken() | |
529 | + return this.parseTopLevel(node) | |
530 | +}; | |
531 | + | |
532 | +var pp = Parser.prototype | |
533 | + | |
534 | +// ## Parser utilities | |
535 | + | |
536 | +var literal = /^(?:'((?:[^\']|\.)*)'|"((?:[^\"]|\.)*)"|;)/ | |
537 | +pp.strictDirective = function(start) { | |
538 | + var this$1 = this; | |
539 | + | |
540 | + for (;;) { | |
541 | + skipWhiteSpace.lastIndex = start | |
542 | + start += skipWhiteSpace.exec(this$1.input)[0].length | |
543 | + var match = literal.exec(this$1.input.slice(start)) | |
544 | + if (!match) return false | |
545 | + if ((match[1] || match[2]) == "use strict") return true | |
546 | + start += match[0].length | |
547 | + } | |
548 | +} | |
549 | + | |
550 | +// Predicate that tests whether the next token is of the given | |
551 | +// type, and if yes, consumes it as a side effect. | |
552 | + | |
553 | +pp.eat = function(type) { | |
554 | + if (this.type === type) { | |
555 | + this.next() | |
556 | + return true | |
557 | + } else { | |
558 | + return false | |
559 | + } | |
560 | +} | |
561 | + | |
562 | +// Tests whether parsed token is a contextual keyword. | |
563 | + | |
564 | +pp.isContextual = function(name) { | |
565 | + return this.type === tt.name && this.value === name | |
566 | +} | |
567 | + | |
568 | +// Consumes contextual keyword if possible. | |
569 | + | |
570 | +pp.eatContextual = function(name) { | |
571 | + return this.value === name && this.eat(tt.name) | |
572 | +} | |
573 | + | |
574 | +// Asserts that following token is given contextual keyword. | |
575 | + | |
576 | +pp.expectContextual = function(name) { | |
577 | + if (!this.eatContextual(name)) this.unexpected() | |
578 | +} | |
579 | + | |
580 | +// Test whether a semicolon can be inserted at the current position. | |
581 | + | |
582 | +pp.canInsertSemicolon = function() { | |
583 | + return this.type === tt.eof || | |
584 | + this.type === tt.braceR || | |
585 | + lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) | |
586 | +} | |
587 | + | |
588 | +pp.insertSemicolon = function() { | |
589 | + if (this.canInsertSemicolon()) { | |
590 | + if (this.options.onInsertedSemicolon) | |
591 | + this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc) | |
592 | + return true | |
593 | + } | |
594 | +} | |
595 | + | |
596 | +// Consume a semicolon, or, failing that, see if we are allowed to | |
597 | +// pretend that there is a semicolon at this position. | |
598 | + | |
599 | +pp.semicolon = function() { | |
600 | + if (!this.eat(tt.semi) && !this.insertSemicolon()) this.unexpected() | |
601 | +} | |
602 | + | |
603 | +pp.afterTrailingComma = function(tokType, notNext) { | |
604 | + if (this.type == tokType) { | |
605 | + if (this.options.onTrailingComma) | |
606 | + this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc) | |
607 | + if (!notNext) | |
608 | + this.next() | |
609 | + return true | |
610 | + } | |
611 | +} | |
612 | + | |
613 | +// Expect a token of a given type. If found, consume it, otherwise, | |
614 | +// raise an unexpected token error. | |
615 | + | |
616 | +pp.expect = function(type) { | |
617 | + this.eat(type) || this.unexpected() | |
618 | +} | |
619 | + | |
620 | +// Raise an unexpected token error. | |
621 | + | |
622 | +pp.unexpected = function(pos) { | |
623 | + this.raise(pos != null ? pos : this.start, "Unexpected token") | |
624 | +} | |
625 | + | |
626 | +var DestructuringErrors = function DestructuringErrors() { | |
627 | + this.shorthandAssign = this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = -1 | |
628 | +}; | |
629 | + | |
630 | +pp.checkPatternErrors = function(refDestructuringErrors, isAssign) { | |
631 | + if (!refDestructuringErrors) return | |
632 | + if (refDestructuringErrors.trailingComma > -1) | |
633 | + this.raiseRecoverable(refDestructuringErrors.trailingComma, "Comma is not permitted after the rest element") | |
634 | + var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind | |
635 | + if (parens > -1) this.raiseRecoverable(parens, "Parenthesized pattern") | |
636 | +} | |
637 | + | |
638 | +pp.checkExpressionErrors = function(refDestructuringErrors, andThrow) { | |
639 | + var pos = refDestructuringErrors ? refDestructuringErrors.shorthandAssign : -1 | |
640 | + if (!andThrow) return pos >= 0 | |
641 | + if (pos > -1) this.raise(pos, "Shorthand property assignments are valid only in destructuring patterns") | |
642 | +} | |
643 | + | |
644 | +pp.checkYieldAwaitInDefaultParams = function() { | |
645 | + if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos)) | |
646 | + this.raise(this.yieldPos, "Yield expression cannot be a default value") | |
647 | + if (this.awaitPos) | |
648 | + this.raise(this.awaitPos, "Await expression cannot be a default value") | |
649 | +} | |
650 | + | |
651 | +pp.isSimpleAssignTarget = function(expr) { | |
652 | + if (expr.type === "ParenthesizedExpression") | |
653 | + return this.isSimpleAssignTarget(expr.expression) | |
654 | + return expr.type === "Identifier" || expr.type === "MemberExpression" | |
655 | +} | |
656 | + | |
657 | +var pp$1 = Parser.prototype | |
658 | + | |
659 | +// ### Statement parsing | |
660 | + | |
661 | +// Parse a program. Initializes the parser, reads any number of | |
662 | +// statements, and wraps them in a Program node. Optionally takes a | |
663 | +// `program` argument. If present, the statements will be appended | |
664 | +// to its body instead of creating a new node. | |
665 | + | |
666 | +pp$1.parseTopLevel = function(node) { | |
667 | + var this$1 = this; | |
668 | + | |
669 | + var exports = {} | |
670 | + if (!node.body) node.body = [] | |
671 | + while (this.type !== tt.eof) { | |
672 | + var stmt = this$1.parseStatement(true, true, exports) | |
673 | + node.body.push(stmt) | |
674 | + } | |
675 | + this.next() | |
676 | + if (this.options.ecmaVersion >= 6) { | |
677 | + node.sourceType = this.options.sourceType | |
678 | + } | |
679 | + return this.finishNode(node, "Program") | |
680 | +} | |
681 | + | |
682 | +var loopLabel = {kind: "loop"}; | |
683 | +var switchLabel = {kind: "switch"}; | |
684 | +pp$1.isLet = function() { | |
685 | + if (this.type !== tt.name || this.options.ecmaVersion < 6 || this.value != "let") return false | |
686 | + skipWhiteSpace.lastIndex = this.pos | |
687 | + var skip = skipWhiteSpace.exec(this.input) | |
688 | + var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next) | |
689 | + if (nextCh === 91 || nextCh == 123) return true // '{' and '[' | |
690 | + if (isIdentifierStart(nextCh, true)) { | |
691 | + for (var pos = next + 1; isIdentifierChar(this.input.charCodeAt(pos), true); ++pos) {} | |
692 | + var ident = this.input.slice(next, pos) | |
693 | + if (!this.isKeyword(ident)) return true | |
694 | + } | |
695 | + return false | |
696 | +} | |
697 | + | |
698 | +// check 'async [no LineTerminator here] function' | |
699 | +// - 'async /*foo*/ function' is OK. | |
700 | +// - 'async /*\n*/ function' is invalid. | |
701 | +pp$1.isAsyncFunction = function() { | |
702 | + if (this.type !== tt.name || this.options.ecmaVersion < 8 || this.value != "async") | |
703 | + return false | |
704 | + | |
705 | + skipWhiteSpace.lastIndex = this.pos | |
706 | + var skip = skipWhiteSpace.exec(this.input) | |
707 | + var next = this.pos + skip[0].length | |
708 | + return !lineBreak.test(this.input.slice(this.pos, next)) && | |
709 | + this.input.slice(next, next + 8) === "function" && | |
710 | + (next + 8 == this.input.length || !isIdentifierChar(this.input.charAt(next + 8))) | |
711 | +} | |
712 | + | |
713 | +// Parse a single statement. | |
714 | +// | |
715 | +// If expecting a statement and finding a slash operator, parse a | |
716 | +// regular expression literal. This is to handle cases like | |
717 | +// `if (foo) /blah/.exec(foo)`, where looking at the previous token | |
718 | +// does not help. | |
719 | + | |
720 | +pp$1.parseStatement = function(declaration, topLevel, exports) { | |
721 | + var starttype = this.type, node = this.startNode(), kind | |
722 | + | |
723 | + if (this.isLet()) { | |
724 | + starttype = tt._var | |
725 | + kind = "let" | |
726 | + } | |
727 | + | |
728 | + // Most types of statements are recognized by the keyword they | |
729 | + // start with. Many are trivial to parse, some require a bit of | |
730 | + // complexity. | |
731 | + | |
732 | + switch (starttype) { | |
733 | + case tt._break: case tt._continue: return this.parseBreakContinueStatement(node, starttype.keyword) | |
734 | + case tt._debugger: return this.parseDebuggerStatement(node) | |
735 | + case tt._do: return this.parseDoStatement(node) | |
736 | + case tt._for: return this.parseForStatement(node) | |
737 | + case tt._function: | |
738 | + if (!declaration && this.options.ecmaVersion >= 6) this.unexpected() | |
739 | + return this.parseFunctionStatement(node, false) | |
740 | + case tt._class: | |
741 | + if (!declaration) this.unexpected() | |
742 | + return this.parseClass(node, true) | |
743 | + case tt._if: return this.parseIfStatement(node) | |
744 | + case tt._return: return this.parseReturnStatement(node) | |
745 | + case tt._switch: return this.parseSwitchStatement(node) | |
746 | + case tt._throw: return this.parseThrowStatement(node) | |
747 | + case tt._try: return this.parseTryStatement(node) | |
748 | + case tt._const: case tt._var: | |
749 | + kind = kind || this.value | |
750 | + if (!declaration && kind != "var") this.unexpected() | |
751 | + return this.parseVarStatement(node, kind) | |
752 | + case tt._while: return this.parseWhileStatement(node) | |
753 | + case tt._with: return this.parseWithStatement(node) | |
754 | + case tt.braceL: return this.parseBlock() | |
755 | + case tt.semi: return this.parseEmptyStatement(node) | |
756 | + case tt._export: | |
757 | + case tt._import: | |
758 | + if (!this.options.allowImportExportEverywhere) { | |
759 | + if (!topLevel) | |
760 | + this.raise(this.start, "'import' and 'export' may only appear at the top level") | |
761 | + if (!this.inModule) | |
762 | + this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'") | |
763 | + } | |
764 | + return starttype === tt._import ? this.parseImport(node) : this.parseExport(node, exports) | |
765 | + | |
766 | + // If the statement does not start with a statement keyword or a | |
767 | + // brace, it's an ExpressionStatement or LabeledStatement. We | |
768 | + // simply start parsing an expression, and afterwards, if the | |
769 | + // next token is a colon and the expression was a simple | |
770 | + // Identifier node, we switch to interpreting it as a label. | |
771 | + default: | |
772 | + if (this.isAsyncFunction() && declaration) { | |
773 | + this.next() | |
774 | + return this.parseFunctionStatement(node, true) | |
775 | + } | |
776 | + | |
777 | + var maybeName = this.value, expr = this.parseExpression() | |
778 | + if (starttype === tt.name && expr.type === "Identifier" && this.eat(tt.colon)) | |
779 | + return this.parseLabeledStatement(node, maybeName, expr) | |
780 | + else return this.parseExpressionStatement(node, expr) | |
781 | + } | |
782 | +} | |
783 | + | |
784 | +pp$1.parseBreakContinueStatement = function(node, keyword) { | |
785 | + var this$1 = this; | |
786 | + | |
787 | + var isBreak = keyword == "break" | |
788 | + this.next() | |
789 | + if (this.eat(tt.semi) || this.insertSemicolon()) node.label = null | |
790 | + else if (this.type !== tt.name) this.unexpected() | |
791 | + else { | |
792 | + node.label = this.parseIdent() | |
793 | + this.semicolon() | |
794 | + } | |
795 | + | |
796 | + // Verify that there is an actual destination to break or | |
797 | + // continue to. | |
798 | + for (var i = 0; i < this.labels.length; ++i) { | |
799 | + var lab = this$1.labels[i] | |
800 | + if (node.label == null || lab.name === node.label.name) { | |
801 | + if (lab.kind != null && (isBreak || lab.kind === "loop")) break | |
802 | + if (node.label && isBreak) break | |
803 | + } | |
804 | + } | |
805 | + if (i === this.labels.length) this.raise(node.start, "Unsyntactic " + keyword) | |
806 | + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement") | |
807 | +} | |
808 | + | |
809 | +pp$1.parseDebuggerStatement = function(node) { | |
810 | + this.next() | |
811 | + this.semicolon() | |
812 | + return this.finishNode(node, "DebuggerStatement") | |
813 | +} | |
814 | + | |
815 | +pp$1.parseDoStatement = function(node) { | |
816 | + this.next() | |
817 | + this.labels.push(loopLabel) | |
818 | + node.body = this.parseStatement(false) | |
819 | + this.labels.pop() | |
820 | + this.expect(tt._while) | |
821 | + node.test = this.parseParenExpression() | |
822 | + if (this.options.ecmaVersion >= 6) | |
823 | + this.eat(tt.semi) | |
824 | + else | |
825 | + this.semicolon() | |
826 | + return this.finishNode(node, "DoWhileStatement") | |
827 | +} | |
828 | + | |
829 | +// Disambiguating between a `for` and a `for`/`in` or `for`/`of` | |
830 | +// loop is non-trivial. Basically, we have to parse the init `var` | |
831 | +// statement or expression, disallowing the `in` operator (see | |
832 | +// the second parameter to `parseExpression`), and then check | |
833 | +// whether the next token is `in` or `of`. When there is no init | |
834 | +// part (semicolon immediately after the opening parenthesis), it | |
835 | +// is a regular `for` loop. | |
836 | + | |
837 | +pp$1.parseForStatement = function(node) { | |
838 | + this.next() | |
839 | + this.labels.push(loopLabel) | |
840 | + this.expect(tt.parenL) | |
841 | + if (this.type === tt.semi) return this.parseFor(node, null) | |
842 | + var isLet = this.isLet() | |
843 | + if (this.type === tt._var || this.type === tt._const || isLet) { | |
844 | + var init$1 = this.startNode(), kind = isLet ? "let" : this.value | |
845 | + this.next() | |
846 | + this.parseVar(init$1, true, kind) | |
847 | + this.finishNode(init$1, "VariableDeclaration") | |
848 | + if ((this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) && init$1.declarations.length === 1 && | |
849 | + !(kind !== "var" && init$1.declarations[0].init)) | |
850 | + return this.parseForIn(node, init$1) | |
851 | + return this.parseFor(node, init$1) | |
852 | + } | |
853 | + var refDestructuringErrors = new DestructuringErrors | |
854 | + var init = this.parseExpression(true, refDestructuringErrors) | |
855 | + if (this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) { | |
856 | + this.toAssignable(init) | |
857 | + this.checkLVal(init) | |
858 | + this.checkPatternErrors(refDestructuringErrors, true) | |
859 | + return this.parseForIn(node, init) | |
860 | + } else { | |
861 | + this.checkExpressionErrors(refDestructuringErrors, true) | |
862 | + } | |
863 | + return this.parseFor(node, init) | |
864 | +} | |
865 | + | |
866 | +pp$1.parseFunctionStatement = function(node, isAsync) { | |
867 | + this.next() | |
868 | + return this.parseFunction(node, true, false, isAsync) | |
869 | +} | |
870 | + | |
871 | +pp$1.isFunction = function() { | |
872 | + return this.type === tt._function || this.isAsyncFunction() | |
873 | +} | |
874 | + | |
875 | +pp$1.parseIfStatement = function(node) { | |
876 | + this.next() | |
877 | + node.test = this.parseParenExpression() | |
878 | + // allow function declarations in branches, but only in non-strict mode | |
879 | + node.consequent = this.parseStatement(!this.strict && this.isFunction()) | |
880 | + node.alternate = this.eat(tt._else) ? this.parseStatement(!this.strict && this.isFunction()) : null | |
881 | + return this.finishNode(node, "IfStatement") | |
882 | +} | |
883 | + | |
884 | +pp$1.parseReturnStatement = function(node) { | |
885 | + if (!this.inFunction && !this.options.allowReturnOutsideFunction) | |
886 | + this.raise(this.start, "'return' outside of function") | |
887 | + this.next() | |
888 | + | |
889 | + // In `return` (and `break`/`continue`), the keywords with | |
890 | + // optional arguments, we eagerly look for a semicolon or the | |
891 | + // possibility to insert one. | |
892 | + | |
893 | + if (this.eat(tt.semi) || this.insertSemicolon()) node.argument = null | |
894 | + else { node.argument = this.parseExpression(); this.semicolon() } | |
895 | + return this.finishNode(node, "ReturnStatement") | |
896 | +} | |
897 | + | |
898 | +pp$1.parseSwitchStatement = function(node) { | |
899 | + var this$1 = this; | |
900 | + | |
901 | + this.next() | |
902 | + node.discriminant = this.parseParenExpression() | |
903 | + node.cases = [] | |
904 | + this.expect(tt.braceL) | |
905 | + this.labels.push(switchLabel) | |
906 | + | |
907 | + // Statements under must be grouped (by label) in SwitchCase | |
908 | + // nodes. `cur` is used to keep the node that we are currently | |
909 | + // adding statements to. | |
910 | + | |
911 | + for (var cur, sawDefault = false; this.type != tt.braceR;) { | |
912 | + if (this$1.type === tt._case || this$1.type === tt._default) { | |
913 | + var isCase = this$1.type === tt._case | |
914 | + if (cur) this$1.finishNode(cur, "SwitchCase") | |
915 | + node.cases.push(cur = this$1.startNode()) | |
916 | + cur.consequent = [] | |
917 | + this$1.next() | |
918 | + if (isCase) { | |
919 | + cur.test = this$1.parseExpression() | |
920 | + } else { | |
921 | + if (sawDefault) this$1.raiseRecoverable(this$1.lastTokStart, "Multiple default clauses") | |
922 | + sawDefault = true | |
923 | + cur.test = null | |
924 | + } | |
925 | + this$1.expect(tt.colon) | |
926 | + } else { | |
927 | + if (!cur) this$1.unexpected() | |
928 | + cur.consequent.push(this$1.parseStatement(true)) | |
929 | + } | |
930 | + } | |
931 | + if (cur) this.finishNode(cur, "SwitchCase") | |
932 | + this.next() // Closing brace | |
933 | + this.labels.pop() | |
934 | + return this.finishNode(node, "SwitchStatement") | |
935 | +} | |
936 | + | |
937 | +pp$1.parseThrowStatement = function(node) { | |
938 | + this.next() | |
939 | + if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) | |
940 | + this.raise(this.lastTokEnd, "Illegal newline after throw") | |
941 | + node.argument = this.parseExpression() | |
942 | + this.semicolon() | |
943 | + return this.finishNode(node, "ThrowStatement") | |
944 | +} | |
945 | + | |
946 | +// Reused empty array added for node fields that are always empty. | |
947 | + | |
948 | +var empty = [] | |
949 | + | |
950 | +pp$1.parseTryStatement = function(node) { | |
951 | + this.next() | |
952 | + node.block = this.parseBlock() | |
953 | + node.handler = null | |
954 | + if (this.type === tt._catch) { | |
955 | + var clause = this.startNode() | |
956 | + this.next() | |
957 | + this.expect(tt.parenL) | |
958 | + clause.param = this.parseBindingAtom() | |
959 | + this.checkLVal(clause.param, true) | |
960 | + this.expect(tt.parenR) | |
961 | + clause.body = this.parseBlock() | |
962 | + node.handler = this.finishNode(clause, "CatchClause") | |
963 | + } | |
964 | + node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null | |
965 | + if (!node.handler && !node.finalizer) | |
966 | + this.raise(node.start, "Missing catch or finally clause") | |
967 | + return this.finishNode(node, "TryStatement") | |
968 | +} | |
969 | + | |
970 | +pp$1.parseVarStatement = function(node, kind) { | |
971 | + this.next() | |
972 | + this.parseVar(node, false, kind) | |
973 | + this.semicolon() | |
974 | + return this.finishNode(node, "VariableDeclaration") | |
975 | +} | |
976 | + | |
977 | +pp$1.parseWhileStatement = function(node) { | |
978 | + this.next() | |
979 | + node.test = this.parseParenExpression() | |
980 | + this.labels.push(loopLabel) | |
981 | + node.body = this.parseStatement(false) | |
982 | + this.labels.pop() | |
983 | + return this.finishNode(node, "WhileStatement") | |
984 | +} | |
985 | + | |
986 | +pp$1.parseWithStatement = function(node) { | |
987 | + if (this.strict) this.raise(this.start, "'with' in strict mode") | |
988 | + this.next() | |
989 | + node.object = this.parseParenExpression() | |
990 | + node.body = this.parseStatement(false) | |
991 | + return this.finishNode(node, "WithStatement") | |
992 | +} | |
993 | + | |
994 | +pp$1.parseEmptyStatement = function(node) { | |
995 | + this.next() | |
996 | + return this.finishNode(node, "EmptyStatement") | |
997 | +} | |
998 | + | |
999 | +pp$1.parseLabeledStatement = function(node, maybeName, expr) { | |
1000 | + var this$1 = this; | |
1001 | + | |
1002 | + for (var i = 0; i < this.labels.length; ++i) | |
1003 | + if (this$1.labels[i].name === maybeName) this$1.raise(expr.start, "Label '" + maybeName + "' is already declared") | |
1004 | + var kind = this.type.isLoop ? "loop" : this.type === tt._switch ? "switch" : null | |
1005 | + for (var i$1 = this.labels.length - 1; i$1 >= 0; i$1--) { | |
1006 | + var label = this$1.labels[i$1] | |
1007 | + if (label.statementStart == node.start) { | |
1008 | + label.statementStart = this$1.start | |
1009 | + label.kind = kind | |
1010 | + } else break | |
1011 | + } | |
1012 | + this.labels.push({name: maybeName, kind: kind, statementStart: this.start}) | |
1013 | + node.body = this.parseStatement(true) | |
1014 | + if (node.body.type == "ClassDeclaration" || | |
1015 | + node.body.type == "VariableDeclaration" && (this.strict || node.body.kind != "var") || | |
1016 | + node.body.type == "FunctionDeclaration" && (this.strict || node.body.generator)) | |
1017 | + this.raiseRecoverable(node.body.start, "Invalid labeled declaration") | |
1018 | + this.labels.pop() | |
1019 | + node.label = expr | |
1020 | + return this.finishNode(node, "LabeledStatement") | |
1021 | +} | |
1022 | + | |
1023 | +pp$1.parseExpressionStatement = function(node, expr) { | |
1024 | + node.expression = expr | |
1025 | + this.semicolon() | |
1026 | + return this.finishNode(node, "ExpressionStatement") | |
1027 | +} | |
1028 | + | |
1029 | +// Parse a semicolon-enclosed block of statements, handling `"use | |
1030 | +// strict"` declarations when `allowStrict` is true (used for | |
1031 | +// function bodies). | |
1032 | + | |
1033 | +pp$1.parseBlock = function() { | |
1034 | + var this$1 = this; | |
1035 | + | |
1036 | + var node = this.startNode() | |
1037 | + node.body = [] | |
1038 | + this.expect(tt.braceL) | |
1039 | + while (!this.eat(tt.braceR)) { | |
1040 | + var stmt = this$1.parseStatement(true) | |
1041 | + node.body.push(stmt) | |
1042 | + } | |
1043 | + return this.finishNode(node, "BlockStatement") | |
1044 | +} | |
1045 | + | |
1046 | +// Parse a regular `for` loop. The disambiguation code in | |
1047 | +// `parseStatement` will already have parsed the init statement or | |
1048 | +// expression. | |
1049 | + | |
1050 | +pp$1.parseFor = function(node, init) { | |
1051 | + node.init = init | |
1052 | + this.expect(tt.semi) | |
1053 | + node.test = this.type === tt.semi ? null : this.parseExpression() | |
1054 | + this.expect(tt.semi) | |
1055 | + node.update = this.type === tt.parenR ? null : this.parseExpression() | |
1056 | + this.expect(tt.parenR) | |
1057 | + node.body = this.parseStatement(false) | |
1058 | + this.labels.pop() | |
1059 | + return this.finishNode(node, "ForStatement") | |
1060 | +} | |
1061 | + | |
1062 | +// Parse a `for`/`in` and `for`/`of` loop, which are almost | |
1063 | +// same from parser's perspective. | |
1064 | + | |
1065 | +pp$1.parseForIn = function(node, init) { | |
1066 | + var type = this.type === tt._in ? "ForInStatement" : "ForOfStatement" | |
1067 | + this.next() | |
1068 | + node.left = init | |
1069 | + node.right = this.parseExpression() | |
1070 | + this.expect(tt.parenR) | |
1071 | + node.body = this.parseStatement(false) | |
1072 | + this.labels.pop() | |
1073 | + return this.finishNode(node, type) | |
1074 | +} | |
1075 | + | |
1076 | +// Parse a list of variable declarations. | |
1077 | + | |
1078 | +pp$1.parseVar = function(node, isFor, kind) { | |
1079 | + var this$1 = this; | |
1080 | + | |
1081 | + node.declarations = [] | |
1082 | + node.kind = kind | |
1083 | + for (;;) { | |
1084 | + var decl = this$1.startNode() | |
1085 | + this$1.parseVarId(decl) | |
1086 | + if (this$1.eat(tt.eq)) { | |
1087 | + decl.init = this$1.parseMaybeAssign(isFor) | |
1088 | + } else if (kind === "const" && !(this$1.type === tt._in || (this$1.options.ecmaVersion >= 6 && this$1.isContextual("of")))) { | |
1089 | + this$1.unexpected() | |
1090 | + } else if (decl.id.type != "Identifier" && !(isFor && (this$1.type === tt._in || this$1.isContextual("of")))) { | |
1091 | + this$1.raise(this$1.lastTokEnd, "Complex binding patterns require an initialization value") | |
1092 | + } else { | |
1093 | + decl.init = null | |
1094 | + } | |
1095 | + node.declarations.push(this$1.finishNode(decl, "VariableDeclarator")) | |
1096 | + if (!this$1.eat(tt.comma)) break | |
1097 | + } | |
1098 | + return node | |
1099 | +} | |
1100 | + | |
1101 | +pp$1.parseVarId = function(decl) { | |
1102 | + decl.id = this.parseBindingAtom() | |
1103 | + this.checkLVal(decl.id, true) | |
1104 | +} | |
1105 | + | |
1106 | +// Parse a function declaration or literal (depending on the | |
1107 | +// `isStatement` parameter). | |
1108 | + | |
1109 | +pp$1.parseFunction = function(node, isStatement, allowExpressionBody, isAsync) { | |
1110 | + this.initFunction(node) | |
1111 | + if (this.options.ecmaVersion >= 6 && !isAsync) | |
1112 | + node.generator = this.eat(tt.star) | |
1113 | + if (this.options.ecmaVersion >= 8) | |
1114 | + node.async = !!isAsync | |
1115 | + | |
1116 | + if (isStatement == null) | |
1117 | + isStatement = this.type == tt.name | |
1118 | + if (isStatement) | |
1119 | + node.id = this.parseIdent() | |
1120 | + | |
1121 | + var oldInGen = this.inGenerator, oldInAsync = this.inAsync, | |
1122 | + oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction | |
1123 | + this.inGenerator = node.generator | |
1124 | + this.inAsync = node.async | |
1125 | + this.yieldPos = 0 | |
1126 | + this.awaitPos = 0 | |
1127 | + this.inFunction = true | |
1128 | + | |
1129 | + if (!isStatement && this.type === tt.name) | |
1130 | + node.id = this.parseIdent() | |
1131 | + this.parseFunctionParams(node) | |
1132 | + this.parseFunctionBody(node, allowExpressionBody) | |
1133 | + | |
1134 | + this.inGenerator = oldInGen | |
1135 | + this.inAsync = oldInAsync | |
1136 | + this.yieldPos = oldYieldPos | |
1137 | + this.awaitPos = oldAwaitPos | |
1138 | + this.inFunction = oldInFunc | |
1139 | + return this.finishNode(node, isStatement ? "FunctionDeclaration" : "FunctionExpression") | |
1140 | +} | |
1141 | + | |
1142 | +pp$1.parseFunctionParams = function(node) { | |
1143 | + this.expect(tt.parenL) | |
1144 | + node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8, true) | |
1145 | + this.checkYieldAwaitInDefaultParams() | |
1146 | +} | |
1147 | + | |
1148 | +// Parse a class declaration or literal (depending on the | |
1149 | +// `isStatement` parameter). | |
1150 | + | |
1151 | +pp$1.parseClass = function(node, isStatement) { | |
1152 | + var this$1 = this; | |
1153 | + | |
1154 | + this.next() | |
1155 | + if (isStatement == null) isStatement = this.type === tt.name | |
1156 | + this.parseClassId(node, isStatement) | |
1157 | + this.parseClassSuper(node) | |
1158 | + var classBody = this.startNode() | |
1159 | + var hadConstructor = false | |
1160 | + classBody.body = [] | |
1161 | + this.expect(tt.braceL) | |
1162 | + while (!this.eat(tt.braceR)) { | |
1163 | + if (this$1.eat(tt.semi)) continue | |
1164 | + var method = this$1.startNode() | |
1165 | + var isGenerator = this$1.eat(tt.star) | |
1166 | + var isAsync = false | |
1167 | + var isMaybeStatic = this$1.type === tt.name && this$1.value === "static" | |
1168 | + this$1.parsePropertyName(method) | |
1169 | + method.static = isMaybeStatic && this$1.type !== tt.parenL | |
1170 | + if (method.static) { | |
1171 | + if (isGenerator) this$1.unexpected() | |
1172 | + isGenerator = this$1.eat(tt.star) | |
1173 | + this$1.parsePropertyName(method) | |
1174 | + } | |
1175 | + if (this$1.options.ecmaVersion >= 8 && !isGenerator && !method.computed && | |
1176 | + method.key.type === "Identifier" && method.key.name === "async" && this$1.type !== tt.parenL && | |
1177 | + !this$1.canInsertSemicolon()) { | |
1178 | + isAsync = true | |
1179 | + this$1.parsePropertyName(method) | |
1180 | + } | |
1181 | + method.kind = "method" | |
1182 | + var isGetSet = false | |
1183 | + if (!method.computed) { | |
1184 | + var key = method.key; | |
1185 | + if (!isGenerator && !isAsync && key.type === "Identifier" && this$1.type !== tt.parenL && (key.name === "get" || key.name === "set")) { | |
1186 | + isGetSet = true | |
1187 | + method.kind = key.name | |
1188 | + key = this$1.parsePropertyName(method) | |
1189 | + } | |
1190 | + if (!method.static && (key.type === "Identifier" && key.name === "constructor" || | |
1191 | + key.type === "Literal" && key.value === "constructor")) { | |
1192 | + if (hadConstructor) this$1.raise(key.start, "Duplicate constructor in the same class") | |
1193 | + if (isGetSet) this$1.raise(key.start, "Constructor can't have get/set modifier") | |
1194 | + if (isGenerator) this$1.raise(key.start, "Constructor can't be a generator") | |
1195 | + if (isAsync) this$1.raise(key.start, "Constructor can't be an async method") | |
1196 | + method.kind = "constructor" | |
1197 | + hadConstructor = true | |
1198 | + } | |
1199 | + } | |
1200 | + this$1.parseClassMethod(classBody, method, isGenerator, isAsync) | |
1201 | + if (isGetSet) { | |
1202 | + var paramCount = method.kind === "get" ? 0 : 1 | |
1203 | + if (method.value.params.length !== paramCount) { | |
1204 | + var start = method.value.start | |
1205 | + if (method.kind === "get") | |
1206 | + this$1.raiseRecoverable(start, "getter should have no params") | |
1207 | + else | |
1208 | + this$1.raiseRecoverable(start, "setter should have exactly one param") | |
1209 | + } else { | |
1210 | + if (method.kind === "set" && method.value.params[0].type === "RestElement") | |
1211 | + this$1.raiseRecoverable(method.value.params[0].start, "Setter cannot use rest params") | |
1212 | + } | |
1213 | + } | |
1214 | + } | |
1215 | + node.body = this.finishNode(classBody, "ClassBody") | |
1216 | + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression") | |
1217 | +} | |
1218 | + | |
1219 | +pp$1.parseClassMethod = function(classBody, method, isGenerator, isAsync) { | |
1220 | + method.value = this.parseMethod(isGenerator, isAsync) | |
1221 | + classBody.body.push(this.finishNode(method, "MethodDefinition")) | |
1222 | +} | |
1223 | + | |
1224 | +pp$1.parseClassId = function(node, isStatement) { | |
1225 | + node.id = this.type === tt.name ? this.parseIdent() : isStatement ? this.unexpected() : null | |
1226 | +} | |
1227 | + | |
1228 | +pp$1.parseClassSuper = function(node) { | |
1229 | + node.superClass = this.eat(tt._extends) ? this.parseExprSubscripts() : null | |
1230 | +} | |
1231 | + | |
1232 | +// Parses module export declaration. | |
1233 | + | |
1234 | +pp$1.parseExport = function(node, exports) { | |
1235 | + var this$1 = this; | |
1236 | + | |
1237 | + this.next() | |
1238 | + // export * from '...' | |
1239 | + if (this.eat(tt.star)) { | |
1240 | + this.expectContextual("from") | |
1241 | + node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected() | |
1242 | + this.semicolon() | |
1243 | + return this.finishNode(node, "ExportAllDeclaration") | |
1244 | + } | |
1245 | + if (this.eat(tt._default)) { // export default ... | |
1246 | + this.checkExport(exports, "default", this.lastTokStart) | |
1247 | + var isAsync | |
1248 | + if (this.type === tt._function || (isAsync = this.isAsyncFunction())) { | |
1249 | + var fNode = this.startNode() | |
1250 | + this.next() | |
1251 | + if (isAsync) this.next() | |
1252 | + node.declaration = this.parseFunction(fNode, null, false, isAsync) | |
1253 | + } else if (this.type === tt._class) { | |
1254 | + var cNode = this.startNode() | |
1255 | + node.declaration = this.parseClass(cNode, null) | |
1256 | + } else { | |
1257 | + node.declaration = this.parseMaybeAssign() | |
1258 | + this.semicolon() | |
1259 | + } | |
1260 | + return this.finishNode(node, "ExportDefaultDeclaration") | |
1261 | + } | |
1262 | + // export var|const|let|function|class ... | |
1263 | + if (this.shouldParseExportStatement()) { | |
1264 | + node.declaration = this.parseStatement(true) | |
1265 | + if (node.declaration.type === "VariableDeclaration") | |
1266 | + this.checkVariableExport(exports, node.declaration.declarations) | |
1267 | + else | |
1268 | + this.checkExport(exports, node.declaration.id.name, node.declaration.id.start) | |
1269 | + node.specifiers = [] | |
1270 | + node.source = null | |
1271 | + } else { // export { x, y as z } [from '...'] | |
1272 | + node.declaration = null | |
1273 | + node.specifiers = this.parseExportSpecifiers(exports) | |
1274 | + if (this.eatContextual("from")) { | |
1275 | + node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected() | |
1276 | + } else { | |
1277 | + // check for keywords used as local names | |
1278 | + for (var i = 0; i < node.specifiers.length; i++) { | |
1279 | + if (this$1.keywords.test(node.specifiers[i].local.name) || this$1.reservedWords.test(node.specifiers[i].local.name)) { | |
1280 | + this$1.unexpected(node.specifiers[i].local.start) | |
1281 | + } | |
1282 | + } | |
1283 | + | |
1284 | + node.source = null | |
1285 | + } | |
1286 | + this.semicolon() | |
1287 | + } | |
1288 | + return this.finishNode(node, "ExportNamedDeclaration") | |
1289 | +} | |
1290 | + | |
1291 | +pp$1.checkExport = function(exports, name, pos) { | |
1292 | + if (!exports) return | |
1293 | + if (Object.prototype.hasOwnProperty.call(exports, name)) | |
1294 | + this.raiseRecoverable(pos, "Duplicate export '" + name + "'") | |
1295 | + exports[name] = true | |
1296 | +} | |
1297 | + | |
1298 | +pp$1.checkPatternExport = function(exports, pat) { | |
1299 | + var this$1 = this; | |
1300 | + | |
1301 | + var type = pat.type | |
1302 | + if (type == "Identifier") | |
1303 | + this.checkExport(exports, pat.name, pat.start) | |
1304 | + else if (type == "ObjectPattern") | |
1305 | + for (var i = 0; i < pat.properties.length; ++i) | |
1306 | + this$1.checkPatternExport(exports, pat.properties[i].value) | |
1307 | + else if (type == "ArrayPattern") | |
1308 | + for (var i$1 = 0; i$1 < pat.elements.length; ++i$1) { | |
1309 | + var elt = pat.elements[i$1] | |
1310 | + if (elt) this$1.checkPatternExport(exports, elt) | |
1311 | + } | |
1312 | + else if (type == "AssignmentPattern") | |
1313 | + this.checkPatternExport(exports, pat.left) | |
1314 | + else if (type == "ParenthesizedExpression") | |
1315 | + this.checkPatternExport(exports, pat.expression) | |
1316 | +} | |
1317 | + | |
1318 | +pp$1.checkVariableExport = function(exports, decls) { | |
1319 | + var this$1 = this; | |
1320 | + | |
1321 | + if (!exports) return | |
1322 | + for (var i = 0; i < decls.length; i++) | |
1323 | + this$1.checkPatternExport(exports, decls[i].id) | |
1324 | +} | |
1325 | + | |
1326 | +pp$1.shouldParseExportStatement = function() { | |
1327 | + return this.type.keyword === "var" | |
1328 | + || this.type.keyword === "const" | |
1329 | + || this.type.keyword === "class" | |
1330 | + || this.type.keyword === "function" | |
1331 | + || this.isLet() | |
1332 | + || this.isAsyncFunction() | |
1333 | +} | |
1334 | + | |
1335 | +// Parses a comma-separated list of module exports. | |
1336 | + | |
1337 | +pp$1.parseExportSpecifiers = function(exports) { | |
1338 | + var this$1 = this; | |
1339 | + | |
1340 | + var nodes = [], first = true | |
1341 | + // export { x, y as z } [from '...'] | |
1342 | + this.expect(tt.braceL) | |
1343 | + while (!this.eat(tt.braceR)) { | |
1344 | + if (!first) { | |
1345 | + this$1.expect(tt.comma) | |
1346 | + if (this$1.afterTrailingComma(tt.braceR)) break | |
1347 | + } else first = false | |
1348 | + | |
1349 | + var node = this$1.startNode() | |
1350 | + node.local = this$1.parseIdent(true) | |
1351 | + node.exported = this$1.eatContextual("as") ? this$1.parseIdent(true) : node.local | |
1352 | + this$1.checkExport(exports, node.exported.name, node.exported.start) | |
1353 | + nodes.push(this$1.finishNode(node, "ExportSpecifier")) | |
1354 | + } | |
1355 | + return nodes | |
1356 | +} | |
1357 | + | |
1358 | +// Parses import declaration. | |
1359 | + | |
1360 | +pp$1.parseImport = function(node) { | |
1361 | + this.next() | |
1362 | + // import '...' | |
1363 | + if (this.type === tt.string) { | |
1364 | + node.specifiers = empty | |
1365 | + node.source = this.parseExprAtom() | |
1366 | + } else { | |
1367 | + node.specifiers = this.parseImportSpecifiers() | |
1368 | + this.expectContextual("from") | |
1369 | + node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected() | |
1370 | + } | |
1371 | + this.semicolon() | |
1372 | + return this.finishNode(node, "ImportDeclaration") | |
1373 | +} | |
1374 | + | |
1375 | +// Parses a comma-separated list of module imports. | |
1376 | + | |
1377 | +pp$1.parseImportSpecifiers = function() { | |
1378 | + var this$1 = this; | |
1379 | + | |
1380 | + var nodes = [], first = true | |
1381 | + if (this.type === tt.name) { | |
1382 | + // import defaultObj, { x, y as z } from '...' | |
1383 | + var node = this.startNode() | |
1384 | + node.local = this.parseIdent() | |
1385 | + this.checkLVal(node.local, true) | |
1386 | + nodes.push(this.finishNode(node, "ImportDefaultSpecifier")) | |
1387 | + if (!this.eat(tt.comma)) return nodes | |
1388 | + } | |
1389 | + if (this.type === tt.star) { | |
1390 | + var node$1 = this.startNode() | |
1391 | + this.next() | |
1392 | + this.expectContextual("as") | |
1393 | + node$1.local = this.parseIdent() | |
1394 | + this.checkLVal(node$1.local, true) | |
1395 | + nodes.push(this.finishNode(node$1, "ImportNamespaceSpecifier")) | |
1396 | + return nodes | |
1397 | + } | |
1398 | + this.expect(tt.braceL) | |
1399 | + while (!this.eat(tt.braceR)) { | |
1400 | + if (!first) { | |
1401 | + this$1.expect(tt.comma) | |
1402 | + if (this$1.afterTrailingComma(tt.braceR)) break | |
1403 | + } else first = false | |
1404 | + | |
1405 | + var node$2 = this$1.startNode() | |
1406 | + node$2.imported = this$1.parseIdent(true) | |
1407 | + if (this$1.eatContextual("as")) { | |
1408 | + node$2.local = this$1.parseIdent() | |
1409 | + } else { | |
1410 | + node$2.local = node$2.imported | |
1411 | + if (this$1.isKeyword(node$2.local.name)) this$1.unexpected(node$2.local.start) | |
1412 | + if (this$1.reservedWordsStrict.test(node$2.local.name)) this$1.raiseRecoverable(node$2.local.start, "The keyword '" + node$2.local.name + "' is reserved") | |
1413 | + } | |
1414 | + this$1.checkLVal(node$2.local, true) | |
1415 | + nodes.push(this$1.finishNode(node$2, "ImportSpecifier")) | |
1416 | + } | |
1417 | + return nodes | |
1418 | +} | |
1419 | + | |
1420 | +var pp$2 = Parser.prototype | |
1421 | + | |
1422 | +// Convert existing expression atom to assignable pattern | |
1423 | +// if possible. | |
1424 | + | |
1425 | +pp$2.toAssignable = function(node, isBinding) { | |
1426 | + var this$1 = this; | |
1427 | + | |
1428 | + if (this.options.ecmaVersion >= 6 && node) { | |
1429 | + switch (node.type) { | |
1430 | + case "Identifier": | |
1431 | + if (this.inAsync && node.name === "await") | |
1432 | + this.raise(node.start, "Can not use 'await' as identifier inside an async function") | |
1433 | + break | |
1434 | + | |
1435 | + case "ObjectPattern": | |
1436 | + case "ArrayPattern": | |
1437 | + break | |
1438 | + | |
1439 | + case "ObjectExpression": | |
1440 | + node.type = "ObjectPattern" | |
1441 | + for (var i = 0; i < node.properties.length; i++) { | |
1442 | + var prop = node.properties[i] | |
1443 | + if (prop.kind !== "init") this$1.raise(prop.key.start, "Object pattern can't contain getter or setter") | |
1444 | + this$1.toAssignable(prop.value, isBinding) | |
1445 | + } | |
1446 | + break | |
1447 | + | |
1448 | + case "ArrayExpression": | |
1449 | + node.type = "ArrayPattern" | |
1450 | + this.toAssignableList(node.elements, isBinding) | |
1451 | + break | |
1452 | + | |
1453 | + case "AssignmentExpression": | |
1454 | + if (node.operator === "=") { | |
1455 | + node.type = "AssignmentPattern" | |
1456 | + delete node.operator | |
1457 | + this.toAssignable(node.left, isBinding) | |
1458 | + // falls through to AssignmentPattern | |
1459 | + } else { | |
1460 | + this.raise(node.left.end, "Only '=' operator can be used for specifying default value.") | |
1461 | + break | |
1462 | + } | |
1463 | + | |
1464 | + case "AssignmentPattern": | |
1465 | + break | |
1466 | + | |
1467 | + case "ParenthesizedExpression": | |
1468 | + node.expression = this.toAssignable(node.expression, isBinding) | |
1469 | + break | |
1470 | + | |
1471 | + case "MemberExpression": | |
1472 | + if (!isBinding) break | |
1473 | + | |
1474 | + default: | |
1475 | + this.raise(node.start, "Assigning to rvalue") | |
1476 | + } | |
1477 | + } | |
1478 | + return node | |
1479 | +} | |
1480 | + | |
1481 | +// Convert list of expression atoms to binding list. | |
1482 | + | |
1483 | +pp$2.toAssignableList = function(exprList, isBinding) { | |
1484 | + var this$1 = this; | |
1485 | + | |
1486 | + var end = exprList.length | |
1487 | + if (end) { | |
1488 | + var last = exprList[end - 1] | |
1489 | + if (last && last.type == "RestElement") { | |
1490 | + --end | |
1491 | + } else if (last && last.type == "SpreadElement") { | |
1492 | + last.type = "RestElement" | |
1493 | + var arg = last.argument | |
1494 | + this.toAssignable(arg, isBinding) | |
1495 | + if (arg.type !== "Identifier" && arg.type !== "MemberExpression" && arg.type !== "ArrayPattern") | |
1496 | + this.unexpected(arg.start) | |
1497 | + --end | |
1498 | + } | |
1499 | + | |
1500 | + if (isBinding && last && last.type === "RestElement" && last.argument.type !== "Identifier") | |
1501 | + this.unexpected(last.argument.start) | |
1502 | + } | |
1503 | + for (var i = 0; i < end; i++) { | |
1504 | + var elt = exprList[i] | |
1505 | + if (elt) this$1.toAssignable(elt, isBinding) | |
1506 | + } | |
1507 | + return exprList | |
1508 | +} | |
1509 | + | |
1510 | +// Parses spread element. | |
1511 | + | |
1512 | +pp$2.parseSpread = function(refDestructuringErrors) { | |
1513 | + var node = this.startNode() | |
1514 | + this.next() | |
1515 | + node.argument = this.parseMaybeAssign(false, refDestructuringErrors) | |
1516 | + return this.finishNode(node, "SpreadElement") | |
1517 | +} | |
1518 | + | |
1519 | +pp$2.parseRest = function(allowNonIdent) { | |
1520 | + var node = this.startNode() | |
1521 | + this.next() | |
1522 | + | |
1523 | + // RestElement inside of a function parameter must be an identifier | |
1524 | + if (allowNonIdent) node.argument = this.type === tt.name ? this.parseIdent() : this.unexpected() | |
1525 | + else node.argument = this.type === tt.name || this.type === tt.bracketL ? this.parseBindingAtom() : this.unexpected() | |
1526 | + | |
1527 | + return this.finishNode(node, "RestElement") | |
1528 | +} | |
1529 | + | |
1530 | +// Parses lvalue (assignable) atom. | |
1531 | + | |
1532 | +pp$2.parseBindingAtom = function() { | |
1533 | + if (this.options.ecmaVersion < 6) return this.parseIdent() | |
1534 | + switch (this.type) { | |
1535 | + case tt.name: | |
1536 | + return this.parseIdent() | |
1537 | + | |
1538 | + case tt.bracketL: | |
1539 | + var node = this.startNode() | |
1540 | + this.next() | |
1541 | + node.elements = this.parseBindingList(tt.bracketR, true, true) | |
1542 | + return this.finishNode(node, "ArrayPattern") | |
1543 | + | |
1544 | + case tt.braceL: | |
1545 | + return this.parseObj(true) | |
1546 | + | |
1547 | + default: | |
1548 | + this.unexpected() | |
1549 | + } | |
1550 | +} | |
1551 | + | |
1552 | +pp$2.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowNonIdent) { | |
1553 | + var this$1 = this; | |
1554 | + | |
1555 | + var elts = [], first = true | |
1556 | + while (!this.eat(close)) { | |
1557 | + if (first) first = false | |
1558 | + else this$1.expect(tt.comma) | |
1559 | + if (allowEmpty && this$1.type === tt.comma) { | |
1560 | + elts.push(null) | |
1561 | + } else if (allowTrailingComma && this$1.afterTrailingComma(close)) { | |
1562 | + break | |
1563 | + } else if (this$1.type === tt.ellipsis) { | |
1564 | + var rest = this$1.parseRest(allowNonIdent) | |
1565 | + this$1.parseBindingListItem(rest) | |
1566 | + elts.push(rest) | |
1567 | + if (this$1.type === tt.comma) this$1.raise(this$1.start, "Comma is not permitted after the rest element") | |
1568 | + this$1.expect(close) | |
1569 | + break | |
1570 | + } else { | |
1571 | + var elem = this$1.parseMaybeDefault(this$1.start, this$1.startLoc) | |
1572 | + this$1.parseBindingListItem(elem) | |
1573 | + elts.push(elem) | |
1574 | + } | |
1575 | + } | |
1576 | + return elts | |
1577 | +} | |
1578 | + | |
1579 | +pp$2.parseBindingListItem = function(param) { | |
1580 | + return param | |
1581 | +} | |
1582 | + | |
1583 | +// Parses assignment pattern around given atom if possible. | |
1584 | + | |
1585 | +pp$2.parseMaybeDefault = function(startPos, startLoc, left) { | |
1586 | + left = left || this.parseBindingAtom() | |
1587 | + if (this.options.ecmaVersion < 6 || !this.eat(tt.eq)) return left | |
1588 | + var node = this.startNodeAt(startPos, startLoc) | |
1589 | + node.left = left | |
1590 | + node.right = this.parseMaybeAssign() | |
1591 | + return this.finishNode(node, "AssignmentPattern") | |
1592 | +} | |
1593 | + | |
1594 | +// Verify that a node is an lval — something that can be assigned | |
1595 | +// to. | |
1596 | + | |
1597 | +pp$2.checkLVal = function(expr, isBinding, checkClashes) { | |
1598 | + var this$1 = this; | |
1599 | + | |
1600 | + switch (expr.type) { | |
1601 | + case "Identifier": | |
1602 | + if (this.strict && this.reservedWordsStrictBind.test(expr.name)) | |
1603 | + this.raiseRecoverable(expr.start, (isBinding ? "Binding " : "Assigning to ") + expr.name + " in strict mode") | |
1604 | + if (checkClashes) { | |
1605 | + if (has(checkClashes, expr.name)) | |
1606 | + this.raiseRecoverable(expr.start, "Argument name clash") | |
1607 | + checkClashes[expr.name] = true | |
1608 | + } | |
1609 | + break | |
1610 | + | |
1611 | + case "MemberExpression": | |
1612 | + if (isBinding) this.raiseRecoverable(expr.start, (isBinding ? "Binding" : "Assigning to") + " member expression") | |
1613 | + break | |
1614 | + | |
1615 | + case "ObjectPattern": | |
1616 | + for (var i = 0; i < expr.properties.length; i++) | |
1617 | + this$1.checkLVal(expr.properties[i].value, isBinding, checkClashes) | |
1618 | + break | |
1619 | + | |
1620 | + case "ArrayPattern": | |
1621 | + for (var i$1 = 0; i$1 < expr.elements.length; i$1++) { | |
1622 | + var elem = expr.elements[i$1] | |
1623 | + if (elem) this$1.checkLVal(elem, isBinding, checkClashes) | |
1624 | + } | |
1625 | + break | |
1626 | + | |
1627 | + case "AssignmentPattern": | |
1628 | + this.checkLVal(expr.left, isBinding, checkClashes) | |
1629 | + break | |
1630 | + | |
1631 | + case "RestElement": | |
1632 | + this.checkLVal(expr.argument, isBinding, checkClashes) | |
1633 | + break | |
1634 | + | |
1635 | + case "ParenthesizedExpression": | |
1636 | + this.checkLVal(expr.expression, isBinding, checkClashes) | |
1637 | + break | |
1638 | + | |
1639 | + default: | |
1640 | + this.raise(expr.start, (isBinding ? "Binding" : "Assigning to") + " rvalue") | |
1641 | + } | |
1642 | +} | |
1643 | + | |
1644 | +// A recursive descent parser operates by defining functions for all | |
1645 | +// syntactic elements, and recursively calling those, each function | |
1646 | +// advancing the input stream and returning an AST node. Precedence | |
1647 | +// of constructs (for example, the fact that `!x[1]` means `!(x[1])` | |
1648 | +// instead of `(!x)[1]` is handled by the fact that the parser | |
1649 | +// function that parses unary prefix operators is called first, and | |
1650 | +// in turn calls the function that parses `[]` subscripts — that | |
1651 | +// way, it'll receive the node for `x[1]` already parsed, and wraps | |
1652 | +// *that* in the unary operator node. | |
1653 | +// | |
1654 | +// Acorn uses an [operator precedence parser][opp] to handle binary | |
1655 | +// operator precedence, because it is much more compact than using | |
1656 | +// the technique outlined above, which uses different, nesting | |
1657 | +// functions to specify precedence, for all of the ten binary | |
1658 | +// precedence levels that JavaScript defines. | |
1659 | +// | |
1660 | +// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser | |
1661 | + | |
1662 | +var pp$3 = Parser.prototype | |
1663 | + | |
1664 | +// Check if property name clashes with already added. | |
1665 | +// Object/class getters and setters are not allowed to clash — | |
1666 | +// either with each other or with an init property — and in | |
1667 | +// strict mode, init properties are also not allowed to be repeated. | |
1668 | + | |
1669 | +pp$3.checkPropClash = function(prop, propHash) { | |
1670 | + if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand)) | |
1671 | + return | |
1672 | + var key = prop.key; | |
1673 | + var name | |
1674 | + switch (key.type) { | |
1675 | + case "Identifier": name = key.name; break | |
1676 | + case "Literal": name = String(key.value); break | |
1677 | + default: return | |
1678 | + } | |
1679 | + var kind = prop.kind; | |
1680 | + if (this.options.ecmaVersion >= 6) { | |
1681 | + if (name === "__proto__" && kind === "init") { | |
1682 | + if (propHash.proto) this.raiseRecoverable(key.start, "Redefinition of __proto__ property") | |
1683 | + propHash.proto = true | |
1684 | + } | |
1685 | + return | |
1686 | + } | |
1687 | + name = "$" + name | |
1688 | + var other = propHash[name] | |
1689 | + if (other) { | |
1690 | + var isGetSet = kind !== "init" | |
1691 | + if ((this.strict || isGetSet) && other[kind] || !(isGetSet ^ other.init)) | |
1692 | + this.raiseRecoverable(key.start, "Redefinition of property") | |
1693 | + } else { | |
1694 | + other = propHash[name] = { | |
1695 | + init: false, | |
1696 | + get: false, | |
1697 | + set: false | |
1698 | + } | |
1699 | + } | |
1700 | + other[kind] = true | |
1701 | +} | |
1702 | + | |
1703 | +// ### Expression parsing | |
1704 | + | |
1705 | +// These nest, from the most general expression type at the top to | |
1706 | +// 'atomic', nondivisible expression types at the bottom. Most of | |
1707 | +// the functions will simply let the function(s) below them parse, | |
1708 | +// and, *if* the syntactic construct they handle is present, wrap | |
1709 | +// the AST node that the inner parser gave them in another node. | |
1710 | + | |
1711 | +// Parse a full expression. The optional arguments are used to | |
1712 | +// forbid the `in` operator (in for loops initalization expressions) | |
1713 | +// and provide reference for storing '=' operator inside shorthand | |
1714 | +// property assignment in contexts where both object expression | |
1715 | +// and object pattern might appear (so it's possible to raise | |
1716 | +// delayed syntax error at correct position). | |
1717 | + | |
1718 | +pp$3.parseExpression = function(noIn, refDestructuringErrors) { | |
1719 | + var this$1 = this; | |
1720 | + | |
1721 | + var startPos = this.start, startLoc = this.startLoc | |
1722 | + var expr = this.parseMaybeAssign(noIn, refDestructuringErrors) | |
1723 | + if (this.type === tt.comma) { | |
1724 | + var node = this.startNodeAt(startPos, startLoc) | |
1725 | + node.expressions = [expr] | |
1726 | + while (this.eat(tt.comma)) node.expressions.push(this$1.parseMaybeAssign(noIn, refDestructuringErrors)) | |
1727 | + return this.finishNode(node, "SequenceExpression") | |
1728 | + } | |
1729 | + return expr | |
1730 | +} | |
1731 | + | |
1732 | +// Parse an assignment expression. This includes applications of | |
1733 | +// operators like `+=`. | |
1734 | + | |
1735 | +pp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) { | |
1736 | + if (this.inGenerator && this.isContextual("yield")) return this.parseYield() | |
1737 | + | |
1738 | + var ownDestructuringErrors = false, oldParenAssign = -1 | |
1739 | + if (refDestructuringErrors) { | |
1740 | + oldParenAssign = refDestructuringErrors.parenthesizedAssign | |
1741 | + refDestructuringErrors.parenthesizedAssign = -1 | |
1742 | + } else { | |
1743 | + refDestructuringErrors = new DestructuringErrors | |
1744 | + ownDestructuringErrors = true | |
1745 | + } | |
1746 | + | |
1747 | + var startPos = this.start, startLoc = this.startLoc | |
1748 | + if (this.type == tt.parenL || this.type == tt.name) | |
1749 | + this.potentialArrowAt = this.start | |
1750 | + var left = this.parseMaybeConditional(noIn, refDestructuringErrors) | |
1751 | + if (afterLeftParse) left = afterLeftParse.call(this, left, startPos, startLoc) | |
1752 | + if (this.type.isAssign) { | |
1753 | + this.checkPatternErrors(refDestructuringErrors, true) | |
1754 | + if (!ownDestructuringErrors) DestructuringErrors.call(refDestructuringErrors) | |
1755 | + var node = this.startNodeAt(startPos, startLoc) | |
1756 | + node.operator = this.value | |
1757 | + node.left = this.type === tt.eq ? this.toAssignable(left) : left | |
1758 | + refDestructuringErrors.shorthandAssign = -1 // reset because shorthand default was used correctly | |
1759 | + this.checkLVal(left) | |
1760 | + this.next() | |
1761 | + node.right = this.parseMaybeAssign(noIn) | |
1762 | + return this.finishNode(node, "AssignmentExpression") | |
1763 | + } else { | |
1764 | + if (ownDestructuringErrors) this.checkExpressionErrors(refDestructuringErrors, true) | |
1765 | + } | |
1766 | + if (oldParenAssign > -1) refDestructuringErrors.parenthesizedAssign = oldParenAssign | |
1767 | + return left | |
1768 | +} | |
1769 | + | |
1770 | +// Parse a ternary conditional (`?:`) operator. | |
1771 | + | |
1772 | +pp$3.parseMaybeConditional = function(noIn, refDestructuringErrors) { | |
1773 | + var startPos = this.start, startLoc = this.startLoc | |
1774 | + var expr = this.parseExprOps(noIn, refDestructuringErrors) | |
1775 | + if (this.checkExpressionErrors(refDestructuringErrors)) return expr | |
1776 | + if (this.eat(tt.question)) { | |
1777 | + var node = this.startNodeAt(startPos, startLoc) | |
1778 | + node.test = expr | |
1779 | + node.consequent = this.parseMaybeAssign() | |
1780 | + this.expect(tt.colon) | |
1781 | + node.alternate = this.parseMaybeAssign(noIn) | |
1782 | + return this.finishNode(node, "ConditionalExpression") | |
1783 | + } | |
1784 | + return expr | |
1785 | +} | |
1786 | + | |
1787 | +// Start the precedence parser. | |
1788 | + | |
1789 | +pp$3.parseExprOps = function(noIn, refDestructuringErrors) { | |
1790 | + var startPos = this.start, startLoc = this.startLoc | |
1791 | + var expr = this.parseMaybeUnary(refDestructuringErrors, false) | |
1792 | + if (this.checkExpressionErrors(refDestructuringErrors)) return expr | |
1793 | + return this.parseExprOp(expr, startPos, startLoc, -1, noIn) | |
1794 | +} | |
1795 | + | |
1796 | +// Parse binary operators with the operator precedence parsing | |
1797 | +// algorithm. `left` is the left-hand side of the operator. | |
1798 | +// `minPrec` provides context that allows the function to stop and | |
1799 | +// defer further parser to one of its callers when it encounters an | |
1800 | +// operator that has a lower precedence than the set it is parsing. | |
1801 | + | |
1802 | +pp$3.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, noIn) { | |
1803 | + var prec = this.type.binop | |
1804 | + if (prec != null && (!noIn || this.type !== tt._in)) { | |
1805 | + if (prec > minPrec) { | |
1806 | + var logical = this.type === tt.logicalOR || this.type === tt.logicalAND | |
1807 | + var op = this.value | |
1808 | + this.next() | |
1809 | + var startPos = this.start, startLoc = this.startLoc | |
1810 | + var right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, noIn) | |
1811 | + var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical) | |
1812 | + return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn) | |
1813 | + } | |
1814 | + } | |
1815 | + return left | |
1816 | +} | |
1817 | + | |
1818 | +pp$3.buildBinary = function(startPos, startLoc, left, right, op, logical) { | |
1819 | + var node = this.startNodeAt(startPos, startLoc) | |
1820 | + node.left = left | |
1821 | + node.operator = op | |
1822 | + node.right = right | |
1823 | + return this.finishNode(node, logical ? "LogicalExpression" : "BinaryExpression") | |
1824 | +} | |
1825 | + | |
1826 | +// Parse unary operators, both prefix and postfix. | |
1827 | + | |
1828 | +pp$3.parseMaybeUnary = function(refDestructuringErrors, sawUnary) { | |
1829 | + var this$1 = this; | |
1830 | + | |
1831 | + var startPos = this.start, startLoc = this.startLoc, expr | |
1832 | + if (this.inAsync && this.isContextual("await")) { | |
1833 | + expr = this.parseAwait(refDestructuringErrors) | |
1834 | + sawUnary = true | |
1835 | + } else if (this.type.prefix) { | |
1836 | + var node = this.startNode(), update = this.type === tt.incDec | |
1837 | + node.operator = this.value | |
1838 | + node.prefix = true | |
1839 | + this.next() | |
1840 | + node.argument = this.parseMaybeUnary(null, true) | |
1841 | + this.checkExpressionErrors(refDestructuringErrors, true) | |
1842 | + if (update) this.checkLVal(node.argument) | |
1843 | + else if (this.strict && node.operator === "delete" && | |
1844 | + node.argument.type === "Identifier") | |
1845 | + this.raiseRecoverable(node.start, "Deleting local variable in strict mode") | |
1846 | + else sawUnary = true | |
1847 | + expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression") | |
1848 | + } else { | |
1849 | + expr = this.parseExprSubscripts(refDestructuringErrors) | |
1850 | + if (this.checkExpressionErrors(refDestructuringErrors)) return expr | |
1851 | + while (this.type.postfix && !this.canInsertSemicolon()) { | |
1852 | + var node$1 = this$1.startNodeAt(startPos, startLoc) | |
1853 | + node$1.operator = this$1.value | |
1854 | + node$1.prefix = false | |
1855 | + node$1.argument = expr | |
1856 | + this$1.checkLVal(expr) | |
1857 | + this$1.next() | |
1858 | + expr = this$1.finishNode(node$1, "UpdateExpression") | |
1859 | + } | |
1860 | + } | |
1861 | + | |
1862 | + if (!sawUnary && this.eat(tt.starstar)) | |
1863 | + return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), "**", false) | |
1864 | + else | |
1865 | + return expr | |
1866 | +} | |
1867 | + | |
1868 | +// Parse call, dot, and `[]`-subscript expressions. | |
1869 | + | |
1870 | +pp$3.parseExprSubscripts = function(refDestructuringErrors) { | |
1871 | + var startPos = this.start, startLoc = this.startLoc | |
1872 | + var expr = this.parseExprAtom(refDestructuringErrors) | |
1873 | + var skipArrowSubscripts = expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")" | |
1874 | + if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) return expr | |
1875 | + var result = this.parseSubscripts(expr, startPos, startLoc) | |
1876 | + if (refDestructuringErrors && result.type === "MemberExpression") { | |
1877 | + if (refDestructuringErrors.parenthesizedAssign >= result.start) refDestructuringErrors.parenthesizedAssign = -1 | |
1878 | + if (refDestructuringErrors.parenthesizedBind >= result.start) refDestructuringErrors.parenthesizedBind = -1 | |
1879 | + } | |
1880 | + return result | |
1881 | +} | |
1882 | + | |
1883 | +pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) { | |
1884 | + var this$1 = this; | |
1885 | + | |
1886 | + var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && | |
1887 | + this.lastTokEnd == base.end && !this.canInsertSemicolon() | |
1888 | + for (var computed;;) { | |
1889 | + if ((computed = this$1.eat(tt.bracketL)) || this$1.eat(tt.dot)) { | |
1890 | + var node = this$1.startNodeAt(startPos, startLoc) | |
1891 | + node.object = base | |
1892 | + node.property = computed ? this$1.parseExpression() : this$1.parseIdent(true) | |
1893 | + node.computed = !!computed | |
1894 | + if (computed) this$1.expect(tt.bracketR) | |
1895 | + base = this$1.finishNode(node, "MemberExpression") | |
1896 | + } else if (!noCalls && this$1.eat(tt.parenL)) { | |
1897 | + var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this$1.yieldPos, oldAwaitPos = this$1.awaitPos | |
1898 | + this$1.yieldPos = 0 | |
1899 | + this$1.awaitPos = 0 | |
1900 | + var exprList = this$1.parseExprList(tt.parenR, this$1.options.ecmaVersion >= 8, false, refDestructuringErrors) | |
1901 | + if (maybeAsyncArrow && !this$1.canInsertSemicolon() && this$1.eat(tt.arrow)) { | |
1902 | + this$1.checkPatternErrors(refDestructuringErrors, false) | |
1903 | + this$1.checkYieldAwaitInDefaultParams() | |
1904 | + this$1.yieldPos = oldYieldPos | |
1905 | + this$1.awaitPos = oldAwaitPos | |
1906 | + return this$1.parseArrowExpression(this$1.startNodeAt(startPos, startLoc), exprList, true) | |
1907 | + } | |
1908 | + this$1.checkExpressionErrors(refDestructuringErrors, true) | |
1909 | + this$1.yieldPos = oldYieldPos || this$1.yieldPos | |
1910 | + this$1.awaitPos = oldAwaitPos || this$1.awaitPos | |
1911 | + var node$1 = this$1.startNodeAt(startPos, startLoc) | |
1912 | + node$1.callee = base | |
1913 | + node$1.arguments = exprList | |
1914 | + base = this$1.finishNode(node$1, "CallExpression") | |
1915 | + } else if (this$1.type === tt.backQuote) { | |
1916 | + var node$2 = this$1.startNodeAt(startPos, startLoc) | |
1917 | + node$2.tag = base | |
1918 | + node$2.quasi = this$1.parseTemplate() | |
1919 | + base = this$1.finishNode(node$2, "TaggedTemplateExpression") | |
1920 | + } else { | |
1921 | + return base | |
1922 | + } | |
1923 | + } | |
1924 | +} | |
1925 | + | |
1926 | +// Parse an atomic expression — either a single token that is an | |
1927 | +// expression, an expression started by a keyword like `function` or | |
1928 | +// `new`, or an expression wrapped in punctuation like `()`, `[]`, | |
1929 | +// or `{}`. | |
1930 | + | |
1931 | +pp$3.parseExprAtom = function(refDestructuringErrors) { | |
1932 | + var node, canBeArrow = this.potentialArrowAt == this.start | |
1933 | + switch (this.type) { | |
1934 | + case tt._super: | |
1935 | + if (!this.inFunction) | |
1936 | + this.raise(this.start, "'super' outside of function or class") | |
1937 | + | |
1938 | + case tt._this: | |
1939 | + var type = this.type === tt._this ? "ThisExpression" : "Super" | |
1940 | + node = this.startNode() | |
1941 | + this.next() | |
1942 | + return this.finishNode(node, type) | |
1943 | + | |
1944 | + case tt.name: | |
1945 | + var startPos = this.start, startLoc = this.startLoc | |
1946 | + var id = this.parseIdent(this.type !== tt.name) | |
1947 | + if (this.options.ecmaVersion >= 8 && id.name === "async" && !this.canInsertSemicolon() && this.eat(tt._function)) | |
1948 | + return this.parseFunction(this.startNodeAt(startPos, startLoc), false, false, true) | |
1949 | + if (canBeArrow && !this.canInsertSemicolon()) { | |
1950 | + if (this.eat(tt.arrow)) | |
1951 | + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false) | |
1952 | + if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === tt.name) { | |
1953 | + id = this.parseIdent() | |
1954 | + if (this.canInsertSemicolon() || !this.eat(tt.arrow)) | |
1955 | + this.unexpected() | |
1956 | + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true) | |
1957 | + } | |
1958 | + } | |
1959 | + return id | |
1960 | + | |
1961 | + case tt.regexp: | |
1962 | + var value = this.value | |
1963 | + node = this.parseLiteral(value.value) | |
1964 | + node.regex = {pattern: value.pattern, flags: value.flags} | |
1965 | + return node | |
1966 | + | |
1967 | + case tt.num: case tt.string: | |
1968 | + return this.parseLiteral(this.value) | |
1969 | + | |
1970 | + case tt._null: case tt._true: case tt._false: | |
1971 | + node = this.startNode() | |
1972 | + node.value = this.type === tt._null ? null : this.type === tt._true | |
1973 | + node.raw = this.type.keyword | |
1974 | + this.next() | |
1975 | + return this.finishNode(node, "Literal") | |
1976 | + | |
1977 | + case tt.parenL: | |
1978 | + var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow) | |
1979 | + if (refDestructuringErrors) { | |
1980 | + if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr)) | |
1981 | + refDestructuringErrors.parenthesizedAssign = start | |
1982 | + if (refDestructuringErrors.parenthesizedBind < 0) | |
1983 | + refDestructuringErrors.parenthesizedBind = start | |
1984 | + } | |
1985 | + return expr | |
1986 | + | |
1987 | + case tt.bracketL: | |
1988 | + node = this.startNode() | |
1989 | + this.next() | |
1990 | + node.elements = this.parseExprList(tt.bracketR, true, true, refDestructuringErrors) | |
1991 | + return this.finishNode(node, "ArrayExpression") | |
1992 | + | |
1993 | + case tt.braceL: | |
1994 | + return this.parseObj(false, refDestructuringErrors) | |
1995 | + | |
1996 | + case tt._function: | |
1997 | + node = this.startNode() | |
1998 | + this.next() | |
1999 | + return this.parseFunction(node, false) | |
2000 | + | |
2001 | + case tt._class: | |
2002 | + return this.parseClass(this.startNode(), false) | |
2003 | + | |
2004 | + case tt._new: | |
2005 | + return this.parseNew() | |
2006 | + | |
2007 | + case tt.backQuote: | |
2008 | + return this.parseTemplate() | |
2009 | + | |
2010 | + default: | |
2011 | + this.unexpected() | |
2012 | + } | |
2013 | +} | |
2014 | + | |
2015 | +pp$3.parseLiteral = function(value) { | |
2016 | + var node = this.startNode() | |
2017 | + node.value = value | |
2018 | + node.raw = this.input.slice(this.start, this.end) | |
2019 | + this.next() | |
2020 | + return this.finishNode(node, "Literal") | |
2021 | +} | |
2022 | + | |
2023 | +pp$3.parseParenExpression = function() { | |
2024 | + this.expect(tt.parenL) | |
2025 | + var val = this.parseExpression() | |
2026 | + this.expect(tt.parenR) | |
2027 | + return val | |
2028 | +} | |
2029 | + | |
2030 | +pp$3.parseParenAndDistinguishExpression = function(canBeArrow) { | |
2031 | + var this$1 = this; | |
2032 | + | |
2033 | + var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8 | |
2034 | + if (this.options.ecmaVersion >= 6) { | |
2035 | + this.next() | |
2036 | + | |
2037 | + var innerStartPos = this.start, innerStartLoc = this.startLoc | |
2038 | + var exprList = [], first = true, lastIsComma = false | |
2039 | + var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart, innerParenStart | |
2040 | + this.yieldPos = 0 | |
2041 | + this.awaitPos = 0 | |
2042 | + while (this.type !== tt.parenR) { | |
2043 | + first ? first = false : this$1.expect(tt.comma) | |
2044 | + if (allowTrailingComma && this$1.afterTrailingComma(tt.parenR, true)) { | |
2045 | + lastIsComma = true | |
2046 | + break | |
2047 | + } else if (this$1.type === tt.ellipsis) { | |
2048 | + spreadStart = this$1.start | |
2049 | + exprList.push(this$1.parseParenItem(this$1.parseRest())) | |
2050 | + if (this$1.type === tt.comma) this$1.raise(this$1.start, "Comma is not permitted after the rest element") | |
2051 | + break | |
2052 | + } else { | |
2053 | + if (this$1.type === tt.parenL && !innerParenStart) { | |
2054 | + innerParenStart = this$1.start | |
2055 | + } | |
2056 | + exprList.push(this$1.parseMaybeAssign(false, refDestructuringErrors, this$1.parseParenItem)) | |
2057 | + } | |
2058 | + } | |
2059 | + var innerEndPos = this.start, innerEndLoc = this.startLoc | |
2060 | + this.expect(tt.parenR) | |
2061 | + | |
2062 | + if (canBeArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) { | |
2063 | + this.checkPatternErrors(refDestructuringErrors, false) | |
2064 | + this.checkYieldAwaitInDefaultParams() | |
2065 | + if (innerParenStart) this.unexpected(innerParenStart) | |
2066 | + this.yieldPos = oldYieldPos | |
2067 | + this.awaitPos = oldAwaitPos | |
2068 | + return this.parseParenArrowList(startPos, startLoc, exprList) | |
2069 | + } | |
2070 | + | |
2071 | + if (!exprList.length || lastIsComma) this.unexpected(this.lastTokStart) | |
2072 | + if (spreadStart) this.unexpected(spreadStart) | |
2073 | + this.checkExpressionErrors(refDestructuringErrors, true) | |
2074 | + this.yieldPos = oldYieldPos || this.yieldPos | |
2075 | + this.awaitPos = oldAwaitPos || this.awaitPos | |
2076 | + | |
2077 | + if (exprList.length > 1) { | |
2078 | + val = this.startNodeAt(innerStartPos, innerStartLoc) | |
2079 | + val.expressions = exprList | |
2080 | + this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc) | |
2081 | + } else { | |
2082 | + val = exprList[0] | |
2083 | + } | |
2084 | + } else { | |
2085 | + val = this.parseParenExpression() | |
2086 | + } | |
2087 | + | |
2088 | + if (this.options.preserveParens) { | |
2089 | + var par = this.startNodeAt(startPos, startLoc) | |
2090 | + par.expression = val | |
2091 | + return this.finishNode(par, "ParenthesizedExpression") | |
2092 | + } else { | |
2093 | + return val | |
2094 | + } | |
2095 | +} | |
2096 | + | |
2097 | +pp$3.parseParenItem = function(item) { | |
2098 | + return item | |
2099 | +} | |
2100 | + | |
2101 | +pp$3.parseParenArrowList = function(startPos, startLoc, exprList) { | |
2102 | + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList) | |
2103 | +} | |
2104 | + | |
2105 | +// New's precedence is slightly tricky. It must allow its argument to | |
2106 | +// be a `[]` or dot subscript expression, but not a call — at least, | |
2107 | +// not without wrapping it in parentheses. Thus, it uses the noCalls | |
2108 | +// argument to parseSubscripts to prevent it from consuming the | |
2109 | +// argument list. | |
2110 | + | |
2111 | +var empty$1 = [] | |
2112 | + | |
2113 | +pp$3.parseNew = function() { | |
2114 | + var node = this.startNode() | |
2115 | + var meta = this.parseIdent(true) | |
2116 | + if (this.options.ecmaVersion >= 6 && this.eat(tt.dot)) { | |
2117 | + node.meta = meta | |
2118 | + node.property = this.parseIdent(true) | |
2119 | + if (node.property.name !== "target") | |
2120 | + this.raiseRecoverable(node.property.start, "The only valid meta property for new is new.target") | |
2121 | + if (!this.inFunction) | |
2122 | + this.raiseRecoverable(node.start, "new.target can only be used in functions") | |
2123 | + return this.finishNode(node, "MetaProperty") | |
2124 | + } | |
2125 | + var startPos = this.start, startLoc = this.startLoc | |
2126 | + node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true) | |
2127 | + if (this.eat(tt.parenL)) node.arguments = this.parseExprList(tt.parenR, this.options.ecmaVersion >= 8, false) | |
2128 | + else node.arguments = empty$1 | |
2129 | + return this.finishNode(node, "NewExpression") | |
2130 | +} | |
2131 | + | |
2132 | +// Parse template expression. | |
2133 | + | |
2134 | +pp$3.parseTemplateElement = function() { | |
2135 | + var elem = this.startNode() | |
2136 | + elem.value = { | |
2137 | + raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, '\n'), | |
2138 | + cooked: this.value | |
2139 | + } | |
2140 | + this.next() | |
2141 | + elem.tail = this.type === tt.backQuote | |
2142 | + return this.finishNode(elem, "TemplateElement") | |
2143 | +} | |
2144 | + | |
2145 | +pp$3.parseTemplate = function() { | |
2146 | + var this$1 = this; | |
2147 | + | |
2148 | + var node = this.startNode() | |
2149 | + this.next() | |
2150 | + node.expressions = [] | |
2151 | + var curElt = this.parseTemplateElement() | |
2152 | + node.quasis = [curElt] | |
2153 | + while (!curElt.tail) { | |
2154 | + this$1.expect(tt.dollarBraceL) | |
2155 | + node.expressions.push(this$1.parseExpression()) | |
2156 | + this$1.expect(tt.braceR) | |
2157 | + node.quasis.push(curElt = this$1.parseTemplateElement()) | |
2158 | + } | |
2159 | + this.next() | |
2160 | + return this.finishNode(node, "TemplateLiteral") | |
2161 | +} | |
2162 | + | |
2163 | +// Parse an object literal or binding pattern. | |
2164 | + | |
2165 | +pp$3.parseObj = function(isPattern, refDestructuringErrors) { | |
2166 | + var this$1 = this; | |
2167 | + | |
2168 | + var node = this.startNode(), first = true, propHash = {} | |
2169 | + node.properties = [] | |
2170 | + this.next() | |
2171 | + while (!this.eat(tt.braceR)) { | |
2172 | + if (!first) { | |
2173 | + this$1.expect(tt.comma) | |
2174 | + if (this$1.afterTrailingComma(tt.braceR)) break | |
2175 | + } else first = false | |
2176 | + | |
2177 | + var prop = this$1.startNode(), isGenerator, isAsync, startPos, startLoc | |
2178 | + if (this$1.options.ecmaVersion >= 6) { | |
2179 | + prop.method = false | |
2180 | + prop.shorthand = false | |
2181 | + if (isPattern || refDestructuringErrors) { | |
2182 | + startPos = this$1.start | |
2183 | + startLoc = this$1.startLoc | |
2184 | + } | |
2185 | + if (!isPattern) | |
2186 | + isGenerator = this$1.eat(tt.star) | |
2187 | + } | |
2188 | + this$1.parsePropertyName(prop) | |
2189 | + if (!isPattern && this$1.options.ecmaVersion >= 8 && !isGenerator && !prop.computed && | |
2190 | + prop.key.type === "Identifier" && prop.key.name === "async" && this$1.type !== tt.parenL && | |
2191 | + this$1.type !== tt.colon && !this$1.canInsertSemicolon()) { | |
2192 | + isAsync = true | |
2193 | + this$1.parsePropertyName(prop, refDestructuringErrors) | |
2194 | + } else { | |
2195 | + isAsync = false | |
2196 | + } | |
2197 | + this$1.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors) | |
2198 | + this$1.checkPropClash(prop, propHash) | |
2199 | + node.properties.push(this$1.finishNode(prop, "Property")) | |
2200 | + } | |
2201 | + return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression") | |
2202 | +} | |
2203 | + | |
2204 | +pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors) { | |
2205 | + if ((isGenerator || isAsync) && this.type === tt.colon) | |
2206 | + this.unexpected() | |
2207 | + | |
2208 | + if (this.eat(tt.colon)) { | |
2209 | + prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors) | |
2210 | + prop.kind = "init" | |
2211 | + } else if (this.options.ecmaVersion >= 6 && this.type === tt.parenL) { | |
2212 | + if (isPattern) this.unexpected() | |
2213 | + prop.kind = "init" | |
2214 | + prop.method = true | |
2215 | + prop.value = this.parseMethod(isGenerator, isAsync) | |
2216 | + } else if (this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && | |
2217 | + (prop.key.name === "get" || prop.key.name === "set") && | |
2218 | + (this.type != tt.comma && this.type != tt.braceR)) { | |
2219 | + if (isGenerator || isAsync || isPattern) this.unexpected() | |
2220 | + prop.kind = prop.key.name | |
2221 | + this.parsePropertyName(prop) | |
2222 | + prop.value = this.parseMethod(false) | |
2223 | + var paramCount = prop.kind === "get" ? 0 : 1 | |
2224 | + if (prop.value.params.length !== paramCount) { | |
2225 | + var start = prop.value.start | |
2226 | + if (prop.kind === "get") | |
2227 | + this.raiseRecoverable(start, "getter should have no params") | |
2228 | + else | |
2229 | + this.raiseRecoverable(start, "setter should have exactly one param") | |
2230 | + } else { | |
2231 | + if (prop.kind === "set" && prop.value.params[0].type === "RestElement") | |
2232 | + this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params") | |
2233 | + } | |
2234 | + } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier") { | |
2235 | + if (this.keywords.test(prop.key.name) || | |
2236 | + (this.strict ? this.reservedWordsStrict : this.reservedWords).test(prop.key.name) || | |
2237 | + (this.inGenerator && prop.key.name == "yield") || | |
2238 | + (this.inAsync && prop.key.name == "await")) | |
2239 | + this.raiseRecoverable(prop.key.start, "'" + prop.key.name + "' can not be used as shorthand property") | |
2240 | + prop.kind = "init" | |
2241 | + if (isPattern) { | |
2242 | + prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key) | |
2243 | + } else if (this.type === tt.eq && refDestructuringErrors) { | |
2244 | + if (refDestructuringErrors.shorthandAssign < 0) | |
2245 | + refDestructuringErrors.shorthandAssign = this.start | |
2246 | + prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key) | |
2247 | + } else { | |
2248 | + prop.value = prop.key | |
2249 | + } | |
2250 | + prop.shorthand = true | |
2251 | + } else this.unexpected() | |
2252 | +} | |
2253 | + | |
2254 | +pp$3.parsePropertyName = function(prop) { | |
2255 | + if (this.options.ecmaVersion >= 6) { | |
2256 | + if (this.eat(tt.bracketL)) { | |
2257 | + prop.computed = true | |
2258 | + prop.key = this.parseMaybeAssign() | |
2259 | + this.expect(tt.bracketR) | |
2260 | + return prop.key | |
2261 | + } else { | |
2262 | + prop.computed = false | |
2263 | + } | |
2264 | + } | |
2265 | + return prop.key = this.type === tt.num || this.type === tt.string ? this.parseExprAtom() : this.parseIdent(true) | |
2266 | +} | |
2267 | + | |
2268 | +// Initialize empty function node. | |
2269 | + | |
2270 | +pp$3.initFunction = function(node) { | |
2271 | + node.id = null | |
2272 | + if (this.options.ecmaVersion >= 6) { | |
2273 | + node.generator = false | |
2274 | + node.expression = false | |
2275 | + } | |
2276 | + if (this.options.ecmaVersion >= 8) | |
2277 | + node.async = false | |
2278 | +} | |
2279 | + | |
2280 | +// Parse object or class method. | |
2281 | + | |
2282 | +pp$3.parseMethod = function(isGenerator, isAsync) { | |
2283 | + var node = this.startNode(), oldInGen = this.inGenerator, oldInAsync = this.inAsync, | |
2284 | + oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction | |
2285 | + | |
2286 | + this.initFunction(node) | |
2287 | + if (this.options.ecmaVersion >= 6) | |
2288 | + node.generator = isGenerator | |
2289 | + if (this.options.ecmaVersion >= 8) | |
2290 | + node.async = !!isAsync | |
2291 | + | |
2292 | + this.inGenerator = node.generator | |
2293 | + this.inAsync = node.async | |
2294 | + this.yieldPos = 0 | |
2295 | + this.awaitPos = 0 | |
2296 | + this.inFunction = true | |
2297 | + | |
2298 | + this.expect(tt.parenL) | |
2299 | + node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8) | |
2300 | + this.checkYieldAwaitInDefaultParams() | |
2301 | + this.parseFunctionBody(node, false) | |
2302 | + | |
2303 | + this.inGenerator = oldInGen | |
2304 | + this.inAsync = oldInAsync | |
2305 | + this.yieldPos = oldYieldPos | |
2306 | + this.awaitPos = oldAwaitPos | |
2307 | + this.inFunction = oldInFunc | |
2308 | + return this.finishNode(node, "FunctionExpression") | |
2309 | +} | |
2310 | + | |
2311 | +// Parse arrow function expression with given parameters. | |
2312 | + | |
2313 | +pp$3.parseArrowExpression = function(node, params, isAsync) { | |
2314 | + var oldInGen = this.inGenerator, oldInAsync = this.inAsync, | |
2315 | + oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction | |
2316 | + | |
2317 | + this.initFunction(node) | |
2318 | + if (this.options.ecmaVersion >= 8) | |
2319 | + node.async = !!isAsync | |
2320 | + | |
2321 | + this.inGenerator = false | |
2322 | + this.inAsync = node.async | |
2323 | + this.yieldPos = 0 | |
2324 | + this.awaitPos = 0 | |
2325 | + this.inFunction = true | |
2326 | + | |
2327 | + node.params = this.toAssignableList(params, true) | |
2328 | + this.parseFunctionBody(node, true) | |
2329 | + | |
2330 | + this.inGenerator = oldInGen | |
2331 | + this.inAsync = oldInAsync | |
2332 | + this.yieldPos = oldYieldPos | |
2333 | + this.awaitPos = oldAwaitPos | |
2334 | + this.inFunction = oldInFunc | |
2335 | + return this.finishNode(node, "ArrowFunctionExpression") | |
2336 | +} | |
2337 | + | |
2338 | +// Parse function body and check parameters. | |
2339 | + | |
2340 | +pp$3.parseFunctionBody = function(node, isArrowFunction) { | |
2341 | + var isExpression = isArrowFunction && this.type !== tt.braceL | |
2342 | + var oldStrict = this.strict, useStrict = false | |
2343 | + | |
2344 | + if (isExpression) { | |
2345 | + node.body = this.parseMaybeAssign() | |
2346 | + node.expression = true | |
2347 | + } else { | |
2348 | + var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params) | |
2349 | + if (!oldStrict || nonSimple) { | |
2350 | + useStrict = this.strictDirective(this.end) | |
2351 | + // If this is a strict mode function, verify that argument names | |
2352 | + // are not repeated, and it does not try to bind the words `eval` | |
2353 | + // or `arguments`. | |
2354 | + if (useStrict && nonSimple) | |
2355 | + this.raiseRecoverable(node.start, "Illegal 'use strict' directive in function with non-simple parameter list") | |
2356 | + } | |
2357 | + // Start a new scope with regard to labels and the `inFunction` | |
2358 | + // flag (restore them to their old value afterwards). | |
2359 | + var oldLabels = this.labels | |
2360 | + this.labels = [] | |
2361 | + if (useStrict) this.strict = true | |
2362 | + node.body = this.parseBlock(true) | |
2363 | + node.expression = false | |
2364 | + this.labels = oldLabels | |
2365 | + } | |
2366 | + | |
2367 | + if (oldStrict || useStrict) { | |
2368 | + this.strict = true | |
2369 | + if (node.id) | |
2370 | + this.checkLVal(node.id, true) | |
2371 | + this.checkParams(node) | |
2372 | + this.strict = oldStrict | |
2373 | + } else if (isArrowFunction || !this.isSimpleParamList(node.params)) { | |
2374 | + this.checkParams(node) | |
2375 | + } | |
2376 | +} | |
2377 | + | |
2378 | +pp$3.isSimpleParamList = function(params) { | |
2379 | + for (var i = 0; i < params.length; i++) | |
2380 | + if (params[i].type !== "Identifier") return false | |
2381 | + return true | |
2382 | +} | |
2383 | + | |
2384 | +// Checks function params for various disallowed patterns such as using "eval" | |
2385 | +// or "arguments" and duplicate parameters. | |
2386 | + | |
2387 | +pp$3.checkParams = function(node) { | |
2388 | + var this$1 = this; | |
2389 | + | |
2390 | + var nameHash = {} | |
2391 | + for (var i = 0; i < node.params.length; i++) this$1.checkLVal(node.params[i], true, nameHash) | |
2392 | +} | |
2393 | + | |
2394 | +// Parses a comma-separated list of expressions, and returns them as | |
2395 | +// an array. `close` is the token type that ends the list, and | |
2396 | +// `allowEmpty` can be turned on to allow subsequent commas with | |
2397 | +// nothing in between them to be parsed as `null` (which is needed | |
2398 | +// for array literals). | |
2399 | + | |
2400 | +pp$3.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) { | |
2401 | + var this$1 = this; | |
2402 | + | |
2403 | + var elts = [], first = true | |
2404 | + while (!this.eat(close)) { | |
2405 | + if (!first) { | |
2406 | + this$1.expect(tt.comma) | |
2407 | + if (allowTrailingComma && this$1.afterTrailingComma(close)) break | |
2408 | + } else first = false | |
2409 | + | |
2410 | + var elt | |
2411 | + if (allowEmpty && this$1.type === tt.comma) | |
2412 | + elt = null | |
2413 | + else if (this$1.type === tt.ellipsis) { | |
2414 | + elt = this$1.parseSpread(refDestructuringErrors) | |
2415 | + if (refDestructuringErrors && this$1.type === tt.comma && refDestructuringErrors.trailingComma < 0) | |
2416 | + refDestructuringErrors.trailingComma = this$1.start | |
2417 | + } else { | |
2418 | + elt = this$1.parseMaybeAssign(false, refDestructuringErrors) | |
2419 | + } | |
2420 | + elts.push(elt) | |
2421 | + } | |
2422 | + return elts | |
2423 | +} | |
2424 | + | |
2425 | +// Parse the next token as an identifier. If `liberal` is true (used | |
2426 | +// when parsing properties), it will also convert keywords into | |
2427 | +// identifiers. | |
2428 | + | |
2429 | +pp$3.parseIdent = function(liberal) { | |
2430 | + var node = this.startNode() | |
2431 | + if (liberal && this.options.allowReserved == "never") liberal = false | |
2432 | + if (this.type === tt.name) { | |
2433 | + if (!liberal && (this.strict ? this.reservedWordsStrict : this.reservedWords).test(this.value) && | |
2434 | + (this.options.ecmaVersion >= 6 || | |
2435 | + this.input.slice(this.start, this.end).indexOf("\\") == -1)) | |
2436 | + this.raiseRecoverable(this.start, "The keyword '" + this.value + "' is reserved") | |
2437 | + if (this.inGenerator && this.value === "yield") | |
2438 | + this.raiseRecoverable(this.start, "Can not use 'yield' as identifier inside a generator") | |
2439 | + if (this.inAsync && this.value === "await") | |
2440 | + this.raiseRecoverable(this.start, "Can not use 'await' as identifier inside an async function") | |
2441 | + node.name = this.value | |
2442 | + } else if (liberal && this.type.keyword) { | |
2443 | + node.name = this.type.keyword | |
2444 | + } else { | |
2445 | + this.unexpected() | |
2446 | + } | |
2447 | + this.next() | |
2448 | + return this.finishNode(node, "Identifier") | |
2449 | +} | |
2450 | + | |
2451 | +// Parses yield expression inside generator. | |
2452 | + | |
2453 | +pp$3.parseYield = function() { | |
2454 | + if (!this.yieldPos) this.yieldPos = this.start | |
2455 | + | |
2456 | + var node = this.startNode() | |
2457 | + this.next() | |
2458 | + if (this.type == tt.semi || this.canInsertSemicolon() || (this.type != tt.star && !this.type.startsExpr)) { | |
2459 | + node.delegate = false | |
2460 | + node.argument = null | |
2461 | + } else { | |
2462 | + node.delegate = this.eat(tt.star) | |
2463 | + node.argument = this.parseMaybeAssign() | |
2464 | + } | |
2465 | + return this.finishNode(node, "YieldExpression") | |
2466 | +} | |
2467 | + | |
2468 | +pp$3.parseAwait = function() { | |
2469 | + if (!this.awaitPos) this.awaitPos = this.start | |
2470 | + | |
2471 | + var node = this.startNode() | |
2472 | + this.next() | |
2473 | + node.argument = this.parseMaybeUnary(null, true) | |
2474 | + return this.finishNode(node, "AwaitExpression") | |
2475 | +} | |
2476 | + | |
2477 | +var pp$4 = Parser.prototype | |
2478 | + | |
2479 | +// This function is used to raise exceptions on parse errors. It | |
2480 | +// takes an offset integer (into the current `input`) to indicate | |
2481 | +// the location of the error, attaches the position to the end | |
2482 | +// of the error message, and then raises a `SyntaxError` with that | |
2483 | +// message. | |
2484 | + | |
2485 | +pp$4.raise = function(pos, message) { | |
2486 | + var loc = getLineInfo(this.input, pos) | |
2487 | + message += " (" + loc.line + ":" + loc.column + ")" | |
2488 | + var err = new SyntaxError(message) | |
2489 | + err.pos = pos; err.loc = loc; err.raisedAt = this.pos | |
2490 | + throw err | |
2491 | +} | |
2492 | + | |
2493 | +pp$4.raiseRecoverable = pp$4.raise | |
2494 | + | |
2495 | +pp$4.curPosition = function() { | |
2496 | + if (this.options.locations) { | |
2497 | + return new Position(this.curLine, this.pos - this.lineStart) | |
2498 | + } | |
2499 | +} | |
2500 | + | |
2501 | +var Node = function Node(parser, pos, loc) { | |
2502 | + this.type = "" | |
2503 | + this.start = pos | |
2504 | + this.end = 0 | |
2505 | + if (parser.options.locations) | |
2506 | + this.loc = new SourceLocation(parser, loc) | |
2507 | + if (parser.options.directSourceFile) | |
2508 | + this.sourceFile = parser.options.directSourceFile | |
2509 | + if (parser.options.ranges) | |
2510 | + this.range = [pos, 0] | |
2511 | +}; | |
2512 | + | |
2513 | +// Start an AST node, attaching a start offset. | |
2514 | + | |
2515 | +var pp$5 = Parser.prototype | |
2516 | + | |
2517 | +pp$5.startNode = function() { | |
2518 | + return new Node(this, this.start, this.startLoc) | |
2519 | +} | |
2520 | + | |
2521 | +pp$5.startNodeAt = function(pos, loc) { | |
2522 | + return new Node(this, pos, loc) | |
2523 | +} | |
2524 | + | |
2525 | +// Finish an AST node, adding `type` and `end` properties. | |
2526 | + | |
2527 | +function finishNodeAt(node, type, pos, loc) { | |
2528 | + node.type = type | |
2529 | + node.end = pos | |
2530 | + if (this.options.locations) | |
2531 | + node.loc.end = loc | |
2532 | + if (this.options.ranges) | |
2533 | + node.range[1] = pos | |
2534 | + return node | |
2535 | +} | |
2536 | + | |
2537 | +pp$5.finishNode = function(node, type) { | |
2538 | + return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc) | |
2539 | +} | |
2540 | + | |
2541 | +// Finish node at given position | |
2542 | + | |
2543 | +pp$5.finishNodeAt = function(node, type, pos, loc) { | |
2544 | + return finishNodeAt.call(this, node, type, pos, loc) | |
2545 | +} | |
2546 | + | |
2547 | +// The algorithm used to determine whether a regexp can appear at a | |
2548 | +// given point in the program is loosely based on sweet.js' approach. | |
2549 | +// See https://github.com/mozilla/sweet.js/wiki/design | |
2550 | + | |
2551 | +var TokContext = function TokContext(token, isExpr, preserveSpace, override) { | |
2552 | + this.token = token | |
2553 | + this.isExpr = !!isExpr | |
2554 | + this.preserveSpace = !!preserveSpace | |
2555 | + this.override = override | |
2556 | +}; | |
2557 | + | |
2558 | +var types = { | |
2559 | + b_stat: new TokContext("{", false), | |
2560 | + b_expr: new TokContext("{", true), | |
2561 | + b_tmpl: new TokContext("${", true), | |
2562 | + p_stat: new TokContext("(", false), | |
2563 | + p_expr: new TokContext("(", true), | |
2564 | + q_tmpl: new TokContext("`", true, true, function (p) { return p.readTmplToken(); }), | |
2565 | + f_expr: new TokContext("function", true) | |
2566 | +} | |
2567 | + | |
2568 | +var pp$6 = Parser.prototype | |
2569 | + | |
2570 | +pp$6.initialContext = function() { | |
2571 | + return [types.b_stat] | |
2572 | +} | |
2573 | + | |
2574 | +pp$6.braceIsBlock = function(prevType) { | |
2575 | + if (prevType === tt.colon) { | |
2576 | + var parent = this.curContext() | |
2577 | + if (parent === types.b_stat || parent === types.b_expr) | |
2578 | + return !parent.isExpr | |
2579 | + } | |
2580 | + if (prevType === tt._return) | |
2581 | + return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) | |
2582 | + if (prevType === tt._else || prevType === tt.semi || prevType === tt.eof || prevType === tt.parenR) | |
2583 | + return true | |
2584 | + if (prevType == tt.braceL) | |
2585 | + return this.curContext() === types.b_stat | |
2586 | + return !this.exprAllowed | |
2587 | +} | |
2588 | + | |
2589 | +pp$6.updateContext = function(prevType) { | |
2590 | + var update, type = this.type | |
2591 | + if (type.keyword && prevType == tt.dot) | |
2592 | + this.exprAllowed = false | |
2593 | + else if (update = type.updateContext) | |
2594 | + update.call(this, prevType) | |
2595 | + else | |
2596 | + this.exprAllowed = type.beforeExpr | |
2597 | +} | |
2598 | + | |
2599 | +// Token-specific context update code | |
2600 | + | |
2601 | +tt.parenR.updateContext = tt.braceR.updateContext = function() { | |
2602 | + if (this.context.length == 1) { | |
2603 | + this.exprAllowed = true | |
2604 | + return | |
2605 | + } | |
2606 | + var out = this.context.pop() | |
2607 | + if (out === types.b_stat && this.curContext() === types.f_expr) { | |
2608 | + this.context.pop() | |
2609 | + this.exprAllowed = false | |
2610 | + } else if (out === types.b_tmpl) { | |
2611 | + this.exprAllowed = true | |
2612 | + } else { | |
2613 | + this.exprAllowed = !out.isExpr | |
2614 | + } | |
2615 | +} | |
2616 | + | |
2617 | +tt.braceL.updateContext = function(prevType) { | |
2618 | + this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr) | |
2619 | + this.exprAllowed = true | |
2620 | +} | |
2621 | + | |
2622 | +tt.dollarBraceL.updateContext = function() { | |
2623 | + this.context.push(types.b_tmpl) | |
2624 | + this.exprAllowed = true | |
2625 | +} | |
2626 | + | |
2627 | +tt.parenL.updateContext = function(prevType) { | |
2628 | + var statementParens = prevType === tt._if || prevType === tt._for || prevType === tt._with || prevType === tt._while | |
2629 | + this.context.push(statementParens ? types.p_stat : types.p_expr) | |
2630 | + this.exprAllowed = true | |
2631 | +} | |
2632 | + | |
2633 | +tt.incDec.updateContext = function() { | |
2634 | + // tokExprAllowed stays unchanged | |
2635 | +} | |
2636 | + | |
2637 | +tt._function.updateContext = function(prevType) { | |
2638 | + if (prevType.beforeExpr && prevType !== tt.semi && prevType !== tt._else && | |
2639 | + !((prevType === tt.colon || prevType === tt.braceL) && this.curContext() === types.b_stat)) | |
2640 | + this.context.push(types.f_expr) | |
2641 | + this.exprAllowed = false | |
2642 | +} | |
2643 | + | |
2644 | +tt.backQuote.updateContext = function() { | |
2645 | + if (this.curContext() === types.q_tmpl) | |
2646 | + this.context.pop() | |
2647 | + else | |
2648 | + this.context.push(types.q_tmpl) | |
2649 | + this.exprAllowed = false | |
2650 | +} | |
2651 | + | |
2652 | +// Object type used to represent tokens. Note that normally, tokens | |
2653 | +// simply exist as properties on the parser object. This is only | |
2654 | +// used for the onToken callback and the external tokenizer. | |
2655 | + | |
2656 | +var Token = function Token(p) { | |
2657 | + this.type = p.type | |
2658 | + this.value = p.value | |
2659 | + this.start = p.start | |
2660 | + this.end = p.end | |
2661 | + if (p.options.locations) | |
2662 | + this.loc = new SourceLocation(p, p.startLoc, p.endLoc) | |
2663 | + if (p.options.ranges) | |
2664 | + this.range = [p.start, p.end] | |
2665 | +}; | |
2666 | + | |
2667 | +// ## Tokenizer | |
2668 | + | |
2669 | +var pp$7 = Parser.prototype | |
2670 | + | |
2671 | +// Are we running under Rhino? | |
2672 | +var isRhino = typeof Packages == "object" && Object.prototype.toString.call(Packages) == "[object JavaPackage]" | |
2673 | + | |
2674 | +// Move to the next token | |
2675 | + | |
2676 | +pp$7.next = function() { | |
2677 | + if (this.options.onToken) | |
2678 | + this.options.onToken(new Token(this)) | |
2679 | + | |
2680 | + this.lastTokEnd = this.end | |
2681 | + this.lastTokStart = this.start | |
2682 | + this.lastTokEndLoc = this.endLoc | |
2683 | + this.lastTokStartLoc = this.startLoc | |
2684 | + this.nextToken() | |
2685 | +} | |
2686 | + | |
2687 | +pp$7.getToken = function() { | |
2688 | + this.next() | |
2689 | + return new Token(this) | |
2690 | +} | |
2691 | + | |
2692 | +// If we're in an ES6 environment, make parsers iterable | |
2693 | +if (typeof Symbol !== "undefined") | |
2694 | + pp$7[Symbol.iterator] = function () { | |
2695 | + var self = this | |
2696 | + return {next: function () { | |
2697 | + var token = self.getToken() | |
2698 | + return { | |
2699 | + done: token.type === tt.eof, | |
2700 | + value: token | |
2701 | + } | |
2702 | + }} | |
2703 | + } | |
2704 | + | |
2705 | +// Toggle strict mode. Re-reads the next number or string to please | |
2706 | +// pedantic tests (`"use strict"; 010;` should fail). | |
2707 | + | |
2708 | +pp$7.curContext = function() { | |
2709 | + return this.context[this.context.length - 1] | |
2710 | +} | |
2711 | + | |
2712 | +// Read a single token, updating the parser object's token-related | |
2713 | +// properties. | |
2714 | + | |
2715 | +pp$7.nextToken = function() { | |
2716 | + var curContext = this.curContext() | |
2717 | + if (!curContext || !curContext.preserveSpace) this.skipSpace() | |
2718 | + | |
2719 | + this.start = this.pos | |
2720 | + if (this.options.locations) this.startLoc = this.curPosition() | |
2721 | + if (this.pos >= this.input.length) return this.finishToken(tt.eof) | |
2722 | + | |
2723 | + if (curContext.override) return curContext.override(this) | |
2724 | + else this.readToken(this.fullCharCodeAtPos()) | |
2725 | +} | |
2726 | + | |
2727 | +pp$7.readToken = function(code) { | |
2728 | + // Identifier or keyword. '\uXXXX' sequences are allowed in | |
2729 | + // identifiers, so '\' also dispatches to that. | |
2730 | + if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\' */) | |
2731 | + return this.readWord() | |
2732 | + | |
2733 | + return this.getTokenFromCode(code) | |
2734 | +} | |
2735 | + | |
2736 | +pp$7.fullCharCodeAtPos = function() { | |
2737 | + var code = this.input.charCodeAt(this.pos) | |
2738 | + if (code <= 0xd7ff || code >= 0xe000) return code | |
2739 | + var next = this.input.charCodeAt(this.pos + 1) | |
2740 | + return (code << 10) + next - 0x35fdc00 | |
2741 | +} | |
2742 | + | |
2743 | +pp$7.skipBlockComment = function() { | |
2744 | + var this$1 = this; | |
2745 | + | |
2746 | + var startLoc = this.options.onComment && this.curPosition() | |
2747 | + var start = this.pos, end = this.input.indexOf("*/", this.pos += 2) | |
2748 | + if (end === -1) this.raise(this.pos - 2, "Unterminated comment") | |
2749 | + this.pos = end + 2 | |
2750 | + if (this.options.locations) { | |
2751 | + lineBreakG.lastIndex = start | |
2752 | + var match | |
2753 | + while ((match = lineBreakG.exec(this.input)) && match.index < this.pos) { | |
2754 | + ++this$1.curLine | |
2755 | + this$1.lineStart = match.index + match[0].length | |
2756 | + } | |
2757 | + } | |
2758 | + if (this.options.onComment) | |
2759 | + this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos, | |
2760 | + startLoc, this.curPosition()) | |
2761 | +} | |
2762 | + | |
2763 | +pp$7.skipLineComment = function(startSkip) { | |
2764 | + var this$1 = this; | |
2765 | + | |
2766 | + var start = this.pos | |
2767 | + var startLoc = this.options.onComment && this.curPosition() | |
2768 | + var ch = this.input.charCodeAt(this.pos+=startSkip) | |
2769 | + while (this.pos < this.input.length && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) { | |
2770 | + ++this$1.pos | |
2771 | + ch = this$1.input.charCodeAt(this$1.pos) | |
2772 | + } | |
2773 | + if (this.options.onComment) | |
2774 | + this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos, | |
2775 | + startLoc, this.curPosition()) | |
2776 | +} | |
2777 | + | |
2778 | +// Called at the start of the parse and after every token. Skips | |
2779 | +// whitespace and comments, and. | |
2780 | + | |
2781 | +pp$7.skipSpace = function() { | |
2782 | + var this$1 = this; | |
2783 | + | |
2784 | + loop: while (this.pos < this.input.length) { | |
2785 | + var ch = this$1.input.charCodeAt(this$1.pos) | |
2786 | + switch (ch) { | |
2787 | + case 32: case 160: // ' ' | |
2788 | + ++this$1.pos | |
2789 | + break | |
2790 | + case 13: | |
2791 | + if (this$1.input.charCodeAt(this$1.pos + 1) === 10) { | |
2792 | + ++this$1.pos | |
2793 | + } | |
2794 | + case 10: case 8232: case 8233: | |
2795 | + ++this$1.pos | |
2796 | + if (this$1.options.locations) { | |
2797 | + ++this$1.curLine | |
2798 | + this$1.lineStart = this$1.pos | |
2799 | + } | |
2800 | + break | |
2801 | + case 47: // '/' | |
2802 | + switch (this$1.input.charCodeAt(this$1.pos + 1)) { | |
2803 | + case 42: // '*' | |
2804 | + this$1.skipBlockComment() | |
2805 | + break | |
2806 | + case 47: | |
2807 | + this$1.skipLineComment(2) | |
2808 | + break | |
2809 | + default: | |
2810 | + break loop | |
2811 | + } | |
2812 | + break | |
2813 | + default: | |
2814 | + if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) { | |
2815 | + ++this$1.pos | |
2816 | + } else { | |
2817 | + break loop | |
2818 | + } | |
2819 | + } | |
2820 | + } | |
2821 | +} | |
2822 | + | |
2823 | +// Called at the end of every token. Sets `end`, `val`, and | |
2824 | +// maintains `context` and `exprAllowed`, and skips the space after | |
2825 | +// the token, so that the next one's `start` will point at the | |
2826 | +// right position. | |
2827 | + | |
2828 | +pp$7.finishToken = function(type, val) { | |
2829 | + this.end = this.pos | |
2830 | + if (this.options.locations) this.endLoc = this.curPosition() | |
2831 | + var prevType = this.type | |
2832 | + this.type = type | |
2833 | + this.value = val | |
2834 | + | |
2835 | + this.updateContext(prevType) | |
2836 | +} | |
2837 | + | |
2838 | +// ### Token reading | |
2839 | + | |
2840 | +// This is the function that is called to fetch the next token. It | |
2841 | +// is somewhat obscure, because it works in character codes rather | |
2842 | +// than characters, and because operator parsing has been inlined | |
2843 | +// into it. | |
2844 | +// | |
2845 | +// All in the name of speed. | |
2846 | +// | |
2847 | +pp$7.readToken_dot = function() { | |
2848 | + var next = this.input.charCodeAt(this.pos + 1) | |
2849 | + if (next >= 48 && next <= 57) return this.readNumber(true) | |
2850 | + var next2 = this.input.charCodeAt(this.pos + 2) | |
2851 | + if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.' | |
2852 | + this.pos += 3 | |
2853 | + return this.finishToken(tt.ellipsis) | |
2854 | + } else { | |
2855 | + ++this.pos | |
2856 | + return this.finishToken(tt.dot) | |
2857 | + } | |
2858 | +} | |
2859 | + | |
2860 | +pp$7.readToken_slash = function() { // '/' | |
2861 | + var next = this.input.charCodeAt(this.pos + 1) | |
2862 | + if (this.exprAllowed) {++this.pos; return this.readRegexp()} | |
2863 | + if (next === 61) return this.finishOp(tt.assign, 2) | |
2864 | + return this.finishOp(tt.slash, 1) | |
2865 | +} | |
2866 | + | |
2867 | +pp$7.readToken_mult_modulo_exp = function(code) { // '%*' | |
2868 | + var next = this.input.charCodeAt(this.pos + 1) | |
2869 | + var size = 1 | |
2870 | + var tokentype = code === 42 ? tt.star : tt.modulo | |
2871 | + | |
2872 | + // exponentiation operator ** and **= | |
2873 | + if (this.options.ecmaVersion >= 7 && next === 42) { | |
2874 | + ++size | |
2875 | + tokentype = tt.starstar | |
2876 | + next = this.input.charCodeAt(this.pos + 2) | |
2877 | + } | |
2878 | + | |
2879 | + if (next === 61) return this.finishOp(tt.assign, size + 1) | |
2880 | + return this.finishOp(tokentype, size) | |
2881 | +} | |
2882 | + | |
2883 | +pp$7.readToken_pipe_amp = function(code) { // '|&' | |
2884 | + var next = this.input.charCodeAt(this.pos + 1) | |
2885 | + if (next === code) return this.finishOp(code === 124 ? tt.logicalOR : tt.logicalAND, 2) | |
2886 | + if (next === 61) return this.finishOp(tt.assign, 2) | |
2887 | + return this.finishOp(code === 124 ? tt.bitwiseOR : tt.bitwiseAND, 1) | |
2888 | +} | |
2889 | + | |
2890 | +pp$7.readToken_caret = function() { // '^' | |
2891 | + var next = this.input.charCodeAt(this.pos + 1) | |
2892 | + if (next === 61) return this.finishOp(tt.assign, 2) | |
2893 | + return this.finishOp(tt.bitwiseXOR, 1) | |
2894 | +} | |
2895 | + | |
2896 | +pp$7.readToken_plus_min = function(code) { // '+-' | |
2897 | + var next = this.input.charCodeAt(this.pos + 1) | |
2898 | + if (next === code) { | |
2899 | + if (next == 45 && this.input.charCodeAt(this.pos + 2) == 62 && | |
2900 | + lineBreak.test(this.input.slice(this.lastTokEnd, this.pos))) { | |
2901 | + // A `-->` line comment | |
2902 | + this.skipLineComment(3) | |
2903 | + this.skipSpace() | |
2904 | + return this.nextToken() | |
2905 | + } | |
2906 | + return this.finishOp(tt.incDec, 2) | |
2907 | + } | |
2908 | + if (next === 61) return this.finishOp(tt.assign, 2) | |
2909 | + return this.finishOp(tt.plusMin, 1) | |
2910 | +} | |
2911 | + | |
2912 | +pp$7.readToken_lt_gt = function(code) { // '<>' | |
2913 | + var next = this.input.charCodeAt(this.pos + 1) | |
2914 | + var size = 1 | |
2915 | + if (next === code) { | |
2916 | + size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2 | |
2917 | + if (this.input.charCodeAt(this.pos + size) === 61) return this.finishOp(tt.assign, size + 1) | |
2918 | + return this.finishOp(tt.bitShift, size) | |
2919 | + } | |
2920 | + if (next == 33 && code == 60 && this.input.charCodeAt(this.pos + 2) == 45 && | |
2921 | + this.input.charCodeAt(this.pos + 3) == 45) { | |
2922 | + if (this.inModule) this.unexpected() | |
2923 | + // `<!--`, an XML-style comment that should be interpreted as a line comment | |
2924 | + this.skipLineComment(4) | |
2925 | + this.skipSpace() | |
2926 | + return this.nextToken() | |
2927 | + } | |
2928 | + if (next === 61) size = 2 | |
2929 | + return this.finishOp(tt.relational, size) | |
2930 | +} | |
2931 | + | |
2932 | +pp$7.readToken_eq_excl = function(code) { // '=!' | |
2933 | + var next = this.input.charCodeAt(this.pos + 1) | |
2934 | + if (next === 61) return this.finishOp(tt.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2) | |
2935 | + if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>' | |
2936 | + this.pos += 2 | |
2937 | + return this.finishToken(tt.arrow) | |
2938 | + } | |
2939 | + return this.finishOp(code === 61 ? tt.eq : tt.prefix, 1) | |
2940 | +} | |
2941 | + | |
2942 | +pp$7.getTokenFromCode = function(code) { | |
2943 | + switch (code) { | |
2944 | + // The interpretation of a dot depends on whether it is followed | |
2945 | + // by a digit or another two dots. | |
2946 | + case 46: // '.' | |
2947 | + return this.readToken_dot() | |
2948 | + | |
2949 | + // Punctuation tokens. | |
2950 | + case 40: ++this.pos; return this.finishToken(tt.parenL) | |
2951 | + case 41: ++this.pos; return this.finishToken(tt.parenR) | |
2952 | + case 59: ++this.pos; return this.finishToken(tt.semi) | |
2953 | + case 44: ++this.pos; return this.finishToken(tt.comma) | |
2954 | + case 91: ++this.pos; return this.finishToken(tt.bracketL) | |
2955 | + case 93: ++this.pos; return this.finishToken(tt.bracketR) | |
2956 | + case 123: ++this.pos; return this.finishToken(tt.braceL) | |
2957 | + case 125: ++this.pos; return this.finishToken(tt.braceR) | |
2958 | + case 58: ++this.pos; return this.finishToken(tt.colon) | |
2959 | + case 63: ++this.pos; return this.finishToken(tt.question) | |
2960 | + | |
2961 | + case 96: // '`' | |
2962 | + if (this.options.ecmaVersion < 6) break | |
2963 | + ++this.pos | |
2964 | + return this.finishToken(tt.backQuote) | |
2965 | + | |
2966 | + case 48: // '0' | |
2967 | + var next = this.input.charCodeAt(this.pos + 1) | |
2968 | + if (next === 120 || next === 88) return this.readRadixNumber(16) // '0x', '0X' - hex number | |
2969 | + if (this.options.ecmaVersion >= 6) { | |
2970 | + if (next === 111 || next === 79) return this.readRadixNumber(8) // '0o', '0O' - octal number | |
2971 | + if (next === 98 || next === 66) return this.readRadixNumber(2) // '0b', '0B' - binary number | |
2972 | + } | |
2973 | + // Anything else beginning with a digit is an integer, octal | |
2974 | + // number, or float. | |
2975 | + case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: // 1-9 | |
2976 | + return this.readNumber(false) | |
2977 | + | |
2978 | + // Quotes produce strings. | |
2979 | + case 34: case 39: // '"', "'" | |
2980 | + return this.readString(code) | |
2981 | + | |
2982 | + // Operators are parsed inline in tiny state machines. '=' (61) is | |
2983 | + // often referred to. `finishOp` simply skips the amount of | |
2984 | + // characters it is given as second argument, and returns a token | |
2985 | + // of the type given by its first argument. | |
2986 | + | |
2987 | + case 47: // '/' | |
2988 | + return this.readToken_slash() | |
2989 | + | |
2990 | + case 37: case 42: // '%*' | |
2991 | + return this.readToken_mult_modulo_exp(code) | |
2992 | + | |
2993 | + case 124: case 38: // '|&' | |
2994 | + return this.readToken_pipe_amp(code) | |
2995 | + | |
2996 | + case 94: // '^' | |
2997 | + return this.readToken_caret() | |
2998 | + | |
2999 | + case 43: case 45: // '+-' | |
3000 | + return this.readToken_plus_min(code) | |
3001 | + | |
3002 | + case 60: case 62: // '<>' | |
3003 | + return this.readToken_lt_gt(code) | |
3004 | + | |
3005 | + case 61: case 33: // '=!' | |
3006 | + return this.readToken_eq_excl(code) | |
3007 | + | |
3008 | + case 126: // '~' | |
3009 | + return this.finishOp(tt.prefix, 1) | |
3010 | + } | |
3011 | + | |
3012 | + this.raise(this.pos, "Unexpected character '" + codePointToString(code) + "'") | |
3013 | +} | |
3014 | + | |
3015 | +pp$7.finishOp = function(type, size) { | |
3016 | + var str = this.input.slice(this.pos, this.pos + size) | |
3017 | + this.pos += size | |
3018 | + return this.finishToken(type, str) | |
3019 | +} | |
3020 | + | |
3021 | +// Parse a regular expression. Some context-awareness is necessary, | |
3022 | +// since a '/' inside a '[]' set does not end the expression. | |
3023 | + | |
3024 | +function tryCreateRegexp(src, flags, throwErrorAt, parser) { | |
3025 | + try { | |
3026 | + return new RegExp(src, flags) | |
3027 | + } catch (e) { | |
3028 | + if (throwErrorAt !== undefined) { | |
3029 | + if (e instanceof SyntaxError) parser.raise(throwErrorAt, "Error parsing regular expression: " + e.message) | |
3030 | + throw e | |
3031 | + } | |
3032 | + } | |
3033 | +} | |
3034 | + | |
3035 | +var regexpUnicodeSupport = !!tryCreateRegexp("\uffff", "u") | |
3036 | + | |
3037 | +pp$7.readRegexp = function() { | |
3038 | + var this$1 = this; | |
3039 | + | |
3040 | + var escaped, inClass, start = this.pos | |
3041 | + for (;;) { | |
3042 | + if (this$1.pos >= this$1.input.length) this$1.raise(start, "Unterminated regular expression") | |
3043 | + var ch = this$1.input.charAt(this$1.pos) | |
3044 | + if (lineBreak.test(ch)) this$1.raise(start, "Unterminated regular expression") | |
3045 | + if (!escaped) { | |
3046 | + if (ch === "[") inClass = true | |
3047 | + else if (ch === "]" && inClass) inClass = false | |
3048 | + else if (ch === "/" && !inClass) break | |
3049 | + escaped = ch === "\\" | |
3050 | + } else escaped = false | |
3051 | + ++this$1.pos | |
3052 | + } | |
3053 | + var content = this.input.slice(start, this.pos) | |
3054 | + ++this.pos | |
3055 | + // Need to use `readWord1` because '\uXXXX' sequences are allowed | |
3056 | + // here (don't ask). | |
3057 | + var mods = this.readWord1() | |
3058 | + var tmp = content, tmpFlags = "" | |
3059 | + if (mods) { | |
3060 | + var validFlags = /^[gim]*$/ | |
3061 | + if (this.options.ecmaVersion >= 6) validFlags = /^[gimuy]*$/ | |
3062 | + if (!validFlags.test(mods)) this.raise(start, "Invalid regular expression flag") | |
3063 | + if (mods.indexOf("u") >= 0) { | |
3064 | + if (regexpUnicodeSupport) { | |
3065 | + tmpFlags = "u" | |
3066 | + } else { | |
3067 | + // Replace each astral symbol and every Unicode escape sequence that | |
3068 | + // possibly represents an astral symbol or a paired surrogate with a | |
3069 | + // single ASCII symbol to avoid throwing on regular expressions that | |
3070 | + // are only valid in combination with the `/u` flag. | |
3071 | + // Note: replacing with the ASCII symbol `x` might cause false | |
3072 | + // negatives in unlikely scenarios. For example, `[\u{61}-b]` is a | |
3073 | + // perfectly valid pattern that is equivalent to `[a-b]`, but it would | |
3074 | + // be replaced by `[x-b]` which throws an error. | |
3075 | + tmp = tmp.replace(/\\u\{([0-9a-fA-F]+)\}/g, function (_match, code, offset) { | |
3076 | + code = Number("0x" + code) | |
3077 | + if (code > 0x10FFFF) this$1.raise(start + offset + 3, "Code point out of bounds") | |
3078 | + return "x" | |
3079 | + }) | |
3080 | + tmp = tmp.replace(/\\u([a-fA-F0-9]{4})|[\uD800-\uDBFF][\uDC00-\uDFFF]/g, "x") | |
3081 | + tmpFlags = tmpFlags.replace("u", "") | |
3082 | + } | |
3083 | + } | |
3084 | + } | |
3085 | + // Detect invalid regular expressions. | |
3086 | + var value = null | |
3087 | + // Rhino's regular expression parser is flaky and throws uncatchable exceptions, | |
3088 | + // so don't do detection if we are running under Rhino | |
3089 | + if (!isRhino) { | |
3090 | + tryCreateRegexp(tmp, tmpFlags, start, this) | |
3091 | + // Get a regular expression object for this pattern-flag pair, or `null` in | |
3092 | + // case the current environment doesn't support the flags it uses. | |
3093 | + value = tryCreateRegexp(content, mods) | |
3094 | + } | |
3095 | + return this.finishToken(tt.regexp, {pattern: content, flags: mods, value: value}) | |
3096 | +} | |
3097 | + | |
3098 | +// Read an integer in the given radix. Return null if zero digits | |
3099 | +// were read, the integer value otherwise. When `len` is given, this | |
3100 | +// will return `null` unless the integer has exactly `len` digits. | |
3101 | + | |
3102 | +pp$7.readInt = function(radix, len) { | |
3103 | + var this$1 = this; | |
3104 | + | |
3105 | + var start = this.pos, total = 0 | |
3106 | + for (var i = 0, e = len == null ? Infinity : len; i < e; ++i) { | |
3107 | + var code = this$1.input.charCodeAt(this$1.pos), val | |
3108 | + if (code >= 97) val = code - 97 + 10 // a | |
3109 | + else if (code >= 65) val = code - 65 + 10 // A | |
3110 | + else if (code >= 48 && code <= 57) val = code - 48 // 0-9 | |
3111 | + else val = Infinity | |
3112 | + if (val >= radix) break | |
3113 | + ++this$1.pos | |
3114 | + total = total * radix + val | |
3115 | + } | |
3116 | + if (this.pos === start || len != null && this.pos - start !== len) return null | |
3117 | + | |
3118 | + return total | |
3119 | +} | |
3120 | + | |
3121 | +pp$7.readRadixNumber = function(radix) { | |
3122 | + this.pos += 2 // 0x | |
3123 | + var val = this.readInt(radix) | |
3124 | + if (val == null) this.raise(this.start + 2, "Expected number in radix " + radix) | |
3125 | + if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, "Identifier directly after number") | |
3126 | + return this.finishToken(tt.num, val) | |
3127 | +} | |
3128 | + | |
3129 | +// Read an integer, octal integer, or floating-point number. | |
3130 | + | |
3131 | +pp$7.readNumber = function(startsWithDot) { | |
3132 | + var start = this.pos, isFloat = false, octal = this.input.charCodeAt(this.pos) === 48 | |
3133 | + if (!startsWithDot && this.readInt(10) === null) this.raise(start, "Invalid number") | |
3134 | + if (octal && this.pos == start + 1) octal = false | |
3135 | + var next = this.input.charCodeAt(this.pos) | |
3136 | + if (next === 46 && !octal) { // '.' | |
3137 | + ++this.pos | |
3138 | + this.readInt(10) | |
3139 | + isFloat = true | |
3140 | + next = this.input.charCodeAt(this.pos) | |
3141 | + } | |
3142 | + if ((next === 69 || next === 101) && !octal) { // 'eE' | |
3143 | + next = this.input.charCodeAt(++this.pos) | |
3144 | + if (next === 43 || next === 45) ++this.pos // '+-' | |
3145 | + if (this.readInt(10) === null) this.raise(start, "Invalid number") | |
3146 | + isFloat = true | |
3147 | + } | |
3148 | + if (isIdentifierStart(this.fullCharCodeAtPos())) this.raise(this.pos, "Identifier directly after number") | |
3149 | + | |
3150 | + var str = this.input.slice(start, this.pos), val | |
3151 | + if (isFloat) val = parseFloat(str) | |
3152 | + else if (!octal || str.length === 1) val = parseInt(str, 10) | |
3153 | + else if (/[89]/.test(str) || this.strict) this.raise(start, "Invalid number") | |
3154 | + else val = parseInt(str, 8) | |
3155 | + return this.finishToken(tt.num, val) | |
3156 | +} | |
3157 | + | |
3158 | +// Read a string value, interpreting backslash-escapes. | |
3159 | + | |
3160 | +pp$7.readCodePoint = function() { | |
3161 | + var ch = this.input.charCodeAt(this.pos), code | |
3162 | + | |
3163 | + if (ch === 123) { | |
3164 | + if (this.options.ecmaVersion < 6) this.unexpected() | |
3165 | + var codePos = ++this.pos | |
3166 | + code = this.readHexChar(this.input.indexOf('}', this.pos) - this.pos) | |
3167 | + ++this.pos | |
3168 | + if (code > 0x10FFFF) this.raise(codePos, "Code point out of bounds") | |
3169 | + } else { | |
3170 | + code = this.readHexChar(4) | |
3171 | + } | |
3172 | + return code | |
3173 | +} | |
3174 | + | |
3175 | +function codePointToString(code) { | |
3176 | + // UTF-16 Decoding | |
3177 | + if (code <= 0xFFFF) return String.fromCharCode(code) | |
3178 | + code -= 0x10000 | |
3179 | + return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00) | |
3180 | +} | |
3181 | + | |
3182 | +pp$7.readString = function(quote) { | |
3183 | + var this$1 = this; | |
3184 | + | |
3185 | + var out = "", chunkStart = ++this.pos | |
3186 | + for (;;) { | |
3187 | + if (this$1.pos >= this$1.input.length) this$1.raise(this$1.start, "Unterminated string constant") | |
3188 | + var ch = this$1.input.charCodeAt(this$1.pos) | |
3189 | + if (ch === quote) break | |
3190 | + if (ch === 92) { // '\' | |
3191 | + out += this$1.input.slice(chunkStart, this$1.pos) | |
3192 | + out += this$1.readEscapedChar(false) | |
3193 | + chunkStart = this$1.pos | |
3194 | + } else { | |
3195 | + if (isNewLine(ch)) this$1.raise(this$1.start, "Unterminated string constant") | |
3196 | + ++this$1.pos | |
3197 | + } | |
3198 | + } | |
3199 | + out += this.input.slice(chunkStart, this.pos++) | |
3200 | + return this.finishToken(tt.string, out) | |
3201 | +} | |
3202 | + | |
3203 | +// Reads template string tokens. | |
3204 | + | |
3205 | +pp$7.readTmplToken = function() { | |
3206 | + var this$1 = this; | |
3207 | + | |
3208 | + var out = "", chunkStart = this.pos | |
3209 | + for (;;) { | |
3210 | + if (this$1.pos >= this$1.input.length) this$1.raise(this$1.start, "Unterminated template") | |
3211 | + var ch = this$1.input.charCodeAt(this$1.pos) | |
3212 | + if (ch === 96 || ch === 36 && this$1.input.charCodeAt(this$1.pos + 1) === 123) { // '`', '${' | |
3213 | + if (this$1.pos === this$1.start && this$1.type === tt.template) { | |
3214 | + if (ch === 36) { | |
3215 | + this$1.pos += 2 | |
3216 | + return this$1.finishToken(tt.dollarBraceL) | |
3217 | + } else { | |
3218 | + ++this$1.pos | |
3219 | + return this$1.finishToken(tt.backQuote) | |
3220 | + } | |
3221 | + } | |
3222 | + out += this$1.input.slice(chunkStart, this$1.pos) | |
3223 | + return this$1.finishToken(tt.template, out) | |
3224 | + } | |
3225 | + if (ch === 92) { // '\' | |
3226 | + out += this$1.input.slice(chunkStart, this$1.pos) | |
3227 | + out += this$1.readEscapedChar(true) | |
3228 | + chunkStart = this$1.pos | |
3229 | + } else if (isNewLine(ch)) { | |
3230 | + out += this$1.input.slice(chunkStart, this$1.pos) | |
3231 | + ++this$1.pos | |
3232 | + switch (ch) { | |
3233 | + case 13: | |
3234 | + if (this$1.input.charCodeAt(this$1.pos) === 10) ++this$1.pos | |
3235 | + case 10: | |
3236 | + out += "\n" | |
3237 | + break | |
3238 | + default: | |
3239 | + out += String.fromCharCode(ch) | |
3240 | + break | |
3241 | + } | |
3242 | + if (this$1.options.locations) { | |
3243 | + ++this$1.curLine | |
3244 | + this$1.lineStart = this$1.pos | |
3245 | + } | |
3246 | + chunkStart = this$1.pos | |
3247 | + } else { | |
3248 | + ++this$1.pos | |
3249 | + } | |
3250 | + } | |
3251 | +} | |
3252 | + | |
3253 | +// Used to read escaped characters | |
3254 | + | |
3255 | +pp$7.readEscapedChar = function(inTemplate) { | |
3256 | + var ch = this.input.charCodeAt(++this.pos) | |
3257 | + ++this.pos | |
3258 | + switch (ch) { | |
3259 | + case 110: return "\n" // 'n' -> '\n' | |
3260 | + case 114: return "\r" // 'r' -> '\r' | |
3261 | + case 120: return String.fromCharCode(this.readHexChar(2)) // 'x' | |
3262 | + case 117: return codePointToString(this.readCodePoint()) // 'u' | |
3263 | + case 116: return "\t" // 't' -> '\t' | |
3264 | + case 98: return "\b" // 'b' -> '\b' | |
3265 | + case 118: return "\u000b" // 'v' -> '\u000b' | |
3266 | + case 102: return "\f" // 'f' -> '\f' | |
3267 | + case 13: if (this.input.charCodeAt(this.pos) === 10) ++this.pos // '\r\n' | |
3268 | + case 10: // ' \n' | |
3269 | + if (this.options.locations) { this.lineStart = this.pos; ++this.curLine } | |
3270 | + return "" | |
3271 | + default: | |
3272 | + if (ch >= 48 && ch <= 55) { | |
3273 | + var octalStr = this.input.substr(this.pos - 1, 3).match(/^[0-7]+/)[0] | |
3274 | + var octal = parseInt(octalStr, 8) | |
3275 | + if (octal > 255) { | |
3276 | + octalStr = octalStr.slice(0, -1) | |
3277 | + octal = parseInt(octalStr, 8) | |
3278 | + } | |
3279 | + if (octalStr !== "0" && (this.strict || inTemplate)) { | |
3280 | + this.raise(this.pos - 2, "Octal literal in strict mode") | |
3281 | + } | |
3282 | + this.pos += octalStr.length - 1 | |
3283 | + return String.fromCharCode(octal) | |
3284 | + } | |
3285 | + return String.fromCharCode(ch) | |
3286 | + } | |
3287 | +} | |
3288 | + | |
3289 | +// Used to read character escape sequences ('\x', '\u', '\U'). | |
3290 | + | |
3291 | +pp$7.readHexChar = function(len) { | |
3292 | + var codePos = this.pos | |
3293 | + var n = this.readInt(16, len) | |
3294 | + if (n === null) this.raise(codePos, "Bad character escape sequence") | |
3295 | + return n | |
3296 | +} | |
3297 | + | |
3298 | +// Read an identifier, and return it as a string. Sets `this.containsEsc` | |
3299 | +// to whether the word contained a '\u' escape. | |
3300 | +// | |
3301 | +// Incrementally adds only escaped chars, adding other chunks as-is | |
3302 | +// as a micro-optimization. | |
3303 | + | |
3304 | +pp$7.readWord1 = function() { | |
3305 | + var this$1 = this; | |
3306 | + | |
3307 | + this.containsEsc = false | |
3308 | + var word = "", first = true, chunkStart = this.pos | |
3309 | + var astral = this.options.ecmaVersion >= 6 | |
3310 | + while (this.pos < this.input.length) { | |
3311 | + var ch = this$1.fullCharCodeAtPos() | |
3312 | + if (isIdentifierChar(ch, astral)) { | |
3313 | + this$1.pos += ch <= 0xffff ? 1 : 2 | |
3314 | + } else if (ch === 92) { // "\" | |
3315 | + this$1.containsEsc = true | |
3316 | + word += this$1.input.slice(chunkStart, this$1.pos) | |
3317 | + var escStart = this$1.pos | |
3318 | + if (this$1.input.charCodeAt(++this$1.pos) != 117) // "u" | |
3319 | + this$1.raise(this$1.pos, "Expecting Unicode escape sequence \\uXXXX") | |
3320 | + ++this$1.pos | |
3321 | + var esc = this$1.readCodePoint() | |
3322 | + if (!(first ? isIdentifierStart : isIdentifierChar)(esc, astral)) | |
3323 | + this$1.raise(escStart, "Invalid Unicode escape") | |
3324 | + word += codePointToString(esc) | |
3325 | + chunkStart = this$1.pos | |
3326 | + } else { | |
3327 | + break | |
3328 | + } | |
3329 | + first = false | |
3330 | + } | |
3331 | + return word + this.input.slice(chunkStart, this.pos) | |
3332 | +} | |
3333 | + | |
3334 | +// Read an identifier or keyword token. Will check for reserved | |
3335 | +// words when necessary. | |
3336 | + | |
3337 | +pp$7.readWord = function() { | |
3338 | + var word = this.readWord1() | |
3339 | + var type = tt.name | |
3340 | + if (this.keywords.test(word)) { | |
3341 | + if (this.containsEsc) this.raiseRecoverable(this.start, "Escape sequence in keyword " + word) | |
3342 | + type = keywordTypes[word] | |
3343 | + } | |
3344 | + return this.finishToken(type, word) | |
3345 | +} | |
3346 | + | |
3347 | +// Acorn is a tiny, fast JavaScript parser written in JavaScript. | |
3348 | +// | |
3349 | +// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and | |
3350 | +// various contributors and released under an MIT license. | |
3351 | +// | |
3352 | +// Git repositories for Acorn are available at | |
3353 | +// | |
3354 | +// http://marijnhaverbeke.nl/git/acorn | |
3355 | +// https://github.com/ternjs/acorn.git | |
3356 | +// | |
3357 | +// Please use the [github bug tracker][ghbt] to report issues. | |
3358 | +// | |
3359 | +// [ghbt]: https://github.com/ternjs/acorn/issues | |
3360 | +// | |
3361 | +// This file defines the main parser interface. The library also comes | |
3362 | +// with a [error-tolerant parser][dammit] and an | |
3363 | +// [abstract syntax tree walker][walk], defined in other files. | |
3364 | +// | |
3365 | +// [dammit]: acorn_loose.js | |
3366 | +// [walk]: util/walk.js | |
3367 | + | |
3368 | +var version = "4.0.11" | |
3369 | + | |
3370 | +// The main exported interface (under `self.acorn` when in the | |
3371 | +// browser) is a `parse` function that takes a code string and | |
3372 | +// returns an abstract syntax tree as specified by [Mozilla parser | |
3373 | +// API][api]. | |
3374 | +// | |
3375 | +// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API | |
3376 | + | |
3377 | +function parse(input, options) { | |
3378 | + return new Parser(options, input).parse() | |
3379 | +} | |
3380 | + | |
3381 | +// This function tries to parse a single expression at a given | |
3382 | +// offset in a string. Useful for parsing mixed-language formats | |
3383 | +// that embed JavaScript expressions. | |
3384 | + | |
3385 | +function parseExpressionAt(input, pos, options) { | |
3386 | + var p = new Parser(options, input, pos) | |
3387 | + p.nextToken() | |
3388 | + return p.parseExpression() | |
3389 | +} | |
3390 | + | |
3391 | +// Acorn is organized as a tokenizer and a recursive-descent parser. | |
3392 | +// The `tokenizer` export provides an interface to the tokenizer. | |
3393 | + | |
3394 | +function tokenizer(input, options) { | |
3395 | + return new Parser(options, input) | |
3396 | +} | |
3397 | + | |
3398 | +// This is a terrible kludge to support the existing, pre-ES6 | |
3399 | +// interface where the loose parser module retroactively adds exports | |
3400 | +// to this module. | |
3401 | +function addLooseExports(parse, Parser, plugins) { | |
3402 | + exports.parse_dammit = parse | |
3403 | + exports.LooseParser = Parser | |
3404 | + exports.pluginsLoose = plugins | |
3405 | +} | |
3406 | + | |
3407 | +exports.version = version; | |
3408 | +exports.parse = parse; | |
3409 | +exports.parseExpressionAt = parseExpressionAt; | |
3410 | +exports.tokenizer = tokenizer; | |
3411 | +exports.addLooseExports = addLooseExports; | |
3412 | +exports.Parser = Parser; | |
3413 | +exports.plugins = plugins; | |
3414 | +exports.defaultOptions = defaultOptions; | |
3415 | +exports.Position = Position; | |
3416 | +exports.SourceLocation = SourceLocation; | |
3417 | +exports.getLineInfo = getLineInfo; | |
3418 | +exports.Node = Node; | |
3419 | +exports.TokenType = TokenType; | |
3420 | +exports.tokTypes = tt; | |
3421 | +exports.keywordTypes = keywordTypes; | |
3422 | +exports.TokContext = TokContext; | |
3423 | +exports.tokContexts = types; | |
3424 | +exports.isIdentifierChar = isIdentifierChar; | |
3425 | +exports.isIdentifierStart = isIdentifierStart; | |
3426 | +exports.Token = Token; | |
3427 | +exports.isNewLine = isNewLine; | |
3428 | +exports.lineBreak = lineBreak; | |
3429 | +exports.lineBreakG = lineBreakG; | |
3430 | + | |
3431 | +Object.defineProperty(exports, '__esModule', { value: true }); | |
3432 | + | |
3433 | +}))); | |
0 | 3434 | \ No newline at end of file | ... | ... |
node_modules/acorn-dynamic-import/node_modules/acorn/dist/acorn_loose.es.js
0 → 100644
1 | +import { defaultOptions, addLooseExports, SourceLocation, tokTypes, tokenizer, Node, lineBreak, isNewLine, getLineInfo, Token, lineBreakG } from './acorn'; | |
2 | + | |
3 | +// Registered plugins | |
4 | +var pluginsLoose = {} | |
5 | + | |
6 | +var LooseParser = function LooseParser(input, options) { | |
7 | + if ( options === void 0 ) options = {}; | |
8 | + | |
9 | + this.toks = tokenizer(input, options) | |
10 | + this.options = this.toks.options | |
11 | + this.input = this.toks.input | |
12 | + this.tok = this.last = {type: tokTypes.eof, start: 0, end: 0} | |
13 | + if (this.options.locations) { | |
14 | + var here = this.toks.curPosition() | |
15 | + this.tok.loc = new SourceLocation(this.toks, here, here) | |
16 | + } | |
17 | + this.ahead = [] // Tokens ahead | |
18 | + this.context = [] // Indentation contexted | |
19 | + this.curIndent = 0 | |
20 | + this.curLineStart = 0 | |
21 | + this.nextLineStart = this.lineEnd(this.curLineStart) + 1 | |
22 | + this.inAsync = false | |
23 | + // Load plugins | |
24 | + this.options.pluginsLoose = options.pluginsLoose || {} | |
25 | + this.loadPlugins(this.options.pluginsLoose) | |
26 | +}; | |
27 | + | |
28 | +LooseParser.prototype.startNode = function startNode () { | |
29 | + return new Node(this.toks, this.tok.start, this.options.locations ? this.tok.loc.start : null) | |
30 | +}; | |
31 | + | |
32 | +LooseParser.prototype.storeCurrentPos = function storeCurrentPos () { | |
33 | + return this.options.locations ? [this.tok.start, this.tok.loc.start] : this.tok.start | |
34 | +}; | |
35 | + | |
36 | +LooseParser.prototype.startNodeAt = function startNodeAt (pos) { | |
37 | + if (this.options.locations) { | |
38 | + return new Node(this.toks, pos[0], pos[1]) | |
39 | + } else { | |
40 | + return new Node(this.toks, pos) | |
41 | + } | |
42 | +}; | |
43 | + | |
44 | +LooseParser.prototype.finishNode = function finishNode (node, type) { | |
45 | + node.type = type | |
46 | + node.end = this.last.end | |
47 | + if (this.options.locations) | |
48 | + node.loc.end = this.last.loc.end | |
49 | + if (this.options.ranges) | |
50 | + node.range[1] = this.last.end | |
51 | + return node | |
52 | +}; | |
53 | + | |
54 | +LooseParser.prototype.dummyNode = function dummyNode (type) { | |
55 | + var dummy = this.startNode() | |
56 | + dummy.type = type | |
57 | + dummy.end = dummy.start | |
58 | + if (this.options.locations) | |
59 | + dummy.loc.end = dummy.loc.start | |
60 | + if (this.options.ranges) | |
61 | + dummy.range[1] = dummy.start | |
62 | + this.last = {type: tokTypes.name, start: dummy.start, end: dummy.start, loc: dummy.loc} | |
63 | + return dummy | |
64 | +}; | |
65 | + | |
66 | +LooseParser.prototype.dummyIdent = function dummyIdent () { | |
67 | + var dummy = this.dummyNode("Identifier") | |
68 | + dummy.name = "✖" | |
69 | + return dummy | |
70 | +}; | |
71 | + | |
72 | +LooseParser.prototype.dummyString = function dummyString () { | |
73 | + var dummy = this.dummyNode("Literal") | |
74 | + dummy.value = dummy.raw = "✖" | |
75 | + return dummy | |
76 | +}; | |
77 | + | |
78 | +LooseParser.prototype.eat = function eat (type) { | |
79 | + if (this.tok.type === type) { | |
80 | + this.next() | |
81 | + return true | |
82 | + } else { | |
83 | + return false | |
84 | + } | |
85 | +}; | |
86 | + | |
87 | +LooseParser.prototype.isContextual = function isContextual (name) { | |
88 | + return this.tok.type === tokTypes.name && this.tok.value === name | |
89 | +}; | |
90 | + | |
91 | +LooseParser.prototype.eatContextual = function eatContextual (name) { | |
92 | + return this.tok.value === name && this.eat(tokTypes.name) | |
93 | +}; | |
94 | + | |
95 | +LooseParser.prototype.canInsertSemicolon = function canInsertSemicolon () { | |
96 | + return this.tok.type === tokTypes.eof || this.tok.type === tokTypes.braceR || | |
97 | + lineBreak.test(this.input.slice(this.last.end, this.tok.start)) | |
98 | +}; | |
99 | + | |
100 | +LooseParser.prototype.semicolon = function semicolon () { | |
101 | + return this.eat(tokTypes.semi) | |
102 | +}; | |
103 | + | |
104 | +LooseParser.prototype.expect = function expect (type) { | |
105 | + var this$1 = this; | |
106 | + | |
107 | + if (this.eat(type)) return true | |
108 | + for (var i = 1; i <= 2; i++) { | |
109 | + if (this$1.lookAhead(i).type == type) { | |
110 | + for (var j = 0; j < i; j++) this$1.next() | |
111 | + return true | |
112 | + } | |
113 | + } | |
114 | +}; | |
115 | + | |
116 | +LooseParser.prototype.pushCx = function pushCx () { | |
117 | + this.context.push(this.curIndent) | |
118 | +}; | |
119 | + | |
120 | +LooseParser.prototype.popCx = function popCx () { | |
121 | + this.curIndent = this.context.pop() | |
122 | +}; | |
123 | + | |
124 | +LooseParser.prototype.lineEnd = function lineEnd (pos) { | |
125 | + while (pos < this.input.length && !isNewLine(this.input.charCodeAt(pos))) ++pos | |
126 | + return pos | |
127 | +}; | |
128 | + | |
129 | +LooseParser.prototype.indentationAfter = function indentationAfter (pos) { | |
130 | + var this$1 = this; | |
131 | + | |
132 | + for (var count = 0;; ++pos) { | |
133 | + var ch = this$1.input.charCodeAt(pos) | |
134 | + if (ch === 32) ++count | |
135 | + else if (ch === 9) count += this$1.options.tabSize | |
136 | + else return count | |
137 | + } | |
138 | +}; | |
139 | + | |
140 | +LooseParser.prototype.closes = function closes (closeTok, indent, line, blockHeuristic) { | |
141 | + if (this.tok.type === closeTok || this.tok.type === tokTypes.eof) return true | |
142 | + return line != this.curLineStart && this.curIndent < indent && this.tokenStartsLine() && | |
143 | + (!blockHeuristic || this.nextLineStart >= this.input.length || | |
144 | + this.indentationAfter(this.nextLineStart) < indent) | |
145 | +}; | |
146 | + | |
147 | +LooseParser.prototype.tokenStartsLine = function tokenStartsLine () { | |
148 | + var this$1 = this; | |
149 | + | |
150 | + for (var p = this.tok.start - 1; p >= this.curLineStart; --p) { | |
151 | + var ch = this$1.input.charCodeAt(p) | |
152 | + if (ch !== 9 && ch !== 32) return false | |
153 | + } | |
154 | + return true | |
155 | +}; | |
156 | + | |
157 | +LooseParser.prototype.extend = function extend (name, f) { | |
158 | + this[name] = f(this[name]) | |
159 | +}; | |
160 | + | |
161 | +LooseParser.prototype.loadPlugins = function loadPlugins (pluginConfigs) { | |
162 | + var this$1 = this; | |
163 | + | |
164 | + for (var name in pluginConfigs) { | |
165 | + var plugin = pluginsLoose[name] | |
166 | + if (!plugin) throw new Error("Plugin '" + name + "' not found") | |
167 | + plugin(this$1, pluginConfigs[name]) | |
168 | + } | |
169 | +}; | |
170 | + | |
171 | +var lp = LooseParser.prototype | |
172 | + | |
173 | +function isSpace(ch) { | |
174 | + return (ch < 14 && ch > 8) || ch === 32 || ch === 160 || isNewLine(ch) | |
175 | +} | |
176 | + | |
177 | +lp.next = function() { | |
178 | + var this$1 = this; | |
179 | + | |
180 | + this.last = this.tok | |
181 | + if (this.ahead.length) | |
182 | + this.tok = this.ahead.shift() | |
183 | + else | |
184 | + this.tok = this.readToken() | |
185 | + | |
186 | + if (this.tok.start >= this.nextLineStart) { | |
187 | + while (this.tok.start >= this.nextLineStart) { | |
188 | + this$1.curLineStart = this$1.nextLineStart | |
189 | + this$1.nextLineStart = this$1.lineEnd(this$1.curLineStart) + 1 | |
190 | + } | |
191 | + this.curIndent = this.indentationAfter(this.curLineStart) | |
192 | + } | |
193 | +} | |
194 | + | |
195 | +lp.readToken = function() { | |
196 | + var this$1 = this; | |
197 | + | |
198 | + for (;;) { | |
199 | + try { | |
200 | + this$1.toks.next() | |
201 | + if (this$1.toks.type === tokTypes.dot && | |
202 | + this$1.input.substr(this$1.toks.end, 1) === "." && | |
203 | + this$1.options.ecmaVersion >= 6) { | |
204 | + this$1.toks.end++ | |
205 | + this$1.toks.type = tokTypes.ellipsis | |
206 | + } | |
207 | + return new Token(this$1.toks) | |
208 | + } catch(e) { | |
209 | + if (!(e instanceof SyntaxError)) throw e | |
210 | + | |
211 | + // Try to skip some text, based on the error message, and then continue | |
212 | + var msg = e.message, pos = e.raisedAt, replace = true | |
213 | + if (/unterminated/i.test(msg)) { | |
214 | + pos = this$1.lineEnd(e.pos + 1) | |
215 | + if (/string/.test(msg)) { | |
216 | + replace = {start: e.pos, end: pos, type: tokTypes.string, value: this$1.input.slice(e.pos + 1, pos)} | |
217 | + } else if (/regular expr/i.test(msg)) { | |
218 | + var re = this$1.input.slice(e.pos, pos) | |
219 | + try { re = new RegExp(re) } catch(e) {} | |
220 | + replace = {start: e.pos, end: pos, type: tokTypes.regexp, value: re} | |
221 | + } else if (/template/.test(msg)) { | |
222 | + replace = {start: e.pos, end: pos, | |
223 | + type: tokTypes.template, | |
224 | + value: this$1.input.slice(e.pos, pos)} | |
225 | + } else { | |
226 | + replace = false | |
227 | + } | |
228 | + } else if (/invalid (unicode|regexp|number)|expecting unicode|octal literal|is reserved|directly after number|expected number in radix/i.test(msg)) { | |
229 | + while (pos < this.input.length && !isSpace(this.input.charCodeAt(pos))) ++pos | |
230 | + } else if (/character escape|expected hexadecimal/i.test(msg)) { | |
231 | + while (pos < this.input.length) { | |
232 | + var ch = this$1.input.charCodeAt(pos++) | |
233 | + if (ch === 34 || ch === 39 || isNewLine(ch)) break | |
234 | + } | |
235 | + } else if (/unexpected character/i.test(msg)) { | |
236 | + pos++ | |
237 | + replace = false | |
238 | + } else if (/regular expression/i.test(msg)) { | |
239 | + replace = true | |
240 | + } else { | |
241 | + throw e | |
242 | + } | |
243 | + this$1.resetTo(pos) | |
244 | + if (replace === true) replace = {start: pos, end: pos, type: tokTypes.name, value: "✖"} | |
245 | + if (replace) { | |
246 | + if (this$1.options.locations) | |
247 | + replace.loc = new SourceLocation( | |
248 | + this$1.toks, | |
249 | + getLineInfo(this$1.input, replace.start), | |
250 | + getLineInfo(this$1.input, replace.end)) | |
251 | + return replace | |
252 | + } | |
253 | + } | |
254 | + } | |
255 | +} | |
256 | + | |
257 | +lp.resetTo = function(pos) { | |
258 | + var this$1 = this; | |
259 | + | |
260 | + this.toks.pos = pos | |
261 | + var ch = this.input.charAt(pos - 1) | |
262 | + this.toks.exprAllowed = !ch || /[\[\{\(,;:?\/*=+\-~!|&%^<>]/.test(ch) || | |
263 | + /[enwfd]/.test(ch) && | |
264 | + /\b(keywords|case|else|return|throw|new|in|(instance|type)of|delete|void)$/.test(this.input.slice(pos - 10, pos)) | |
265 | + | |
266 | + if (this.options.locations) { | |
267 | + this.toks.curLine = 1 | |
268 | + this.toks.lineStart = lineBreakG.lastIndex = 0 | |
269 | + var match | |
270 | + while ((match = lineBreakG.exec(this.input)) && match.index < pos) { | |
271 | + ++this$1.toks.curLine | |
272 | + this$1.toks.lineStart = match.index + match[0].length | |
273 | + } | |
274 | + } | |
275 | +} | |
276 | + | |
277 | +lp.lookAhead = function(n) { | |
278 | + var this$1 = this; | |
279 | + | |
280 | + while (n > this.ahead.length) | |
281 | + this$1.ahead.push(this$1.readToken()) | |
282 | + return this.ahead[n - 1] | |
283 | +} | |
284 | + | |
285 | +function isDummy(node) { return node.name == "✖" } | |
286 | + | |
287 | +var lp$1 = LooseParser.prototype | |
288 | + | |
289 | +lp$1.parseTopLevel = function() { | |
290 | + var this$1 = this; | |
291 | + | |
292 | + var node = this.startNodeAt(this.options.locations ? [0, getLineInfo(this.input, 0)] : 0) | |
293 | + node.body = [] | |
294 | + while (this.tok.type !== tokTypes.eof) node.body.push(this$1.parseStatement()) | |
295 | + this.last = this.tok | |
296 | + if (this.options.ecmaVersion >= 6) { | |
297 | + node.sourceType = this.options.sourceType | |
298 | + } | |
299 | + return this.finishNode(node, "Program") | |
300 | +} | |
301 | + | |
302 | +lp$1.parseStatement = function() { | |
303 | + var this$1 = this; | |
304 | + | |
305 | + var starttype = this.tok.type, node = this.startNode(), kind | |
306 | + | |
307 | + if (this.toks.isLet()) { | |
308 | + starttype = tokTypes._var | |
309 | + kind = "let" | |
310 | + } | |
311 | + | |
312 | + switch (starttype) { | |
313 | + case tokTypes._break: case tokTypes._continue: | |
314 | + this.next() | |
315 | + var isBreak = starttype === tokTypes._break | |
316 | + if (this.semicolon() || this.canInsertSemicolon()) { | |
317 | + node.label = null | |
318 | + } else { | |
319 | + node.label = this.tok.type === tokTypes.name ? this.parseIdent() : null | |
320 | + this.semicolon() | |
321 | + } | |
322 | + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement") | |
323 | + | |
324 | + case tokTypes._debugger: | |
325 | + this.next() | |
326 | + this.semicolon() | |
327 | + return this.finishNode(node, "DebuggerStatement") | |
328 | + | |
329 | + case tokTypes._do: | |
330 | + this.next() | |
331 | + node.body = this.parseStatement() | |
332 | + node.test = this.eat(tokTypes._while) ? this.parseParenExpression() : this.dummyIdent() | |
333 | + this.semicolon() | |
334 | + return this.finishNode(node, "DoWhileStatement") | |
335 | + | |
336 | + case tokTypes._for: | |
337 | + this.next() | |
338 | + this.pushCx() | |
339 | + this.expect(tokTypes.parenL) | |
340 | + if (this.tok.type === tokTypes.semi) return this.parseFor(node, null) | |
341 | + var isLet = this.toks.isLet() | |
342 | + if (isLet || this.tok.type === tokTypes._var || this.tok.type === tokTypes._const) { | |
343 | + var init$1 = this.parseVar(true, isLet ? "let" : this.tok.value) | |
344 | + if (init$1.declarations.length === 1 && (this.tok.type === tokTypes._in || this.isContextual("of"))) { | |
345 | + return this.parseForIn(node, init$1) | |
346 | + } | |
347 | + return this.parseFor(node, init$1) | |
348 | + } | |
349 | + var init = this.parseExpression(true) | |
350 | + if (this.tok.type === tokTypes._in || this.isContextual("of")) | |
351 | + return this.parseForIn(node, this.toAssignable(init)) | |
352 | + return this.parseFor(node, init) | |
353 | + | |
354 | + case tokTypes._function: | |
355 | + this.next() | |
356 | + return this.parseFunction(node, true) | |
357 | + | |
358 | + case tokTypes._if: | |
359 | + this.next() | |
360 | + node.test = this.parseParenExpression() | |
361 | + node.consequent = this.parseStatement() | |
362 | + node.alternate = this.eat(tokTypes._else) ? this.parseStatement() : null | |
363 | + return this.finishNode(node, "IfStatement") | |
364 | + | |
365 | + case tokTypes._return: | |
366 | + this.next() | |
367 | + if (this.eat(tokTypes.semi) || this.canInsertSemicolon()) node.argument = null | |
368 | + else { node.argument = this.parseExpression(); this.semicolon() } | |
369 | + return this.finishNode(node, "ReturnStatement") | |
370 | + | |
371 | + case tokTypes._switch: | |
372 | + var blockIndent = this.curIndent, line = this.curLineStart | |
373 | + this.next() | |
374 | + node.discriminant = this.parseParenExpression() | |
375 | + node.cases = [] | |
376 | + this.pushCx() | |
377 | + this.expect(tokTypes.braceL) | |
378 | + | |
379 | + var cur | |
380 | + while (!this.closes(tokTypes.braceR, blockIndent, line, true)) { | |
381 | + if (this$1.tok.type === tokTypes._case || this$1.tok.type === tokTypes._default) { | |
382 | + var isCase = this$1.tok.type === tokTypes._case | |
383 | + if (cur) this$1.finishNode(cur, "SwitchCase") | |
384 | + node.cases.push(cur = this$1.startNode()) | |
385 | + cur.consequent = [] | |
386 | + this$1.next() | |
387 | + if (isCase) cur.test = this$1.parseExpression() | |
388 | + else cur.test = null | |
389 | + this$1.expect(tokTypes.colon) | |
390 | + } else { | |
391 | + if (!cur) { | |
392 | + node.cases.push(cur = this$1.startNode()) | |
393 | + cur.consequent = [] | |
394 | + cur.test = null | |
395 | + } | |
396 | + cur.consequent.push(this$1.parseStatement()) | |
397 | + } | |
398 | + } | |
399 | + if (cur) this.finishNode(cur, "SwitchCase") | |
400 | + this.popCx() | |
401 | + this.eat(tokTypes.braceR) | |
402 | + return this.finishNode(node, "SwitchStatement") | |
403 | + | |
404 | + case tokTypes._throw: | |
405 | + this.next() | |
406 | + node.argument = this.parseExpression() | |
407 | + this.semicolon() | |
408 | + return this.finishNode(node, "ThrowStatement") | |
409 | + | |
410 | + case tokTypes._try: | |
411 | + this.next() | |
412 | + node.block = this.parseBlock() | |
413 | + node.handler = null | |
414 | + if (this.tok.type === tokTypes._catch) { | |
415 | + var clause = this.startNode() | |
416 | + this.next() | |
417 | + this.expect(tokTypes.parenL) | |
418 | + clause.param = this.toAssignable(this.parseExprAtom(), true) | |
419 | + this.expect(tokTypes.parenR) | |
420 | + clause.body = this.parseBlock() | |
421 | + node.handler = this.finishNode(clause, "CatchClause") | |
422 | + } | |
423 | + node.finalizer = this.eat(tokTypes._finally) ? this.parseBlock() : null | |
424 | + if (!node.handler && !node.finalizer) return node.block | |
425 | + return this.finishNode(node, "TryStatement") | |
426 | + | |
427 | + case tokTypes._var: | |
428 | + case tokTypes._const: | |
429 | + return this.parseVar(false, kind || this.tok.value) | |
430 | + | |
431 | + case tokTypes._while: | |
432 | + this.next() | |
433 | + node.test = this.parseParenExpression() | |
434 | + node.body = this.parseStatement() | |
435 | + return this.finishNode(node, "WhileStatement") | |
436 | + | |
437 | + case tokTypes._with: | |
438 | + this.next() | |
439 | + node.object = this.parseParenExpression() | |
440 | + node.body = this.parseStatement() | |
441 | + return this.finishNode(node, "WithStatement") | |
442 | + | |
443 | + case tokTypes.braceL: | |
444 | + return this.parseBlock() | |
445 | + | |
446 | + case tokTypes.semi: | |
447 | + this.next() | |
448 | + return this.finishNode(node, "EmptyStatement") | |
449 | + | |
450 | + case tokTypes._class: | |
451 | + return this.parseClass(true) | |
452 | + | |
453 | + case tokTypes._import: | |
454 | + return this.parseImport() | |
455 | + | |
456 | + case tokTypes._export: | |
457 | + return this.parseExport() | |
458 | + | |
459 | + default: | |
460 | + if (this.toks.isAsyncFunction()) { | |
461 | + this.next() | |
462 | + this.next() | |
463 | + return this.parseFunction(node, true, true) | |
464 | + } | |
465 | + var expr = this.parseExpression() | |
466 | + if (isDummy(expr)) { | |
467 | + this.next() | |
468 | + if (this.tok.type === tokTypes.eof) return this.finishNode(node, "EmptyStatement") | |
469 | + return this.parseStatement() | |
470 | + } else if (starttype === tokTypes.name && expr.type === "Identifier" && this.eat(tokTypes.colon)) { | |
471 | + node.body = this.parseStatement() | |
472 | + node.label = expr | |
473 | + return this.finishNode(node, "LabeledStatement") | |
474 | + } else { | |
475 | + node.expression = expr | |
476 | + this.semicolon() | |
477 | + return this.finishNode(node, "ExpressionStatement") | |
478 | + } | |
479 | + } | |
480 | +} | |
481 | + | |
482 | +lp$1.parseBlock = function() { | |
483 | + var this$1 = this; | |
484 | + | |
485 | + var node = this.startNode() | |
486 | + this.pushCx() | |
487 | + this.expect(tokTypes.braceL) | |
488 | + var blockIndent = this.curIndent, line = this.curLineStart | |
489 | + node.body = [] | |
490 | + while (!this.closes(tokTypes.braceR, blockIndent, line, true)) | |
491 | + node.body.push(this$1.parseStatement()) | |
492 | + this.popCx() | |
493 | + this.eat(tokTypes.braceR) | |
494 | + return this.finishNode(node, "BlockStatement") | |
495 | +} | |
496 | + | |
497 | +lp$1.parseFor = function(node, init) { | |
498 | + node.init = init | |
499 | + node.test = node.update = null | |
500 | + if (this.eat(tokTypes.semi) && this.tok.type !== tokTypes.semi) node.test = this.parseExpression() | |
501 | + if (this.eat(tokTypes.semi) && this.tok.type !== tokTypes.parenR) node.update = this.parseExpression() | |
502 | + this.popCx() | |
503 | + this.expect(tokTypes.parenR) | |
504 | + node.body = this.parseStatement() | |
505 | + return this.finishNode(node, "ForStatement") | |
506 | +} | |
507 | + | |
508 | +lp$1.parseForIn = function(node, init) { | |
509 | + var type = this.tok.type === tokTypes._in ? "ForInStatement" : "ForOfStatement" | |
510 | + this.next() | |
511 | + node.left = init | |
512 | + node.right = this.parseExpression() | |
513 | + this.popCx() | |
514 | + this.expect(tokTypes.parenR) | |
515 | + node.body = this.parseStatement() | |
516 | + return this.finishNode(node, type) | |
517 | +} | |
518 | + | |
519 | +lp$1.parseVar = function(noIn, kind) { | |
520 | + var this$1 = this; | |
521 | + | |
522 | + var node = this.startNode() | |
523 | + node.kind = kind | |
524 | + this.next() | |
525 | + node.declarations = [] | |
526 | + do { | |
527 | + var decl = this$1.startNode() | |
528 | + decl.id = this$1.options.ecmaVersion >= 6 ? this$1.toAssignable(this$1.parseExprAtom(), true) : this$1.parseIdent() | |
529 | + decl.init = this$1.eat(tokTypes.eq) ? this$1.parseMaybeAssign(noIn) : null | |
530 | + node.declarations.push(this$1.finishNode(decl, "VariableDeclarator")) | |
531 | + } while (this.eat(tokTypes.comma)) | |
532 | + if (!node.declarations.length) { | |
533 | + var decl$1 = this.startNode() | |
534 | + decl$1.id = this.dummyIdent() | |
535 | + node.declarations.push(this.finishNode(decl$1, "VariableDeclarator")) | |
536 | + } | |
537 | + if (!noIn) this.semicolon() | |
538 | + return this.finishNode(node, "VariableDeclaration") | |
539 | +} | |
540 | + | |
541 | +lp$1.parseClass = function(isStatement) { | |
542 | + var this$1 = this; | |
543 | + | |
544 | + var node = this.startNode() | |
545 | + this.next() | |
546 | + if (isStatement == null) isStatement = this.tok.type === tokTypes.name | |
547 | + if (this.tok.type === tokTypes.name) node.id = this.parseIdent() | |
548 | + else if (isStatement) node.id = this.dummyIdent() | |
549 | + else node.id = null | |
550 | + node.superClass = this.eat(tokTypes._extends) ? this.parseExpression() : null | |
551 | + node.body = this.startNode() | |
552 | + node.body.body = [] | |
553 | + this.pushCx() | |
554 | + var indent = this.curIndent + 1, line = this.curLineStart | |
555 | + this.eat(tokTypes.braceL) | |
556 | + if (this.curIndent + 1 < indent) { indent = this.curIndent; line = this.curLineStart } | |
557 | + while (!this.closes(tokTypes.braceR, indent, line)) { | |
558 | + if (this$1.semicolon()) continue | |
559 | + var method = this$1.startNode(), isGenerator, isAsync | |
560 | + if (this$1.options.ecmaVersion >= 6) { | |
561 | + method.static = false | |
562 | + isGenerator = this$1.eat(tokTypes.star) | |
563 | + } | |
564 | + this$1.parsePropertyName(method) | |
565 | + if (isDummy(method.key)) { if (isDummy(this$1.parseMaybeAssign())) this$1.next(); this$1.eat(tokTypes.comma); continue } | |
566 | + if (method.key.type === "Identifier" && !method.computed && method.key.name === "static" && | |
567 | + (this$1.tok.type != tokTypes.parenL && this$1.tok.type != tokTypes.braceL)) { | |
568 | + method.static = true | |
569 | + isGenerator = this$1.eat(tokTypes.star) | |
570 | + this$1.parsePropertyName(method) | |
571 | + } else { | |
572 | + method.static = false | |
573 | + } | |
574 | + if (!method.computed && | |
575 | + method.key.type === "Identifier" && method.key.name === "async" && this$1.tok.type !== tokTypes.parenL && | |
576 | + !this$1.canInsertSemicolon()) { | |
577 | + this$1.parsePropertyName(method) | |
578 | + isAsync = true | |
579 | + } else { | |
580 | + isAsync = false | |
581 | + } | |
582 | + if (this$1.options.ecmaVersion >= 5 && method.key.type === "Identifier" && | |
583 | + !method.computed && (method.key.name === "get" || method.key.name === "set") && | |
584 | + this$1.tok.type !== tokTypes.parenL && this$1.tok.type !== tokTypes.braceL) { | |
585 | + method.kind = method.key.name | |
586 | + this$1.parsePropertyName(method) | |
587 | + method.value = this$1.parseMethod(false) | |
588 | + } else { | |
589 | + if (!method.computed && !method.static && !isGenerator && !isAsync && ( | |
590 | + method.key.type === "Identifier" && method.key.name === "constructor" || | |
591 | + method.key.type === "Literal" && method.key.value === "constructor")) { | |
592 | + method.kind = "constructor" | |
593 | + } else { | |
594 | + method.kind = "method" | |
595 | + } | |
596 | + method.value = this$1.parseMethod(isGenerator, isAsync) | |
597 | + } | |
598 | + node.body.body.push(this$1.finishNode(method, "MethodDefinition")) | |
599 | + } | |
600 | + this.popCx() | |
601 | + if (!this.eat(tokTypes.braceR)) { | |
602 | + // If there is no closing brace, make the node span to the start | |
603 | + // of the next token (this is useful for Tern) | |
604 | + this.last.end = this.tok.start | |
605 | + if (this.options.locations) this.last.loc.end = this.tok.loc.start | |
606 | + } | |
607 | + this.semicolon() | |
608 | + this.finishNode(node.body, "ClassBody") | |
609 | + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression") | |
610 | +} | |
611 | + | |
612 | +lp$1.parseFunction = function(node, isStatement, isAsync) { | |
613 | + var oldInAsync = this.inAsync | |
614 | + this.initFunction(node) | |
615 | + if (this.options.ecmaVersion >= 6) { | |
616 | + node.generator = this.eat(tokTypes.star) | |
617 | + } | |
618 | + if (this.options.ecmaVersion >= 8) { | |
619 | + node.async = !!isAsync | |
620 | + } | |
621 | + if (isStatement == null) isStatement = this.tok.type === tokTypes.name | |
622 | + if (this.tok.type === tokTypes.name) node.id = this.parseIdent() | |
623 | + else if (isStatement) node.id = this.dummyIdent() | |
624 | + this.inAsync = node.async | |
625 | + node.params = this.parseFunctionParams() | |
626 | + node.body = this.parseBlock() | |
627 | + this.inAsync = oldInAsync | |
628 | + return this.finishNode(node, isStatement ? "FunctionDeclaration" : "FunctionExpression") | |
629 | +} | |
630 | + | |
631 | +lp$1.parseExport = function() { | |
632 | + var node = this.startNode() | |
633 | + this.next() | |
634 | + if (this.eat(tokTypes.star)) { | |
635 | + node.source = this.eatContextual("from") ? this.parseExprAtom() : this.dummyString() | |
636 | + return this.finishNode(node, "ExportAllDeclaration") | |
637 | + } | |
638 | + if (this.eat(tokTypes._default)) { | |
639 | + // export default (function foo() {}) // This is FunctionExpression. | |
640 | + var isAsync | |
641 | + if (this.tok.type === tokTypes._function || (isAsync = this.toks.isAsyncFunction())) { | |
642 | + var fNode = this.startNode() | |
643 | + this.next() | |
644 | + if (isAsync) this.next() | |
645 | + node.declaration = this.parseFunction(fNode, null, isAsync) | |
646 | + } else if (this.tok.type === tokTypes._class) { | |
647 | + node.declaration = this.parseClass(null) | |
648 | + } else { | |
649 | + node.declaration = this.parseMaybeAssign() | |
650 | + this.semicolon() | |
651 | + } | |
652 | + return this.finishNode(node, "ExportDefaultDeclaration") | |
653 | + } | |
654 | + if (this.tok.type.keyword || this.toks.isLet() || this.toks.isAsyncFunction()) { | |
655 | + node.declaration = this.parseStatement() | |
656 | + node.specifiers = [] | |
657 | + node.source = null | |
658 | + } else { | |
659 | + node.declaration = null | |
660 | + node.specifiers = this.parseExportSpecifierList() | |
661 | + node.source = this.eatContextual("from") ? this.parseExprAtom() : null | |
662 | + this.semicolon() | |
663 | + } | |
664 | + return this.finishNode(node, "ExportNamedDeclaration") | |
665 | +} | |
666 | + | |
667 | +lp$1.parseImport = function() { | |
668 | + var node = this.startNode() | |
669 | + this.next() | |
670 | + if (this.tok.type === tokTypes.string) { | |
671 | + node.specifiers = [] | |
672 | + node.source = this.parseExprAtom() | |
673 | + node.kind = '' | |
674 | + } else { | |
675 | + var elt | |
676 | + if (this.tok.type === tokTypes.name && this.tok.value !== "from") { | |
677 | + elt = this.startNode() | |
678 | + elt.local = this.parseIdent() | |
679 | + this.finishNode(elt, "ImportDefaultSpecifier") | |
680 | + this.eat(tokTypes.comma) | |
681 | + } | |
682 | + node.specifiers = this.parseImportSpecifierList() | |
683 | + node.source = this.eatContextual("from") && this.tok.type == tokTypes.string ? this.parseExprAtom() : this.dummyString() | |
684 | + if (elt) node.specifiers.unshift(elt) | |
685 | + } | |
686 | + this.semicolon() | |
687 | + return this.finishNode(node, "ImportDeclaration") | |
688 | +} | |
689 | + | |
690 | +lp$1.parseImportSpecifierList = function() { | |
691 | + var this$1 = this; | |
692 | + | |
693 | + var elts = [] | |
694 | + if (this.tok.type === tokTypes.star) { | |
695 | + var elt = this.startNode() | |
696 | + this.next() | |
697 | + elt.local = this.eatContextual("as") ? this.parseIdent() : this.dummyIdent() | |
698 | + elts.push(this.finishNode(elt, "ImportNamespaceSpecifier")) | |
699 | + } else { | |
700 | + var indent = this.curIndent, line = this.curLineStart, continuedLine = this.nextLineStart | |
701 | + this.pushCx() | |
702 | + this.eat(tokTypes.braceL) | |
703 | + if (this.curLineStart > continuedLine) continuedLine = this.curLineStart | |
704 | + while (!this.closes(tokTypes.braceR, indent + (this.curLineStart <= continuedLine ? 1 : 0), line)) { | |
705 | + var elt$1 = this$1.startNode() | |
706 | + if (this$1.eat(tokTypes.star)) { | |
707 | + elt$1.local = this$1.eatContextual("as") ? this$1.parseIdent() : this$1.dummyIdent() | |
708 | + this$1.finishNode(elt$1, "ImportNamespaceSpecifier") | |
709 | + } else { | |
710 | + if (this$1.isContextual("from")) break | |
711 | + elt$1.imported = this$1.parseIdent() | |
712 | + if (isDummy(elt$1.imported)) break | |
713 | + elt$1.local = this$1.eatContextual("as") ? this$1.parseIdent() : elt$1.imported | |
714 | + this$1.finishNode(elt$1, "ImportSpecifier") | |
715 | + } | |
716 | + elts.push(elt$1) | |
717 | + this$1.eat(tokTypes.comma) | |
718 | + } | |
719 | + this.eat(tokTypes.braceR) | |
720 | + this.popCx() | |
721 | + } | |
722 | + return elts | |
723 | +} | |
724 | + | |
725 | +lp$1.parseExportSpecifierList = function() { | |
726 | + var this$1 = this; | |
727 | + | |
728 | + var elts = [] | |
729 | + var indent = this.curIndent, line = this.curLineStart, continuedLine = this.nextLineStart | |
730 | + this.pushCx() | |
731 | + this.eat(tokTypes.braceL) | |
732 | + if (this.curLineStart > continuedLine) continuedLine = this.curLineStart | |
733 | + while (!this.closes(tokTypes.braceR, indent + (this.curLineStart <= continuedLine ? 1 : 0), line)) { | |
734 | + if (this$1.isContextual("from")) break | |
735 | + var elt = this$1.startNode() | |
736 | + elt.local = this$1.parseIdent() | |
737 | + if (isDummy(elt.local)) break | |
738 | + elt.exported = this$1.eatContextual("as") ? this$1.parseIdent() : elt.local | |
739 | + this$1.finishNode(elt, "ExportSpecifier") | |
740 | + elts.push(elt) | |
741 | + this$1.eat(tokTypes.comma) | |
742 | + } | |
743 | + this.eat(tokTypes.braceR) | |
744 | + this.popCx() | |
745 | + return elts | |
746 | +} | |
747 | + | |
748 | +var lp$2 = LooseParser.prototype | |
749 | + | |
750 | +lp$2.checkLVal = function(expr) { | |
751 | + if (!expr) return expr | |
752 | + switch (expr.type) { | |
753 | + case "Identifier": | |
754 | + case "MemberExpression": | |
755 | + return expr | |
756 | + | |
757 | + case "ParenthesizedExpression": | |
758 | + expr.expression = this.checkLVal(expr.expression) | |
759 | + return expr | |
760 | + | |
761 | + default: | |
762 | + return this.dummyIdent() | |
763 | + } | |
764 | +} | |
765 | + | |
766 | +lp$2.parseExpression = function(noIn) { | |
767 | + var this$1 = this; | |
768 | + | |
769 | + var start = this.storeCurrentPos() | |
770 | + var expr = this.parseMaybeAssign(noIn) | |
771 | + if (this.tok.type === tokTypes.comma) { | |
772 | + var node = this.startNodeAt(start) | |
773 | + node.expressions = [expr] | |
774 | + while (this.eat(tokTypes.comma)) node.expressions.push(this$1.parseMaybeAssign(noIn)) | |
775 | + return this.finishNode(node, "SequenceExpression") | |
776 | + } | |
777 | + return expr | |
778 | +} | |
779 | + | |
780 | +lp$2.parseParenExpression = function() { | |
781 | + this.pushCx() | |
782 | + this.expect(tokTypes.parenL) | |
783 | + var val = this.parseExpression() | |
784 | + this.popCx() | |
785 | + this.expect(tokTypes.parenR) | |
786 | + return val | |
787 | +} | |
788 | + | |
789 | +lp$2.parseMaybeAssign = function(noIn) { | |
790 | + if (this.toks.isContextual("yield")) { | |
791 | + var node = this.startNode() | |
792 | + this.next() | |
793 | + if (this.semicolon() || this.canInsertSemicolon() || (this.tok.type != tokTypes.star && !this.tok.type.startsExpr)) { | |
794 | + node.delegate = false | |
795 | + node.argument = null | |
796 | + } else { | |
797 | + node.delegate = this.eat(tokTypes.star) | |
798 | + node.argument = this.parseMaybeAssign() | |
799 | + } | |
800 | + return this.finishNode(node, "YieldExpression") | |
801 | + } | |
802 | + | |
803 | + var start = this.storeCurrentPos() | |
804 | + var left = this.parseMaybeConditional(noIn) | |
805 | + if (this.tok.type.isAssign) { | |
806 | + var node$1 = this.startNodeAt(start) | |
807 | + node$1.operator = this.tok.value | |
808 | + node$1.left = this.tok.type === tokTypes.eq ? this.toAssignable(left) : this.checkLVal(left) | |
809 | + this.next() | |
810 | + node$1.right = this.parseMaybeAssign(noIn) | |
811 | + return this.finishNode(node$1, "AssignmentExpression") | |
812 | + } | |
813 | + return left | |
814 | +} | |
815 | + | |
816 | +lp$2.parseMaybeConditional = function(noIn) { | |
817 | + var start = this.storeCurrentPos() | |
818 | + var expr = this.parseExprOps(noIn) | |
819 | + if (this.eat(tokTypes.question)) { | |
820 | + var node = this.startNodeAt(start) | |
821 | + node.test = expr | |
822 | + node.consequent = this.parseMaybeAssign() | |
823 | + node.alternate = this.expect(tokTypes.colon) ? this.parseMaybeAssign(noIn) : this.dummyIdent() | |
824 | + return this.finishNode(node, "ConditionalExpression") | |
825 | + } | |
826 | + return expr | |
827 | +} | |
828 | + | |
829 | +lp$2.parseExprOps = function(noIn) { | |
830 | + var start = this.storeCurrentPos() | |
831 | + var indent = this.curIndent, line = this.curLineStart | |
832 | + return this.parseExprOp(this.parseMaybeUnary(false), start, -1, noIn, indent, line) | |
833 | +} | |
834 | + | |
835 | +lp$2.parseExprOp = function(left, start, minPrec, noIn, indent, line) { | |
836 | + if (this.curLineStart != line && this.curIndent < indent && this.tokenStartsLine()) return left | |
837 | + var prec = this.tok.type.binop | |
838 | + if (prec != null && (!noIn || this.tok.type !== tokTypes._in)) { | |
839 | + if (prec > minPrec) { | |
840 | + var node = this.startNodeAt(start) | |
841 | + node.left = left | |
842 | + node.operator = this.tok.value | |
843 | + this.next() | |
844 | + if (this.curLineStart != line && this.curIndent < indent && this.tokenStartsLine()) { | |
845 | + node.right = this.dummyIdent() | |
846 | + } else { | |
847 | + var rightStart = this.storeCurrentPos() | |
848 | + node.right = this.parseExprOp(this.parseMaybeUnary(false), rightStart, prec, noIn, indent, line) | |
849 | + } | |
850 | + this.finishNode(node, /&&|\|\|/.test(node.operator) ? "LogicalExpression" : "BinaryExpression") | |
851 | + return this.parseExprOp(node, start, minPrec, noIn, indent, line) | |
852 | + } | |
853 | + } | |
854 | + return left | |
855 | +} | |
856 | + | |
857 | +lp$2.parseMaybeUnary = function(sawUnary) { | |
858 | + var this$1 = this; | |
859 | + | |
860 | + var start = this.storeCurrentPos(), expr | |
861 | + if (this.options.ecmaVersion >= 8 && this.inAsync && this.toks.isContextual("await")) { | |
862 | + expr = this.parseAwait() | |
863 | + sawUnary = true | |
864 | + } else if (this.tok.type.prefix) { | |
865 | + var node = this.startNode(), update = this.tok.type === tokTypes.incDec | |
866 | + if (!update) sawUnary = true | |
867 | + node.operator = this.tok.value | |
868 | + node.prefix = true | |
869 | + this.next() | |
870 | + node.argument = this.parseMaybeUnary(true) | |
871 | + if (update) node.argument = this.checkLVal(node.argument) | |
872 | + expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression") | |
873 | + } else if (this.tok.type === tokTypes.ellipsis) { | |
874 | + var node$1 = this.startNode() | |
875 | + this.next() | |
876 | + node$1.argument = this.parseMaybeUnary(sawUnary) | |
877 | + expr = this.finishNode(node$1, "SpreadElement") | |
878 | + } else { | |
879 | + expr = this.parseExprSubscripts() | |
880 | + while (this.tok.type.postfix && !this.canInsertSemicolon()) { | |
881 | + var node$2 = this$1.startNodeAt(start) | |
882 | + node$2.operator = this$1.tok.value | |
883 | + node$2.prefix = false | |
884 | + node$2.argument = this$1.checkLVal(expr) | |
885 | + this$1.next() | |
886 | + expr = this$1.finishNode(node$2, "UpdateExpression") | |
887 | + } | |
888 | + } | |
889 | + | |
890 | + if (!sawUnary && this.eat(tokTypes.starstar)) { | |
891 | + var node$3 = this.startNodeAt(start) | |
892 | + node$3.operator = "**" | |
893 | + node$3.left = expr | |
894 | + node$3.right = this.parseMaybeUnary(false) | |
895 | + return this.finishNode(node$3, "BinaryExpression") | |
896 | + } | |
897 | + | |
898 | + return expr | |
899 | +} | |
900 | + | |
901 | +lp$2.parseExprSubscripts = function() { | |
902 | + var start = this.storeCurrentPos() | |
903 | + return this.parseSubscripts(this.parseExprAtom(), start, false, this.curIndent, this.curLineStart) | |
904 | +} | |
905 | + | |
906 | +lp$2.parseSubscripts = function(base, start, noCalls, startIndent, line) { | |
907 | + var this$1 = this; | |
908 | + | |
909 | + for (;;) { | |
910 | + if (this$1.curLineStart != line && this$1.curIndent <= startIndent && this$1.tokenStartsLine()) { | |
911 | + if (this$1.tok.type == tokTypes.dot && this$1.curIndent == startIndent) | |
912 | + --startIndent | |
913 | + else | |
914 | + return base | |
915 | + } | |
916 | + | |
917 | + var maybeAsyncArrow = base.type === "Identifier" && base.name === "async" && !this$1.canInsertSemicolon() | |
918 | + | |
919 | + if (this$1.eat(tokTypes.dot)) { | |
920 | + var node = this$1.startNodeAt(start) | |
921 | + node.object = base | |
922 | + if (this$1.curLineStart != line && this$1.curIndent <= startIndent && this$1.tokenStartsLine()) | |
923 | + node.property = this$1.dummyIdent() | |
924 | + else | |
925 | + node.property = this$1.parsePropertyAccessor() || this$1.dummyIdent() | |
926 | + node.computed = false | |
927 | + base = this$1.finishNode(node, "MemberExpression") | |
928 | + } else if (this$1.tok.type == tokTypes.bracketL) { | |
929 | + this$1.pushCx() | |
930 | + this$1.next() | |
931 | + var node$1 = this$1.startNodeAt(start) | |
932 | + node$1.object = base | |
933 | + node$1.property = this$1.parseExpression() | |
934 | + node$1.computed = true | |
935 | + this$1.popCx() | |
936 | + this$1.expect(tokTypes.bracketR) | |
937 | + base = this$1.finishNode(node$1, "MemberExpression") | |
938 | + } else if (!noCalls && this$1.tok.type == tokTypes.parenL) { | |
939 | + var exprList = this$1.parseExprList(tokTypes.parenR) | |
940 | + if (maybeAsyncArrow && this$1.eat(tokTypes.arrow)) | |
941 | + return this$1.parseArrowExpression(this$1.startNodeAt(start), exprList, true) | |
942 | + var node$2 = this$1.startNodeAt(start) | |
943 | + node$2.callee = base | |
944 | + node$2.arguments = exprList | |
945 | + base = this$1.finishNode(node$2, "CallExpression") | |
946 | + } else if (this$1.tok.type == tokTypes.backQuote) { | |
947 | + var node$3 = this$1.startNodeAt(start) | |
948 | + node$3.tag = base | |
949 | + node$3.quasi = this$1.parseTemplate() | |
950 | + base = this$1.finishNode(node$3, "TaggedTemplateExpression") | |
951 | + } else { | |
952 | + return base | |
953 | + } | |
954 | + } | |
955 | +} | |
956 | + | |
957 | +lp$2.parseExprAtom = function() { | |
958 | + var node | |
959 | + switch (this.tok.type) { | |
960 | + case tokTypes._this: | |
961 | + case tokTypes._super: | |
962 | + var type = this.tok.type === tokTypes._this ? "ThisExpression" : "Super" | |
963 | + node = this.startNode() | |
964 | + this.next() | |
965 | + return this.finishNode(node, type) | |
966 | + | |
967 | + case tokTypes.name: | |
968 | + var start = this.storeCurrentPos() | |
969 | + var id = this.parseIdent() | |
970 | + var isAsync = false | |
971 | + if (id.name === "async" && !this.canInsertSemicolon()) { | |
972 | + if (this.eat(tokTypes._function)) | |
973 | + return this.parseFunction(this.startNodeAt(start), false, true) | |
974 | + if (this.tok.type === tokTypes.name) { | |
975 | + id = this.parseIdent() | |
976 | + isAsync = true | |
977 | + } | |
978 | + } | |
979 | + return this.eat(tokTypes.arrow) ? this.parseArrowExpression(this.startNodeAt(start), [id], isAsync) : id | |
980 | + | |
981 | + case tokTypes.regexp: | |
982 | + node = this.startNode() | |
983 | + var val = this.tok.value | |
984 | + node.regex = {pattern: val.pattern, flags: val.flags} | |
985 | + node.value = val.value | |
986 | + node.raw = this.input.slice(this.tok.start, this.tok.end) | |
987 | + this.next() | |
988 | + return this.finishNode(node, "Literal") | |
989 | + | |
990 | + case tokTypes.num: case tokTypes.string: | |
991 | + node = this.startNode() | |
992 | + node.value = this.tok.value | |
993 | + node.raw = this.input.slice(this.tok.start, this.tok.end) | |
994 | + this.next() | |
995 | + return this.finishNode(node, "Literal") | |
996 | + | |
997 | + case tokTypes._null: case tokTypes._true: case tokTypes._false: | |
998 | + node = this.startNode() | |
999 | + node.value = this.tok.type === tokTypes._null ? null : this.tok.type === tokTypes._true | |
1000 | + node.raw = this.tok.type.keyword | |
1001 | + this.next() | |
1002 | + return this.finishNode(node, "Literal") | |
1003 | + | |
1004 | + case tokTypes.parenL: | |
1005 | + var parenStart = this.storeCurrentPos() | |
1006 | + this.next() | |
1007 | + var inner = this.parseExpression() | |
1008 | + this.expect(tokTypes.parenR) | |
1009 | + if (this.eat(tokTypes.arrow)) { | |
1010 | + // (a,)=>a // SequenceExpression makes dummy in the last hole. Drop the dummy. | |
1011 | + var params = inner.expressions || [inner] | |
1012 | + if (params.length && isDummy(params[params.length - 1])) | |
1013 | + params.pop() | |
1014 | + return this.parseArrowExpression(this.startNodeAt(parenStart), params) | |
1015 | + } | |
1016 | + if (this.options.preserveParens) { | |
1017 | + var par = this.startNodeAt(parenStart) | |
1018 | + par.expression = inner | |
1019 | + inner = this.finishNode(par, "ParenthesizedExpression") | |
1020 | + } | |
1021 | + return inner | |
1022 | + | |
1023 | + case tokTypes.bracketL: | |
1024 | + node = this.startNode() | |
1025 | + node.elements = this.parseExprList(tokTypes.bracketR, true) | |
1026 | + return this.finishNode(node, "ArrayExpression") | |
1027 | + | |
1028 | + case tokTypes.braceL: | |
1029 | + return this.parseObj() | |
1030 | + | |
1031 | + case tokTypes._class: | |
1032 | + return this.parseClass(false) | |
1033 | + | |
1034 | + case tokTypes._function: | |
1035 | + node = this.startNode() | |
1036 | + this.next() | |
1037 | + return this.parseFunction(node, false) | |
1038 | + | |
1039 | + case tokTypes._new: | |
1040 | + return this.parseNew() | |
1041 | + | |
1042 | + case tokTypes.backQuote: | |
1043 | + return this.parseTemplate() | |
1044 | + | |
1045 | + default: | |
1046 | + return this.dummyIdent() | |
1047 | + } | |
1048 | +} | |
1049 | + | |
1050 | +lp$2.parseNew = function() { | |
1051 | + var node = this.startNode(), startIndent = this.curIndent, line = this.curLineStart | |
1052 | + var meta = this.parseIdent(true) | |
1053 | + if (this.options.ecmaVersion >= 6 && this.eat(tokTypes.dot)) { | |
1054 | + node.meta = meta | |
1055 | + node.property = this.parseIdent(true) | |
1056 | + return this.finishNode(node, "MetaProperty") | |
1057 | + } | |
1058 | + var start = this.storeCurrentPos() | |
1059 | + node.callee = this.parseSubscripts(this.parseExprAtom(), start, true, startIndent, line) | |
1060 | + if (this.tok.type == tokTypes.parenL) { | |
1061 | + node.arguments = this.parseExprList(tokTypes.parenR) | |
1062 | + } else { | |
1063 | + node.arguments = [] | |
1064 | + } | |
1065 | + return this.finishNode(node, "NewExpression") | |
1066 | +} | |
1067 | + | |
1068 | +lp$2.parseTemplateElement = function() { | |
1069 | + var elem = this.startNode() | |
1070 | + elem.value = { | |
1071 | + raw: this.input.slice(this.tok.start, this.tok.end).replace(/\r\n?/g, '\n'), | |
1072 | + cooked: this.tok.value | |
1073 | + } | |
1074 | + this.next() | |
1075 | + elem.tail = this.tok.type === tokTypes.backQuote | |
1076 | + return this.finishNode(elem, "TemplateElement") | |
1077 | +} | |
1078 | + | |
1079 | +lp$2.parseTemplate = function() { | |
1080 | + var this$1 = this; | |
1081 | + | |
1082 | + var node = this.startNode() | |
1083 | + this.next() | |
1084 | + node.expressions = [] | |
1085 | + var curElt = this.parseTemplateElement() | |
1086 | + node.quasis = [curElt] | |
1087 | + while (!curElt.tail) { | |
1088 | + this$1.next() | |
1089 | + node.expressions.push(this$1.parseExpression()) | |
1090 | + if (this$1.expect(tokTypes.braceR)) { | |
1091 | + curElt = this$1.parseTemplateElement() | |
1092 | + } else { | |
1093 | + curElt = this$1.startNode() | |
1094 | + curElt.value = {cooked: '', raw: ''} | |
1095 | + curElt.tail = true | |
1096 | + this$1.finishNode(curElt, "TemplateElement") | |
1097 | + } | |
1098 | + node.quasis.push(curElt) | |
1099 | + } | |
1100 | + this.expect(tokTypes.backQuote) | |
1101 | + return this.finishNode(node, "TemplateLiteral") | |
1102 | +} | |
1103 | + | |
1104 | +lp$2.parseObj = function() { | |
1105 | + var this$1 = this; | |
1106 | + | |
1107 | + var node = this.startNode() | |
1108 | + node.properties = [] | |
1109 | + this.pushCx() | |
1110 | + var indent = this.curIndent + 1, line = this.curLineStart | |
1111 | + this.eat(tokTypes.braceL) | |
1112 | + if (this.curIndent + 1 < indent) { indent = this.curIndent; line = this.curLineStart } | |
1113 | + while (!this.closes(tokTypes.braceR, indent, line)) { | |
1114 | + var prop = this$1.startNode(), isGenerator, isAsync, start | |
1115 | + if (this$1.options.ecmaVersion >= 6) { | |
1116 | + start = this$1.storeCurrentPos() | |
1117 | + prop.method = false | |
1118 | + prop.shorthand = false | |
1119 | + isGenerator = this$1.eat(tokTypes.star) | |
1120 | + } | |
1121 | + this$1.parsePropertyName(prop) | |
1122 | + if (!prop.computed && | |
1123 | + prop.key.type === "Identifier" && prop.key.name === "async" && this$1.tok.type !== tokTypes.parenL && | |
1124 | + this$1.tok.type !== tokTypes.colon && !this$1.canInsertSemicolon()) { | |
1125 | + this$1.parsePropertyName(prop) | |
1126 | + isAsync = true | |
1127 | + } else { | |
1128 | + isAsync = false | |
1129 | + } | |
1130 | + if (isDummy(prop.key)) { if (isDummy(this$1.parseMaybeAssign())) this$1.next(); this$1.eat(tokTypes.comma); continue } | |
1131 | + if (this$1.eat(tokTypes.colon)) { | |
1132 | + prop.kind = "init" | |
1133 | + prop.value = this$1.parseMaybeAssign() | |
1134 | + } else if (this$1.options.ecmaVersion >= 6 && (this$1.tok.type === tokTypes.parenL || this$1.tok.type === tokTypes.braceL)) { | |
1135 | + prop.kind = "init" | |
1136 | + prop.method = true | |
1137 | + prop.value = this$1.parseMethod(isGenerator, isAsync) | |
1138 | + } else if (this$1.options.ecmaVersion >= 5 && prop.key.type === "Identifier" && | |
1139 | + !prop.computed && (prop.key.name === "get" || prop.key.name === "set") && | |
1140 | + (this$1.tok.type != tokTypes.comma && this$1.tok.type != tokTypes.braceR)) { | |
1141 | + prop.kind = prop.key.name | |
1142 | + this$1.parsePropertyName(prop) | |
1143 | + prop.value = this$1.parseMethod(false) | |
1144 | + } else { | |
1145 | + prop.kind = "init" | |
1146 | + if (this$1.options.ecmaVersion >= 6) { | |
1147 | + if (this$1.eat(tokTypes.eq)) { | |
1148 | + var assign = this$1.startNodeAt(start) | |
1149 | + assign.operator = "=" | |
1150 | + assign.left = prop.key | |
1151 | + assign.right = this$1.parseMaybeAssign() | |
1152 | + prop.value = this$1.finishNode(assign, "AssignmentExpression") | |
1153 | + } else { | |
1154 | + prop.value = prop.key | |
1155 | + } | |
1156 | + } else { | |
1157 | + prop.value = this$1.dummyIdent() | |
1158 | + } | |
1159 | + prop.shorthand = true | |
1160 | + } | |
1161 | + node.properties.push(this$1.finishNode(prop, "Property")) | |
1162 | + this$1.eat(tokTypes.comma) | |
1163 | + } | |
1164 | + this.popCx() | |
1165 | + if (!this.eat(tokTypes.braceR)) { | |
1166 | + // If there is no closing brace, make the node span to the start | |
1167 | + // of the next token (this is useful for Tern) | |
1168 | + this.last.end = this.tok.start | |
1169 | + if (this.options.locations) this.last.loc.end = this.tok.loc.start | |
1170 | + } | |
1171 | + return this.finishNode(node, "ObjectExpression") | |
1172 | +} | |
1173 | + | |
1174 | +lp$2.parsePropertyName = function(prop) { | |
1175 | + if (this.options.ecmaVersion >= 6) { | |
1176 | + if (this.eat(tokTypes.bracketL)) { | |
1177 | + prop.computed = true | |
1178 | + prop.key = this.parseExpression() | |
1179 | + this.expect(tokTypes.bracketR) | |
1180 | + return | |
1181 | + } else { | |
1182 | + prop.computed = false | |
1183 | + } | |
1184 | + } | |
1185 | + var key = (this.tok.type === tokTypes.num || this.tok.type === tokTypes.string) ? this.parseExprAtom() : this.parseIdent() | |
1186 | + prop.key = key || this.dummyIdent() | |
1187 | +} | |
1188 | + | |
1189 | +lp$2.parsePropertyAccessor = function() { | |
1190 | + if (this.tok.type === tokTypes.name || this.tok.type.keyword) return this.parseIdent() | |
1191 | +} | |
1192 | + | |
1193 | +lp$2.parseIdent = function() { | |
1194 | + var name = this.tok.type === tokTypes.name ? this.tok.value : this.tok.type.keyword | |
1195 | + if (!name) return this.dummyIdent() | |
1196 | + var node = this.startNode() | |
1197 | + this.next() | |
1198 | + node.name = name | |
1199 | + return this.finishNode(node, "Identifier") | |
1200 | +} | |
1201 | + | |
1202 | +lp$2.initFunction = function(node) { | |
1203 | + node.id = null | |
1204 | + node.params = [] | |
1205 | + if (this.options.ecmaVersion >= 6) { | |
1206 | + node.generator = false | |
1207 | + node.expression = false | |
1208 | + } | |
1209 | + if (this.options.ecmaVersion >= 8) | |
1210 | + node.async = false | |
1211 | +} | |
1212 | + | |
1213 | +// Convert existing expression atom to assignable pattern | |
1214 | +// if possible. | |
1215 | + | |
1216 | +lp$2.toAssignable = function(node, binding) { | |
1217 | + var this$1 = this; | |
1218 | + | |
1219 | + if (!node || node.type == "Identifier" || (node.type == "MemberExpression" && !binding)) { | |
1220 | + // Okay | |
1221 | + } else if (node.type == "ParenthesizedExpression") { | |
1222 | + node.expression = this.toAssignable(node.expression, binding) | |
1223 | + } else if (this.options.ecmaVersion < 6) { | |
1224 | + return this.dummyIdent() | |
1225 | + } else if (node.type == "ObjectExpression") { | |
1226 | + node.type = "ObjectPattern" | |
1227 | + var props = node.properties | |
1228 | + for (var i = 0; i < props.length; i++) | |
1229 | + props[i].value = this$1.toAssignable(props[i].value, binding) | |
1230 | + } else if (node.type == "ArrayExpression") { | |
1231 | + node.type = "ArrayPattern" | |
1232 | + this.toAssignableList(node.elements, binding) | |
1233 | + } else if (node.type == "SpreadElement") { | |
1234 | + node.type = "RestElement" | |
1235 | + node.argument = this.toAssignable(node.argument, binding) | |
1236 | + } else if (node.type == "AssignmentExpression") { | |
1237 | + node.type = "AssignmentPattern" | |
1238 | + delete node.operator | |
1239 | + } else { | |
1240 | + return this.dummyIdent() | |
1241 | + } | |
1242 | + return node | |
1243 | +} | |
1244 | + | |
1245 | +lp$2.toAssignableList = function(exprList, binding) { | |
1246 | + var this$1 = this; | |
1247 | + | |
1248 | + for (var i = 0; i < exprList.length; i++) | |
1249 | + exprList[i] = this$1.toAssignable(exprList[i], binding) | |
1250 | + return exprList | |
1251 | +} | |
1252 | + | |
1253 | +lp$2.parseFunctionParams = function(params) { | |
1254 | + params = this.parseExprList(tokTypes.parenR) | |
1255 | + return this.toAssignableList(params, true) | |
1256 | +} | |
1257 | + | |
1258 | +lp$2.parseMethod = function(isGenerator, isAsync) { | |
1259 | + var node = this.startNode(), oldInAsync = this.inAsync | |
1260 | + this.initFunction(node) | |
1261 | + if (this.options.ecmaVersion >= 6) | |
1262 | + node.generator = !!isGenerator | |
1263 | + if (this.options.ecmaVersion >= 8) | |
1264 | + node.async = !!isAsync | |
1265 | + this.inAsync = node.async | |
1266 | + node.params = this.parseFunctionParams() | |
1267 | + node.expression = this.options.ecmaVersion >= 6 && this.tok.type !== tokTypes.braceL | |
1268 | + node.body = node.expression ? this.parseMaybeAssign() : this.parseBlock() | |
1269 | + this.inAsync = oldInAsync | |
1270 | + return this.finishNode(node, "FunctionExpression") | |
1271 | +} | |
1272 | + | |
1273 | +lp$2.parseArrowExpression = function(node, params, isAsync) { | |
1274 | + var oldInAsync = this.inAsync | |
1275 | + this.initFunction(node) | |
1276 | + if (this.options.ecmaVersion >= 8) | |
1277 | + node.async = !!isAsync | |
1278 | + this.inAsync = node.async | |
1279 | + node.params = this.toAssignableList(params, true) | |
1280 | + node.expression = this.tok.type !== tokTypes.braceL | |
1281 | + node.body = node.expression ? this.parseMaybeAssign() : this.parseBlock() | |
1282 | + this.inAsync = oldInAsync | |
1283 | + return this.finishNode(node, "ArrowFunctionExpression") | |
1284 | +} | |
1285 | + | |
1286 | +lp$2.parseExprList = function(close, allowEmpty) { | |
1287 | + var this$1 = this; | |
1288 | + | |
1289 | + this.pushCx() | |
1290 | + var indent = this.curIndent, line = this.curLineStart, elts = [] | |
1291 | + this.next() // Opening bracket | |
1292 | + while (!this.closes(close, indent + 1, line)) { | |
1293 | + if (this$1.eat(tokTypes.comma)) { | |
1294 | + elts.push(allowEmpty ? null : this$1.dummyIdent()) | |
1295 | + continue | |
1296 | + } | |
1297 | + var elt = this$1.parseMaybeAssign() | |
1298 | + if (isDummy(elt)) { | |
1299 | + if (this$1.closes(close, indent, line)) break | |
1300 | + this$1.next() | |
1301 | + } else { | |
1302 | + elts.push(elt) | |
1303 | + } | |
1304 | + this$1.eat(tokTypes.comma) | |
1305 | + } | |
1306 | + this.popCx() | |
1307 | + if (!this.eat(close)) { | |
1308 | + // If there is no closing brace, make the node span to the start | |
1309 | + // of the next token (this is useful for Tern) | |
1310 | + this.last.end = this.tok.start | |
1311 | + if (this.options.locations) this.last.loc.end = this.tok.loc.start | |
1312 | + } | |
1313 | + return elts | |
1314 | +} | |
1315 | + | |
1316 | +lp$2.parseAwait = function() { | |
1317 | + var node = this.startNode() | |
1318 | + this.next() | |
1319 | + node.argument = this.parseMaybeUnary() | |
1320 | + return this.finishNode(node, "AwaitExpression") | |
1321 | +} | |
1322 | + | |
1323 | +// Acorn: Loose parser | |
1324 | +// | |
1325 | +// This module provides an alternative parser (`parse_dammit`) that | |
1326 | +// exposes that same interface as `parse`, but will try to parse | |
1327 | +// anything as JavaScript, repairing syntax error the best it can. | |
1328 | +// There are circumstances in which it will raise an error and give | |
1329 | +// up, but they are very rare. The resulting AST will be a mostly | |
1330 | +// valid JavaScript AST (as per the [Mozilla parser API][api], except | |
1331 | +// that: | |
1332 | +// | |
1333 | +// - Return outside functions is allowed | |
1334 | +// | |
1335 | +// - Label consistency (no conflicts, break only to existing labels) | |
1336 | +// is not enforced. | |
1337 | +// | |
1338 | +// - Bogus Identifier nodes with a name of `"✖"` are inserted whenever | |
1339 | +// the parser got too confused to return anything meaningful. | |
1340 | +// | |
1341 | +// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API | |
1342 | +// | |
1343 | +// The expected use for this is to *first* try `acorn.parse`, and only | |
1344 | +// if that fails switch to `parse_dammit`. The loose parser might | |
1345 | +// parse badly indented code incorrectly, so **don't** use it as | |
1346 | +// your default parser. | |
1347 | +// | |
1348 | +// Quite a lot of acorn.js is duplicated here. The alternative was to | |
1349 | +// add a *lot* of extra cruft to that file, making it less readable | |
1350 | +// and slower. Copying and editing the code allowed me to make | |
1351 | +// invasive changes and simplifications without creating a complicated | |
1352 | +// tangle. | |
1353 | + | |
1354 | +defaultOptions.tabSize = 4 | |
1355 | + | |
1356 | +function parse_dammit(input, options) { | |
1357 | + var p = new LooseParser(input, options) | |
1358 | + p.next() | |
1359 | + return p.parseTopLevel() | |
1360 | +} | |
1361 | + | |
1362 | +addLooseExports(parse_dammit, LooseParser, pluginsLoose) | |
1363 | + | |
1364 | +export { parse_dammit, LooseParser, pluginsLoose }; | |
0 | 1365 | \ No newline at end of file | ... | ... |
node_modules/acorn-dynamic-import/node_modules/acorn/dist/acorn_loose.js
0 → 100644
1 | +(function (global, factory) { | |
2 | + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('./acorn')) : | |
3 | + typeof define === 'function' && define.amd ? define(['exports', './acorn'], factory) : | |
4 | + (factory((global.acorn = global.acorn || {}, global.acorn.loose = global.acorn.loose || {}),global.acorn)); | |
5 | +}(this, (function (exports,__acorn) { 'use strict'; | |
6 | + | |
7 | +// Registered plugins | |
8 | +var pluginsLoose = {} | |
9 | + | |
10 | +var LooseParser = function LooseParser(input, options) { | |
11 | + if ( options === void 0 ) options = {}; | |
12 | + | |
13 | + this.toks = __acorn.tokenizer(input, options) | |
14 | + this.options = this.toks.options | |
15 | + this.input = this.toks.input | |
16 | + this.tok = this.last = {type: __acorn.tokTypes.eof, start: 0, end: 0} | |
17 | + if (this.options.locations) { | |
18 | + var here = this.toks.curPosition() | |
19 | + this.tok.loc = new __acorn.SourceLocation(this.toks, here, here) | |
20 | + } | |
21 | + this.ahead = [] // Tokens ahead | |
22 | + this.context = [] // Indentation contexted | |
23 | + this.curIndent = 0 | |
24 | + this.curLineStart = 0 | |
25 | + this.nextLineStart = this.lineEnd(this.curLineStart) + 1 | |
26 | + this.inAsync = false | |
27 | + // Load plugins | |
28 | + this.options.pluginsLoose = options.pluginsLoose || {} | |
29 | + this.loadPlugins(this.options.pluginsLoose) | |
30 | +}; | |
31 | + | |
32 | +LooseParser.prototype.startNode = function startNode () { | |
33 | + return new __acorn.Node(this.toks, this.tok.start, this.options.locations ? this.tok.loc.start : null) | |
34 | +}; | |
35 | + | |
36 | +LooseParser.prototype.storeCurrentPos = function storeCurrentPos () { | |
37 | + return this.options.locations ? [this.tok.start, this.tok.loc.start] : this.tok.start | |
38 | +}; | |
39 | + | |
40 | +LooseParser.prototype.startNodeAt = function startNodeAt (pos) { | |
41 | + if (this.options.locations) { | |
42 | + return new __acorn.Node(this.toks, pos[0], pos[1]) | |
43 | + } else { | |
44 | + return new __acorn.Node(this.toks, pos) | |
45 | + } | |
46 | +}; | |
47 | + | |
48 | +LooseParser.prototype.finishNode = function finishNode (node, type) { | |
49 | + node.type = type | |
50 | + node.end = this.last.end | |
51 | + if (this.options.locations) | |
52 | + node.loc.end = this.last.loc.end | |
53 | + if (this.options.ranges) | |
54 | + node.range[1] = this.last.end | |
55 | + return node | |
56 | +}; | |
57 | + | |
58 | +LooseParser.prototype.dummyNode = function dummyNode (type) { | |
59 | + var dummy = this.startNode() | |
60 | + dummy.type = type | |
61 | + dummy.end = dummy.start | |
62 | + if (this.options.locations) | |
63 | + dummy.loc.end = dummy.loc.start | |
64 | + if (this.options.ranges) | |
65 | + dummy.range[1] = dummy.start | |
66 | + this.last = {type: __acorn.tokTypes.name, start: dummy.start, end: dummy.start, loc: dummy.loc} | |
67 | + return dummy | |
68 | +}; | |
69 | + | |
70 | +LooseParser.prototype.dummyIdent = function dummyIdent () { | |
71 | + var dummy = this.dummyNode("Identifier") | |
72 | + dummy.name = "✖" | |
73 | + return dummy | |
74 | +}; | |
75 | + | |
76 | +LooseParser.prototype.dummyString = function dummyString () { | |
77 | + var dummy = this.dummyNode("Literal") | |
78 | + dummy.value = dummy.raw = "✖" | |
79 | + return dummy | |
80 | +}; | |
81 | + | |
82 | +LooseParser.prototype.eat = function eat (type) { | |
83 | + if (this.tok.type === type) { | |
84 | + this.next() | |
85 | + return true | |
86 | + } else { | |
87 | + return false | |
88 | + } | |
89 | +}; | |
90 | + | |
91 | +LooseParser.prototype.isContextual = function isContextual (name) { | |
92 | + return this.tok.type === __acorn.tokTypes.name && this.tok.value === name | |
93 | +}; | |
94 | + | |
95 | +LooseParser.prototype.eatContextual = function eatContextual (name) { | |
96 | + return this.tok.value === name && this.eat(__acorn.tokTypes.name) | |
97 | +}; | |
98 | + | |
99 | +LooseParser.prototype.canInsertSemicolon = function canInsertSemicolon () { | |
100 | + return this.tok.type === __acorn.tokTypes.eof || this.tok.type === __acorn.tokTypes.braceR || | |
101 | + __acorn.lineBreak.test(this.input.slice(this.last.end, this.tok.start)) | |
102 | +}; | |
103 | + | |
104 | +LooseParser.prototype.semicolon = function semicolon () { | |
105 | + return this.eat(__acorn.tokTypes.semi) | |
106 | +}; | |
107 | + | |
108 | +LooseParser.prototype.expect = function expect (type) { | |
109 | + var this$1 = this; | |
110 | + | |
111 | + if (this.eat(type)) return true | |
112 | + for (var i = 1; i <= 2; i++) { | |
113 | + if (this$1.lookAhead(i).type == type) { | |
114 | + for (var j = 0; j < i; j++) this$1.next() | |
115 | + return true | |
116 | + } | |
117 | + } | |
118 | +}; | |
119 | + | |
120 | +LooseParser.prototype.pushCx = function pushCx () { | |
121 | + this.context.push(this.curIndent) | |
122 | +}; | |
123 | + | |
124 | +LooseParser.prototype.popCx = function popCx () { | |
125 | + this.curIndent = this.context.pop() | |
126 | +}; | |
127 | + | |
128 | +LooseParser.prototype.lineEnd = function lineEnd (pos) { | |
129 | + while (pos < this.input.length && !__acorn.isNewLine(this.input.charCodeAt(pos))) ++pos | |
130 | + return pos | |
131 | +}; | |
132 | + | |
133 | +LooseParser.prototype.indentationAfter = function indentationAfter (pos) { | |
134 | + var this$1 = this; | |
135 | + | |
136 | + for (var count = 0;; ++pos) { | |
137 | + var ch = this$1.input.charCodeAt(pos) | |
138 | + if (ch === 32) ++count | |
139 | + else if (ch === 9) count += this$1.options.tabSize | |
140 | + else return count | |
141 | + } | |
142 | +}; | |
143 | + | |
144 | +LooseParser.prototype.closes = function closes (closeTok, indent, line, blockHeuristic) { | |
145 | + if (this.tok.type === closeTok || this.tok.type === __acorn.tokTypes.eof) return true | |
146 | + return line != this.curLineStart && this.curIndent < indent && this.tokenStartsLine() && | |
147 | + (!blockHeuristic || this.nextLineStart >= this.input.length || | |
148 | + this.indentationAfter(this.nextLineStart) < indent) | |
149 | +}; | |
150 | + | |
151 | +LooseParser.prototype.tokenStartsLine = function tokenStartsLine () { | |
152 | + var this$1 = this; | |
153 | + | |
154 | + for (var p = this.tok.start - 1; p >= this.curLineStart; --p) { | |
155 | + var ch = this$1.input.charCodeAt(p) | |
156 | + if (ch !== 9 && ch !== 32) return false | |
157 | + } | |
158 | + return true | |
159 | +}; | |
160 | + | |
161 | +LooseParser.prototype.extend = function extend (name, f) { | |
162 | + this[name] = f(this[name]) | |
163 | +}; | |
164 | + | |
165 | +LooseParser.prototype.loadPlugins = function loadPlugins (pluginConfigs) { | |
166 | + var this$1 = this; | |
167 | + | |
168 | + for (var name in pluginConfigs) { | |
169 | + var plugin = pluginsLoose[name] | |
170 | + if (!plugin) throw new Error("Plugin '" + name + "' not found") | |
171 | + plugin(this$1, pluginConfigs[name]) | |
172 | + } | |
173 | +}; | |
174 | + | |
175 | +var lp = LooseParser.prototype | |
176 | + | |
177 | +function isSpace(ch) { | |
178 | + return (ch < 14 && ch > 8) || ch === 32 || ch === 160 || __acorn.isNewLine(ch) | |
179 | +} | |
180 | + | |
181 | +lp.next = function() { | |
182 | + var this$1 = this; | |
183 | + | |
184 | + this.last = this.tok | |
185 | + if (this.ahead.length) | |
186 | + this.tok = this.ahead.shift() | |
187 | + else | |
188 | + this.tok = this.readToken() | |
189 | + | |
190 | + if (this.tok.start >= this.nextLineStart) { | |
191 | + while (this.tok.start >= this.nextLineStart) { | |
192 | + this$1.curLineStart = this$1.nextLineStart | |
193 | + this$1.nextLineStart = this$1.lineEnd(this$1.curLineStart) + 1 | |
194 | + } | |
195 | + this.curIndent = this.indentationAfter(this.curLineStart) | |
196 | + } | |
197 | +} | |
198 | + | |
199 | +lp.readToken = function() { | |
200 | + var this$1 = this; | |
201 | + | |
202 | + for (;;) { | |
203 | + try { | |
204 | + this$1.toks.next() | |
205 | + if (this$1.toks.type === __acorn.tokTypes.dot && | |
206 | + this$1.input.substr(this$1.toks.end, 1) === "." && | |
207 | + this$1.options.ecmaVersion >= 6) { | |
208 | + this$1.toks.end++ | |
209 | + this$1.toks.type = __acorn.tokTypes.ellipsis | |
210 | + } | |
211 | + return new __acorn.Token(this$1.toks) | |
212 | + } catch(e) { | |
213 | + if (!(e instanceof SyntaxError)) throw e | |
214 | + | |
215 | + // Try to skip some text, based on the error message, and then continue | |
216 | + var msg = e.message, pos = e.raisedAt, replace = true | |
217 | + if (/unterminated/i.test(msg)) { | |
218 | + pos = this$1.lineEnd(e.pos + 1) | |
219 | + if (/string/.test(msg)) { | |
220 | + replace = {start: e.pos, end: pos, type: __acorn.tokTypes.string, value: this$1.input.slice(e.pos + 1, pos)} | |
221 | + } else if (/regular expr/i.test(msg)) { | |
222 | + var re = this$1.input.slice(e.pos, pos) | |
223 | + try { re = new RegExp(re) } catch(e) {} | |
224 | + replace = {start: e.pos, end: pos, type: __acorn.tokTypes.regexp, value: re} | |
225 | + } else if (/template/.test(msg)) { | |
226 | + replace = {start: e.pos, end: pos, | |
227 | + type: __acorn.tokTypes.template, | |
228 | + value: this$1.input.slice(e.pos, pos)} | |
229 | + } else { | |
230 | + replace = false | |
231 | + } | |
232 | + } else if (/invalid (unicode|regexp|number)|expecting unicode|octal literal|is reserved|directly after number|expected number in radix/i.test(msg)) { | |
233 | + while (pos < this.input.length && !isSpace(this.input.charCodeAt(pos))) ++pos | |
234 | + } else if (/character escape|expected hexadecimal/i.test(msg)) { | |
235 | + while (pos < this.input.length) { | |
236 | + var ch = this$1.input.charCodeAt(pos++) | |
237 | + if (ch === 34 || ch === 39 || __acorn.isNewLine(ch)) break | |
238 | + } | |
239 | + } else if (/unexpected character/i.test(msg)) { | |
240 | + pos++ | |
241 | + replace = false | |
242 | + } else if (/regular expression/i.test(msg)) { | |
243 | + replace = true | |
244 | + } else { | |
245 | + throw e | |
246 | + } | |
247 | + this$1.resetTo(pos) | |
248 | + if (replace === true) replace = {start: pos, end: pos, type: __acorn.tokTypes.name, value: "✖"} | |
249 | + if (replace) { | |
250 | + if (this$1.options.locations) | |
251 | + replace.loc = new __acorn.SourceLocation( | |
252 | + this$1.toks, | |
253 | + __acorn.getLineInfo(this$1.input, replace.start), | |
254 | + __acorn.getLineInfo(this$1.input, replace.end)) | |
255 | + return replace | |
256 | + } | |
257 | + } | |
258 | + } | |
259 | +} | |
260 | + | |
261 | +lp.resetTo = function(pos) { | |
262 | + var this$1 = this; | |
263 | + | |
264 | + this.toks.pos = pos | |
265 | + var ch = this.input.charAt(pos - 1) | |
266 | + this.toks.exprAllowed = !ch || /[\[\{\(,;:?\/*=+\-~!|&%^<>]/.test(ch) || | |
267 | + /[enwfd]/.test(ch) && | |
268 | + /\b(keywords|case|else|return|throw|new|in|(instance|type)of|delete|void)$/.test(this.input.slice(pos - 10, pos)) | |
269 | + | |
270 | + if (this.options.locations) { | |
271 | + this.toks.curLine = 1 | |
272 | + this.toks.lineStart = __acorn.lineBreakG.lastIndex = 0 | |
273 | + var match | |
274 | + while ((match = __acorn.lineBreakG.exec(this.input)) && match.index < pos) { | |
275 | + ++this$1.toks.curLine | |
276 | + this$1.toks.lineStart = match.index + match[0].length | |
277 | + } | |
278 | + } | |
279 | +} | |
280 | + | |
281 | +lp.lookAhead = function(n) { | |
282 | + var this$1 = this; | |
283 | + | |
284 | + while (n > this.ahead.length) | |
285 | + this$1.ahead.push(this$1.readToken()) | |
286 | + return this.ahead[n - 1] | |
287 | +} | |
288 | + | |
289 | +function isDummy(node) { return node.name == "✖" } | |
290 | + | |
291 | +var lp$1 = LooseParser.prototype | |
292 | + | |
293 | +lp$1.parseTopLevel = function() { | |
294 | + var this$1 = this; | |
295 | + | |
296 | + var node = this.startNodeAt(this.options.locations ? [0, __acorn.getLineInfo(this.input, 0)] : 0) | |
297 | + node.body = [] | |
298 | + while (this.tok.type !== __acorn.tokTypes.eof) node.body.push(this$1.parseStatement()) | |
299 | + this.last = this.tok | |
300 | + if (this.options.ecmaVersion >= 6) { | |
301 | + node.sourceType = this.options.sourceType | |
302 | + } | |
303 | + return this.finishNode(node, "Program") | |
304 | +} | |
305 | + | |
306 | +lp$1.parseStatement = function() { | |
307 | + var this$1 = this; | |
308 | + | |
309 | + var starttype = this.tok.type, node = this.startNode(), kind | |
310 | + | |
311 | + if (this.toks.isLet()) { | |
312 | + starttype = __acorn.tokTypes._var | |
313 | + kind = "let" | |
314 | + } | |
315 | + | |
316 | + switch (starttype) { | |
317 | + case __acorn.tokTypes._break: case __acorn.tokTypes._continue: | |
318 | + this.next() | |
319 | + var isBreak = starttype === __acorn.tokTypes._break | |
320 | + if (this.semicolon() || this.canInsertSemicolon()) { | |
321 | + node.label = null | |
322 | + } else { | |
323 | + node.label = this.tok.type === __acorn.tokTypes.name ? this.parseIdent() : null | |
324 | + this.semicolon() | |
325 | + } | |
326 | + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement") | |
327 | + | |
328 | + case __acorn.tokTypes._debugger: | |
329 | + this.next() | |
330 | + this.semicolon() | |
331 | + return this.finishNode(node, "DebuggerStatement") | |
332 | + | |
333 | + case __acorn.tokTypes._do: | |
334 | + this.next() | |
335 | + node.body = this.parseStatement() | |
336 | + node.test = this.eat(__acorn.tokTypes._while) ? this.parseParenExpression() : this.dummyIdent() | |
337 | + this.semicolon() | |
338 | + return this.finishNode(node, "DoWhileStatement") | |
339 | + | |
340 | + case __acorn.tokTypes._for: | |
341 | + this.next() | |
342 | + this.pushCx() | |
343 | + this.expect(__acorn.tokTypes.parenL) | |
344 | + if (this.tok.type === __acorn.tokTypes.semi) return this.parseFor(node, null) | |
345 | + var isLet = this.toks.isLet() | |
346 | + if (isLet || this.tok.type === __acorn.tokTypes._var || this.tok.type === __acorn.tokTypes._const) { | |
347 | + var init$1 = this.parseVar(true, isLet ? "let" : this.tok.value) | |
348 | + if (init$1.declarations.length === 1 && (this.tok.type === __acorn.tokTypes._in || this.isContextual("of"))) { | |
349 | + return this.parseForIn(node, init$1) | |
350 | + } | |
351 | + return this.parseFor(node, init$1) | |
352 | + } | |
353 | + var init = this.parseExpression(true) | |
354 | + if (this.tok.type === __acorn.tokTypes._in || this.isContextual("of")) | |
355 | + return this.parseForIn(node, this.toAssignable(init)) | |
356 | + return this.parseFor(node, init) | |
357 | + | |
358 | + case __acorn.tokTypes._function: | |
359 | + this.next() | |
360 | + return this.parseFunction(node, true) | |
361 | + | |
362 | + case __acorn.tokTypes._if: | |
363 | + this.next() | |
364 | + node.test = this.parseParenExpression() | |
365 | + node.consequent = this.parseStatement() | |
366 | + node.alternate = this.eat(__acorn.tokTypes._else) ? this.parseStatement() : null | |
367 | + return this.finishNode(node, "IfStatement") | |
368 | + | |
369 | + case __acorn.tokTypes._return: | |
370 | + this.next() | |
371 | + if (this.eat(__acorn.tokTypes.semi) || this.canInsertSemicolon()) node.argument = null | |
372 | + else { node.argument = this.parseExpression(); this.semicolon() } | |
373 | + return this.finishNode(node, "ReturnStatement") | |
374 | + | |
375 | + case __acorn.tokTypes._switch: | |
376 | + var blockIndent = this.curIndent, line = this.curLineStart | |
377 | + this.next() | |
378 | + node.discriminant = this.parseParenExpression() | |
379 | + node.cases = [] | |
380 | + this.pushCx() | |
381 | + this.expect(__acorn.tokTypes.braceL) | |
382 | + | |
383 | + var cur | |
384 | + while (!this.closes(__acorn.tokTypes.braceR, blockIndent, line, true)) { | |
385 | + if (this$1.tok.type === __acorn.tokTypes._case || this$1.tok.type === __acorn.tokTypes._default) { | |
386 | + var isCase = this$1.tok.type === __acorn.tokTypes._case | |
387 | + if (cur) this$1.finishNode(cur, "SwitchCase") | |
388 | + node.cases.push(cur = this$1.startNode()) | |
389 | + cur.consequent = [] | |
390 | + this$1.next() | |
391 | + if (isCase) cur.test = this$1.parseExpression() | |
392 | + else cur.test = null | |
393 | + this$1.expect(__acorn.tokTypes.colon) | |
394 | + } else { | |
395 | + if (!cur) { | |
396 | + node.cases.push(cur = this$1.startNode()) | |
397 | + cur.consequent = [] | |
398 | + cur.test = null | |
399 | + } | |
400 | + cur.consequent.push(this$1.parseStatement()) | |
401 | + } | |
402 | + } | |
403 | + if (cur) this.finishNode(cur, "SwitchCase") | |
404 | + this.popCx() | |
405 | + this.eat(__acorn.tokTypes.braceR) | |
406 | + return this.finishNode(node, "SwitchStatement") | |
407 | + | |
408 | + case __acorn.tokTypes._throw: | |
409 | + this.next() | |
410 | + node.argument = this.parseExpression() | |
411 | + this.semicolon() | |
412 | + return this.finishNode(node, "ThrowStatement") | |
413 | + | |
414 | + case __acorn.tokTypes._try: | |
415 | + this.next() | |
416 | + node.block = this.parseBlock() | |
417 | + node.handler = null | |
418 | + if (this.tok.type === __acorn.tokTypes._catch) { | |
419 | + var clause = this.startNode() | |
420 | + this.next() | |
421 | + this.expect(__acorn.tokTypes.parenL) | |
422 | + clause.param = this.toAssignable(this.parseExprAtom(), true) | |
423 | + this.expect(__acorn.tokTypes.parenR) | |
424 | + clause.body = this.parseBlock() | |
425 | + node.handler = this.finishNode(clause, "CatchClause") | |
426 | + } | |
427 | + node.finalizer = this.eat(__acorn.tokTypes._finally) ? this.parseBlock() : null | |
428 | + if (!node.handler && !node.finalizer) return node.block | |
429 | + return this.finishNode(node, "TryStatement") | |
430 | + | |
431 | + case __acorn.tokTypes._var: | |
432 | + case __acorn.tokTypes._const: | |
433 | + return this.parseVar(false, kind || this.tok.value) | |
434 | + | |
435 | + case __acorn.tokTypes._while: | |
436 | + this.next() | |
437 | + node.test = this.parseParenExpression() | |
438 | + node.body = this.parseStatement() | |
439 | + return this.finishNode(node, "WhileStatement") | |
440 | + | |
441 | + case __acorn.tokTypes._with: | |
442 | + this.next() | |
443 | + node.object = this.parseParenExpression() | |
444 | + node.body = this.parseStatement() | |
445 | + return this.finishNode(node, "WithStatement") | |
446 | + | |
447 | + case __acorn.tokTypes.braceL: | |
448 | + return this.parseBlock() | |
449 | + | |
450 | + case __acorn.tokTypes.semi: | |
451 | + this.next() | |
452 | + return this.finishNode(node, "EmptyStatement") | |
453 | + | |
454 | + case __acorn.tokTypes._class: | |
455 | + return this.parseClass(true) | |
456 | + | |
457 | + case __acorn.tokTypes._import: | |
458 | + return this.parseImport() | |
459 | + | |
460 | + case __acorn.tokTypes._export: | |
461 | + return this.parseExport() | |
462 | + | |
463 | + default: | |
464 | + if (this.toks.isAsyncFunction()) { | |
465 | + this.next() | |
466 | + this.next() | |
467 | + return this.parseFunction(node, true, true) | |
468 | + } | |
469 | + var expr = this.parseExpression() | |
470 | + if (isDummy(expr)) { | |
471 | + this.next() | |
472 | + if (this.tok.type === __acorn.tokTypes.eof) return this.finishNode(node, "EmptyStatement") | |
473 | + return this.parseStatement() | |
474 | + } else if (starttype === __acorn.tokTypes.name && expr.type === "Identifier" && this.eat(__acorn.tokTypes.colon)) { | |
475 | + node.body = this.parseStatement() | |
476 | + node.label = expr | |
477 | + return this.finishNode(node, "LabeledStatement") | |
478 | + } else { | |
479 | + node.expression = expr | |
480 | + this.semicolon() | |
481 | + return this.finishNode(node, "ExpressionStatement") | |
482 | + } | |
483 | + } | |
484 | +} | |
485 | + | |
486 | +lp$1.parseBlock = function() { | |
487 | + var this$1 = this; | |
488 | + | |
489 | + var node = this.startNode() | |
490 | + this.pushCx() | |
491 | + this.expect(__acorn.tokTypes.braceL) | |
492 | + var blockIndent = this.curIndent, line = this.curLineStart | |
493 | + node.body = [] | |
494 | + while (!this.closes(__acorn.tokTypes.braceR, blockIndent, line, true)) | |
495 | + node.body.push(this$1.parseStatement()) | |
496 | + this.popCx() | |
497 | + this.eat(__acorn.tokTypes.braceR) | |
498 | + return this.finishNode(node, "BlockStatement") | |
499 | +} | |
500 | + | |
501 | +lp$1.parseFor = function(node, init) { | |
502 | + node.init = init | |
503 | + node.test = node.update = null | |
504 | + if (this.eat(__acorn.tokTypes.semi) && this.tok.type !== __acorn.tokTypes.semi) node.test = this.parseExpression() | |
505 | + if (this.eat(__acorn.tokTypes.semi) && this.tok.type !== __acorn.tokTypes.parenR) node.update = this.parseExpression() | |
506 | + this.popCx() | |
507 | + this.expect(__acorn.tokTypes.parenR) | |
508 | + node.body = this.parseStatement() | |
509 | + return this.finishNode(node, "ForStatement") | |
510 | +} | |
511 | + | |
512 | +lp$1.parseForIn = function(node, init) { | |
513 | + var type = this.tok.type === __acorn.tokTypes._in ? "ForInStatement" : "ForOfStatement" | |
514 | + this.next() | |
515 | + node.left = init | |
516 | + node.right = this.parseExpression() | |
517 | + this.popCx() | |
518 | + this.expect(__acorn.tokTypes.parenR) | |
519 | + node.body = this.parseStatement() | |
520 | + return this.finishNode(node, type) | |
521 | +} | |
522 | + | |
523 | +lp$1.parseVar = function(noIn, kind) { | |
524 | + var this$1 = this; | |
525 | + | |
526 | + var node = this.startNode() | |
527 | + node.kind = kind | |
528 | + this.next() | |
529 | + node.declarations = [] | |
530 | + do { | |
531 | + var decl = this$1.startNode() | |
532 | + decl.id = this$1.options.ecmaVersion >= 6 ? this$1.toAssignable(this$1.parseExprAtom(), true) : this$1.parseIdent() | |
533 | + decl.init = this$1.eat(__acorn.tokTypes.eq) ? this$1.parseMaybeAssign(noIn) : null | |
534 | + node.declarations.push(this$1.finishNode(decl, "VariableDeclarator")) | |
535 | + } while (this.eat(__acorn.tokTypes.comma)) | |
536 | + if (!node.declarations.length) { | |
537 | + var decl$1 = this.startNode() | |
538 | + decl$1.id = this.dummyIdent() | |
539 | + node.declarations.push(this.finishNode(decl$1, "VariableDeclarator")) | |
540 | + } | |
541 | + if (!noIn) this.semicolon() | |
542 | + return this.finishNode(node, "VariableDeclaration") | |
543 | +} | |
544 | + | |
545 | +lp$1.parseClass = function(isStatement) { | |
546 | + var this$1 = this; | |
547 | + | |
548 | + var node = this.startNode() | |
549 | + this.next() | |
550 | + if (isStatement == null) isStatement = this.tok.type === __acorn.tokTypes.name | |
551 | + if (this.tok.type === __acorn.tokTypes.name) node.id = this.parseIdent() | |
552 | + else if (isStatement) node.id = this.dummyIdent() | |
553 | + else node.id = null | |
554 | + node.superClass = this.eat(__acorn.tokTypes._extends) ? this.parseExpression() : null | |
555 | + node.body = this.startNode() | |
556 | + node.body.body = [] | |
557 | + this.pushCx() | |
558 | + var indent = this.curIndent + 1, line = this.curLineStart | |
559 | + this.eat(__acorn.tokTypes.braceL) | |
560 | + if (this.curIndent + 1 < indent) { indent = this.curIndent; line = this.curLineStart } | |
561 | + while (!this.closes(__acorn.tokTypes.braceR, indent, line)) { | |
562 | + if (this$1.semicolon()) continue | |
563 | + var method = this$1.startNode(), isGenerator, isAsync | |
564 | + if (this$1.options.ecmaVersion >= 6) { | |
565 | + method.static = false | |
566 | + isGenerator = this$1.eat(__acorn.tokTypes.star) | |
567 | + } | |
568 | + this$1.parsePropertyName(method) | |
569 | + if (isDummy(method.key)) { if (isDummy(this$1.parseMaybeAssign())) this$1.next(); this$1.eat(__acorn.tokTypes.comma); continue } | |
570 | + if (method.key.type === "Identifier" && !method.computed && method.key.name === "static" && | |
571 | + (this$1.tok.type != __acorn.tokTypes.parenL && this$1.tok.type != __acorn.tokTypes.braceL)) { | |
572 | + method.static = true | |
573 | + isGenerator = this$1.eat(__acorn.tokTypes.star) | |
574 | + this$1.parsePropertyName(method) | |
575 | + } else { | |
576 | + method.static = false | |
577 | + } | |
578 | + if (!method.computed && | |
579 | + method.key.type === "Identifier" && method.key.name === "async" && this$1.tok.type !== __acorn.tokTypes.parenL && | |
580 | + !this$1.canInsertSemicolon()) { | |
581 | + this$1.parsePropertyName(method) | |
582 | + isAsync = true | |
583 | + } else { | |
584 | + isAsync = false | |
585 | + } | |
586 | + if (this$1.options.ecmaVersion >= 5 && method.key.type === "Identifier" && | |
587 | + !method.computed && (method.key.name === "get" || method.key.name === "set") && | |
588 | + this$1.tok.type !== __acorn.tokTypes.parenL && this$1.tok.type !== __acorn.tokTypes.braceL) { | |
589 | + method.kind = method.key.name | |
590 | + this$1.parsePropertyName(method) | |
591 | + method.value = this$1.parseMethod(false) | |
592 | + } else { | |
593 | + if (!method.computed && !method.static && !isGenerator && !isAsync && ( | |
594 | + method.key.type === "Identifier" && method.key.name === "constructor" || | |
595 | + method.key.type === "Literal" && method.key.value === "constructor")) { | |
596 | + method.kind = "constructor" | |
597 | + } else { | |
598 | + method.kind = "method" | |
599 | + } | |
600 | + method.value = this$1.parseMethod(isGenerator, isAsync) | |
601 | + } | |
602 | + node.body.body.push(this$1.finishNode(method, "MethodDefinition")) | |
603 | + } | |
604 | + this.popCx() | |
605 | + if (!this.eat(__acorn.tokTypes.braceR)) { | |
606 | + // If there is no closing brace, make the node span to the start | |
607 | + // of the next token (this is useful for Tern) | |
608 | + this.last.end = this.tok.start | |
609 | + if (this.options.locations) this.last.loc.end = this.tok.loc.start | |
610 | + } | |
611 | + this.semicolon() | |
612 | + this.finishNode(node.body, "ClassBody") | |
613 | + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression") | |
614 | +} | |
615 | + | |
616 | +lp$1.parseFunction = function(node, isStatement, isAsync) { | |
617 | + var oldInAsync = this.inAsync | |
618 | + this.initFunction(node) | |
619 | + if (this.options.ecmaVersion >= 6) { | |
620 | + node.generator = this.eat(__acorn.tokTypes.star) | |
621 | + } | |
622 | + if (this.options.ecmaVersion >= 8) { | |
623 | + node.async = !!isAsync | |
624 | + } | |
625 | + if (isStatement == null) isStatement = this.tok.type === __acorn.tokTypes.name | |
626 | + if (this.tok.type === __acorn.tokTypes.name) node.id = this.parseIdent() | |
627 | + else if (isStatement) node.id = this.dummyIdent() | |
628 | + this.inAsync = node.async | |
629 | + node.params = this.parseFunctionParams() | |
630 | + node.body = this.parseBlock() | |
631 | + this.inAsync = oldInAsync | |
632 | + return this.finishNode(node, isStatement ? "FunctionDeclaration" : "FunctionExpression") | |
633 | +} | |
634 | + | |
635 | +lp$1.parseExport = function() { | |
636 | + var node = this.startNode() | |
637 | + this.next() | |
638 | + if (this.eat(__acorn.tokTypes.star)) { | |
639 | + node.source = this.eatContextual("from") ? this.parseExprAtom() : this.dummyString() | |
640 | + return this.finishNode(node, "ExportAllDeclaration") | |
641 | + } | |
642 | + if (this.eat(__acorn.tokTypes._default)) { | |
643 | + // export default (function foo() {}) // This is FunctionExpression. | |
644 | + var isAsync | |
645 | + if (this.tok.type === __acorn.tokTypes._function || (isAsync = this.toks.isAsyncFunction())) { | |
646 | + var fNode = this.startNode() | |
647 | + this.next() | |
648 | + if (isAsync) this.next() | |
649 | + node.declaration = this.parseFunction(fNode, null, isAsync) | |
650 | + } else if (this.tok.type === __acorn.tokTypes._class) { | |
651 | + node.declaration = this.parseClass(null) | |
652 | + } else { | |
653 | + node.declaration = this.parseMaybeAssign() | |
654 | + this.semicolon() | |
655 | + } | |
656 | + return this.finishNode(node, "ExportDefaultDeclaration") | |
657 | + } | |
658 | + if (this.tok.type.keyword || this.toks.isLet() || this.toks.isAsyncFunction()) { | |
659 | + node.declaration = this.parseStatement() | |
660 | + node.specifiers = [] | |
661 | + node.source = null | |
662 | + } else { | |
663 | + node.declaration = null | |
664 | + node.specifiers = this.parseExportSpecifierList() | |
665 | + node.source = this.eatContextual("from") ? this.parseExprAtom() : null | |
666 | + this.semicolon() | |
667 | + } | |
668 | + return this.finishNode(node, "ExportNamedDeclaration") | |
669 | +} | |
670 | + | |
671 | +lp$1.parseImport = function() { | |
672 | + var node = this.startNode() | |
673 | + this.next() | |
674 | + if (this.tok.type === __acorn.tokTypes.string) { | |
675 | + node.specifiers = [] | |
676 | + node.source = this.parseExprAtom() | |
677 | + node.kind = '' | |
678 | + } else { | |
679 | + var elt | |
680 | + if (this.tok.type === __acorn.tokTypes.name && this.tok.value !== "from") { | |
681 | + elt = this.startNode() | |
682 | + elt.local = this.parseIdent() | |
683 | + this.finishNode(elt, "ImportDefaultSpecifier") | |
684 | + this.eat(__acorn.tokTypes.comma) | |
685 | + } | |
686 | + node.specifiers = this.parseImportSpecifierList() | |
687 | + node.source = this.eatContextual("from") && this.tok.type == __acorn.tokTypes.string ? this.parseExprAtom() : this.dummyString() | |
688 | + if (elt) node.specifiers.unshift(elt) | |
689 | + } | |
690 | + this.semicolon() | |
691 | + return this.finishNode(node, "ImportDeclaration") | |
692 | +} | |
693 | + | |
694 | +lp$1.parseImportSpecifierList = function() { | |
695 | + var this$1 = this; | |
696 | + | |
697 | + var elts = [] | |
698 | + if (this.tok.type === __acorn.tokTypes.star) { | |
699 | + var elt = this.startNode() | |
700 | + this.next() | |
701 | + elt.local = this.eatContextual("as") ? this.parseIdent() : this.dummyIdent() | |
702 | + elts.push(this.finishNode(elt, "ImportNamespaceSpecifier")) | |
703 | + } else { | |
704 | + var indent = this.curIndent, line = this.curLineStart, continuedLine = this.nextLineStart | |
705 | + this.pushCx() | |
706 | + this.eat(__acorn.tokTypes.braceL) | |
707 | + if (this.curLineStart > continuedLine) continuedLine = this.curLineStart | |
708 | + while (!this.closes(__acorn.tokTypes.braceR, indent + (this.curLineStart <= continuedLine ? 1 : 0), line)) { | |
709 | + var elt$1 = this$1.startNode() | |
710 | + if (this$1.eat(__acorn.tokTypes.star)) { | |
711 | + elt$1.local = this$1.eatContextual("as") ? this$1.parseIdent() : this$1.dummyIdent() | |
712 | + this$1.finishNode(elt$1, "ImportNamespaceSpecifier") | |
713 | + } else { | |
714 | + if (this$1.isContextual("from")) break | |
715 | + elt$1.imported = this$1.parseIdent() | |
716 | + if (isDummy(elt$1.imported)) break | |
717 | + elt$1.local = this$1.eatContextual("as") ? this$1.parseIdent() : elt$1.imported | |
718 | + this$1.finishNode(elt$1, "ImportSpecifier") | |
719 | + } | |
720 | + elts.push(elt$1) | |
721 | + this$1.eat(__acorn.tokTypes.comma) | |
722 | + } | |
723 | + this.eat(__acorn.tokTypes.braceR) | |
724 | + this.popCx() | |
725 | + } | |
726 | + return elts | |
727 | +} | |
728 | + | |
729 | +lp$1.parseExportSpecifierList = function() { | |
730 | + var this$1 = this; | |
731 | + | |
732 | + var elts = [] | |
733 | + var indent = this.curIndent, line = this.curLineStart, continuedLine = this.nextLineStart | |
734 | + this.pushCx() | |
735 | + this.eat(__acorn.tokTypes.braceL) | |
736 | + if (this.curLineStart > continuedLine) continuedLine = this.curLineStart | |
737 | + while (!this.closes(__acorn.tokTypes.braceR, indent + (this.curLineStart <= continuedLine ? 1 : 0), line)) { | |
738 | + if (this$1.isContextual("from")) break | |
739 | + var elt = this$1.startNode() | |
740 | + elt.local = this$1.parseIdent() | |
741 | + if (isDummy(elt.local)) break | |
742 | + elt.exported = this$1.eatContextual("as") ? this$1.parseIdent() : elt.local | |
743 | + this$1.finishNode(elt, "ExportSpecifier") | |
744 | + elts.push(elt) | |
745 | + this$1.eat(__acorn.tokTypes.comma) | |
746 | + } | |
747 | + this.eat(__acorn.tokTypes.braceR) | |
748 | + this.popCx() | |
749 | + return elts | |
750 | +} | |
751 | + | |
752 | +var lp$2 = LooseParser.prototype | |
753 | + | |
754 | +lp$2.checkLVal = function(expr) { | |
755 | + if (!expr) return expr | |
756 | + switch (expr.type) { | |
757 | + case "Identifier": | |
758 | + case "MemberExpression": | |
759 | + return expr | |
760 | + | |
761 | + case "ParenthesizedExpression": | |
762 | + expr.expression = this.checkLVal(expr.expression) | |
763 | + return expr | |
764 | + | |
765 | + default: | |
766 | + return this.dummyIdent() | |
767 | + } | |
768 | +} | |
769 | + | |
770 | +lp$2.parseExpression = function(noIn) { | |
771 | + var this$1 = this; | |
772 | + | |
773 | + var start = this.storeCurrentPos() | |
774 | + var expr = this.parseMaybeAssign(noIn) | |
775 | + if (this.tok.type === __acorn.tokTypes.comma) { | |
776 | + var node = this.startNodeAt(start) | |
777 | + node.expressions = [expr] | |
778 | + while (this.eat(__acorn.tokTypes.comma)) node.expressions.push(this$1.parseMaybeAssign(noIn)) | |
779 | + return this.finishNode(node, "SequenceExpression") | |
780 | + } | |
781 | + return expr | |
782 | +} | |
783 | + | |
784 | +lp$2.parseParenExpression = function() { | |
785 | + this.pushCx() | |
786 | + this.expect(__acorn.tokTypes.parenL) | |
787 | + var val = this.parseExpression() | |
788 | + this.popCx() | |
789 | + this.expect(__acorn.tokTypes.parenR) | |
790 | + return val | |
791 | +} | |
792 | + | |
793 | +lp$2.parseMaybeAssign = function(noIn) { | |
794 | + if (this.toks.isContextual("yield")) { | |
795 | + var node = this.startNode() | |
796 | + this.next() | |
797 | + if (this.semicolon() || this.canInsertSemicolon() || (this.tok.type != __acorn.tokTypes.star && !this.tok.type.startsExpr)) { | |
798 | + node.delegate = false | |
799 | + node.argument = null | |
800 | + } else { | |
801 | + node.delegate = this.eat(__acorn.tokTypes.star) | |
802 | + node.argument = this.parseMaybeAssign() | |
803 | + } | |
804 | + return this.finishNode(node, "YieldExpression") | |
805 | + } | |
806 | + | |
807 | + var start = this.storeCurrentPos() | |
808 | + var left = this.parseMaybeConditional(noIn) | |
809 | + if (this.tok.type.isAssign) { | |
810 | + var node$1 = this.startNodeAt(start) | |
811 | + node$1.operator = this.tok.value | |
812 | + node$1.left = this.tok.type === __acorn.tokTypes.eq ? this.toAssignable(left) : this.checkLVal(left) | |
813 | + this.next() | |
814 | + node$1.right = this.parseMaybeAssign(noIn) | |
815 | + return this.finishNode(node$1, "AssignmentExpression") | |
816 | + } | |
817 | + return left | |
818 | +} | |
819 | + | |
820 | +lp$2.parseMaybeConditional = function(noIn) { | |
821 | + var start = this.storeCurrentPos() | |
822 | + var expr = this.parseExprOps(noIn) | |
823 | + if (this.eat(__acorn.tokTypes.question)) { | |
824 | + var node = this.startNodeAt(start) | |
825 | + node.test = expr | |
826 | + node.consequent = this.parseMaybeAssign() | |
827 | + node.alternate = this.expect(__acorn.tokTypes.colon) ? this.parseMaybeAssign(noIn) : this.dummyIdent() | |
828 | + return this.finishNode(node, "ConditionalExpression") | |
829 | + } | |
830 | + return expr | |
831 | +} | |
832 | + | |
833 | +lp$2.parseExprOps = function(noIn) { | |
834 | + var start = this.storeCurrentPos() | |
835 | + var indent = this.curIndent, line = this.curLineStart | |
836 | + return this.parseExprOp(this.parseMaybeUnary(false), start, -1, noIn, indent, line) | |
837 | +} | |
838 | + | |
839 | +lp$2.parseExprOp = function(left, start, minPrec, noIn, indent, line) { | |
840 | + if (this.curLineStart != line && this.curIndent < indent && this.tokenStartsLine()) return left | |
841 | + var prec = this.tok.type.binop | |
842 | + if (prec != null && (!noIn || this.tok.type !== __acorn.tokTypes._in)) { | |
843 | + if (prec > minPrec) { | |
844 | + var node = this.startNodeAt(start) | |
845 | + node.left = left | |
846 | + node.operator = this.tok.value | |
847 | + this.next() | |
848 | + if (this.curLineStart != line && this.curIndent < indent && this.tokenStartsLine()) { | |
849 | + node.right = this.dummyIdent() | |
850 | + } else { | |
851 | + var rightStart = this.storeCurrentPos() | |
852 | + node.right = this.parseExprOp(this.parseMaybeUnary(false), rightStart, prec, noIn, indent, line) | |
853 | + } | |
854 | + this.finishNode(node, /&&|\|\|/.test(node.operator) ? "LogicalExpression" : "BinaryExpression") | |
855 | + return this.parseExprOp(node, start, minPrec, noIn, indent, line) | |
856 | + } | |
857 | + } | |
858 | + return left | |
859 | +} | |
860 | + | |
861 | +lp$2.parseMaybeUnary = function(sawUnary) { | |
862 | + var this$1 = this; | |
863 | + | |
864 | + var start = this.storeCurrentPos(), expr | |
865 | + if (this.options.ecmaVersion >= 8 && this.inAsync && this.toks.isContextual("await")) { | |
866 | + expr = this.parseAwait() | |
867 | + sawUnary = true | |
868 | + } else if (this.tok.type.prefix) { | |
869 | + var node = this.startNode(), update = this.tok.type === __acorn.tokTypes.incDec | |
870 | + if (!update) sawUnary = true | |
871 | + node.operator = this.tok.value | |
872 | + node.prefix = true | |
873 | + this.next() | |
874 | + node.argument = this.parseMaybeUnary(true) | |
875 | + if (update) node.argument = this.checkLVal(node.argument) | |
876 | + expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression") | |
877 | + } else if (this.tok.type === __acorn.tokTypes.ellipsis) { | |
878 | + var node$1 = this.startNode() | |
879 | + this.next() | |
880 | + node$1.argument = this.parseMaybeUnary(sawUnary) | |
881 | + expr = this.finishNode(node$1, "SpreadElement") | |
882 | + } else { | |
883 | + expr = this.parseExprSubscripts() | |
884 | + while (this.tok.type.postfix && !this.canInsertSemicolon()) { | |
885 | + var node$2 = this$1.startNodeAt(start) | |
886 | + node$2.operator = this$1.tok.value | |
887 | + node$2.prefix = false | |
888 | + node$2.argument = this$1.checkLVal(expr) | |
889 | + this$1.next() | |
890 | + expr = this$1.finishNode(node$2, "UpdateExpression") | |
891 | + } | |
892 | + } | |
893 | + | |
894 | + if (!sawUnary && this.eat(__acorn.tokTypes.starstar)) { | |
895 | + var node$3 = this.startNodeAt(start) | |
896 | + node$3.operator = "**" | |
897 | + node$3.left = expr | |
898 | + node$3.right = this.parseMaybeUnary(false) | |
899 | + return this.finishNode(node$3, "BinaryExpression") | |
900 | + } | |
901 | + | |
902 | + return expr | |
903 | +} | |
904 | + | |
905 | +lp$2.parseExprSubscripts = function() { | |
906 | + var start = this.storeCurrentPos() | |
907 | + return this.parseSubscripts(this.parseExprAtom(), start, false, this.curIndent, this.curLineStart) | |
908 | +} | |
909 | + | |
910 | +lp$2.parseSubscripts = function(base, start, noCalls, startIndent, line) { | |
911 | + var this$1 = this; | |
912 | + | |
913 | + for (;;) { | |
914 | + if (this$1.curLineStart != line && this$1.curIndent <= startIndent && this$1.tokenStartsLine()) { | |
915 | + if (this$1.tok.type == __acorn.tokTypes.dot && this$1.curIndent == startIndent) | |
916 | + --startIndent | |
917 | + else | |
918 | + return base | |
919 | + } | |
920 | + | |
921 | + var maybeAsyncArrow = base.type === "Identifier" && base.name === "async" && !this$1.canInsertSemicolon() | |
922 | + | |
923 | + if (this$1.eat(__acorn.tokTypes.dot)) { | |
924 | + var node = this$1.startNodeAt(start) | |
925 | + node.object = base | |
926 | + if (this$1.curLineStart != line && this$1.curIndent <= startIndent && this$1.tokenStartsLine()) | |
927 | + node.property = this$1.dummyIdent() | |
928 | + else | |
929 | + node.property = this$1.parsePropertyAccessor() || this$1.dummyIdent() | |
930 | + node.computed = false | |
931 | + base = this$1.finishNode(node, "MemberExpression") | |
932 | + } else if (this$1.tok.type == __acorn.tokTypes.bracketL) { | |
933 | + this$1.pushCx() | |
934 | + this$1.next() | |
935 | + var node$1 = this$1.startNodeAt(start) | |
936 | + node$1.object = base | |
937 | + node$1.property = this$1.parseExpression() | |
938 | + node$1.computed = true | |
939 | + this$1.popCx() | |
940 | + this$1.expect(__acorn.tokTypes.bracketR) | |
941 | + base = this$1.finishNode(node$1, "MemberExpression") | |
942 | + } else if (!noCalls && this$1.tok.type == __acorn.tokTypes.parenL) { | |
943 | + var exprList = this$1.parseExprList(__acorn.tokTypes.parenR) | |
944 | + if (maybeAsyncArrow && this$1.eat(__acorn.tokTypes.arrow)) | |
945 | + return this$1.parseArrowExpression(this$1.startNodeAt(start), exprList, true) | |
946 | + var node$2 = this$1.startNodeAt(start) | |
947 | + node$2.callee = base | |
948 | + node$2.arguments = exprList | |
949 | + base = this$1.finishNode(node$2, "CallExpression") | |
950 | + } else if (this$1.tok.type == __acorn.tokTypes.backQuote) { | |
951 | + var node$3 = this$1.startNodeAt(start) | |
952 | + node$3.tag = base | |
953 | + node$3.quasi = this$1.parseTemplate() | |
954 | + base = this$1.finishNode(node$3, "TaggedTemplateExpression") | |
955 | + } else { | |
956 | + return base | |
957 | + } | |
958 | + } | |
959 | +} | |
960 | + | |
961 | +lp$2.parseExprAtom = function() { | |
962 | + var node | |
963 | + switch (this.tok.type) { | |
964 | + case __acorn.tokTypes._this: | |
965 | + case __acorn.tokTypes._super: | |
966 | + var type = this.tok.type === __acorn.tokTypes._this ? "ThisExpression" : "Super" | |
967 | + node = this.startNode() | |
968 | + this.next() | |
969 | + return this.finishNode(node, type) | |
970 | + | |
971 | + case __acorn.tokTypes.name: | |
972 | + var start = this.storeCurrentPos() | |
973 | + var id = this.parseIdent() | |
974 | + var isAsync = false | |
975 | + if (id.name === "async" && !this.canInsertSemicolon()) { | |
976 | + if (this.eat(__acorn.tokTypes._function)) | |
977 | + return this.parseFunction(this.startNodeAt(start), false, true) | |
978 | + if (this.tok.type === __acorn.tokTypes.name) { | |
979 | + id = this.parseIdent() | |
980 | + isAsync = true | |
981 | + } | |
982 | + } | |
983 | + return this.eat(__acorn.tokTypes.arrow) ? this.parseArrowExpression(this.startNodeAt(start), [id], isAsync) : id | |
984 | + | |
985 | + case __acorn.tokTypes.regexp: | |
986 | + node = this.startNode() | |
987 | + var val = this.tok.value | |
988 | + node.regex = {pattern: val.pattern, flags: val.flags} | |
989 | + node.value = val.value | |
990 | + node.raw = this.input.slice(this.tok.start, this.tok.end) | |
991 | + this.next() | |
992 | + return this.finishNode(node, "Literal") | |
993 | + | |
994 | + case __acorn.tokTypes.num: case __acorn.tokTypes.string: | |
995 | + node = this.startNode() | |
996 | + node.value = this.tok.value | |
997 | + node.raw = this.input.slice(this.tok.start, this.tok.end) | |
998 | + this.next() | |
999 | + return this.finishNode(node, "Literal") | |
1000 | + | |
1001 | + case __acorn.tokTypes._null: case __acorn.tokTypes._true: case __acorn.tokTypes._false: | |
1002 | + node = this.startNode() | |
1003 | + node.value = this.tok.type === __acorn.tokTypes._null ? null : this.tok.type === __acorn.tokTypes._true | |
1004 | + node.raw = this.tok.type.keyword | |
1005 | + this.next() | |
1006 | + return this.finishNode(node, "Literal") | |
1007 | + | |
1008 | + case __acorn.tokTypes.parenL: | |
1009 | + var parenStart = this.storeCurrentPos() | |
1010 | + this.next() | |
1011 | + var inner = this.parseExpression() | |
1012 | + this.expect(__acorn.tokTypes.parenR) | |
1013 | + if (this.eat(__acorn.tokTypes.arrow)) { | |
1014 | + // (a,)=>a // SequenceExpression makes dummy in the last hole. Drop the dummy. | |
1015 | + var params = inner.expressions || [inner] | |
1016 | + if (params.length && isDummy(params[params.length - 1])) | |
1017 | + params.pop() | |
1018 | + return this.parseArrowExpression(this.startNodeAt(parenStart), params) | |
1019 | + } | |
1020 | + if (this.options.preserveParens) { | |
1021 | + var par = this.startNodeAt(parenStart) | |
1022 | + par.expression = inner | |
1023 | + inner = this.finishNode(par, "ParenthesizedExpression") | |
1024 | + } | |
1025 | + return inner | |
1026 | + | |
1027 | + case __acorn.tokTypes.bracketL: | |
1028 | + node = this.startNode() | |
1029 | + node.elements = this.parseExprList(__acorn.tokTypes.bracketR, true) | |
1030 | + return this.finishNode(node, "ArrayExpression") | |
1031 | + | |
1032 | + case __acorn.tokTypes.braceL: | |
1033 | + return this.parseObj() | |
1034 | + | |
1035 | + case __acorn.tokTypes._class: | |
1036 | + return this.parseClass(false) | |
1037 | + | |
1038 | + case __acorn.tokTypes._function: | |
1039 | + node = this.startNode() | |
1040 | + this.next() | |
1041 | + return this.parseFunction(node, false) | |
1042 | + | |
1043 | + case __acorn.tokTypes._new: | |
1044 | + return this.parseNew() | |
1045 | + | |
1046 | + case __acorn.tokTypes.backQuote: | |
1047 | + return this.parseTemplate() | |
1048 | + | |
1049 | + default: | |
1050 | + return this.dummyIdent() | |
1051 | + } | |
1052 | +} | |
1053 | + | |
1054 | +lp$2.parseNew = function() { | |
1055 | + var node = this.startNode(), startIndent = this.curIndent, line = this.curLineStart | |
1056 | + var meta = this.parseIdent(true) | |
1057 | + if (this.options.ecmaVersion >= 6 && this.eat(__acorn.tokTypes.dot)) { | |
1058 | + node.meta = meta | |
1059 | + node.property = this.parseIdent(true) | |
1060 | + return this.finishNode(node, "MetaProperty") | |
1061 | + } | |
1062 | + var start = this.storeCurrentPos() | |
1063 | + node.callee = this.parseSubscripts(this.parseExprAtom(), start, true, startIndent, line) | |
1064 | + if (this.tok.type == __acorn.tokTypes.parenL) { | |
1065 | + node.arguments = this.parseExprList(__acorn.tokTypes.parenR) | |
1066 | + } else { | |
1067 | + node.arguments = [] | |
1068 | + } | |
1069 | + return this.finishNode(node, "NewExpression") | |
1070 | +} | |
1071 | + | |
1072 | +lp$2.parseTemplateElement = function() { | |
1073 | + var elem = this.startNode() | |
1074 | + elem.value = { | |
1075 | + raw: this.input.slice(this.tok.start, this.tok.end).replace(/\r\n?/g, '\n'), | |
1076 | + cooked: this.tok.value | |
1077 | + } | |
1078 | + this.next() | |
1079 | + elem.tail = this.tok.type === __acorn.tokTypes.backQuote | |
1080 | + return this.finishNode(elem, "TemplateElement") | |
1081 | +} | |
1082 | + | |
1083 | +lp$2.parseTemplate = function() { | |
1084 | + var this$1 = this; | |
1085 | + | |
1086 | + var node = this.startNode() | |
1087 | + this.next() | |
1088 | + node.expressions = [] | |
1089 | + var curElt = this.parseTemplateElement() | |
1090 | + node.quasis = [curElt] | |
1091 | + while (!curElt.tail) { | |
1092 | + this$1.next() | |
1093 | + node.expressions.push(this$1.parseExpression()) | |
1094 | + if (this$1.expect(__acorn.tokTypes.braceR)) { | |
1095 | + curElt = this$1.parseTemplateElement() | |
1096 | + } else { | |
1097 | + curElt = this$1.startNode() | |
1098 | + curElt.value = {cooked: '', raw: ''} | |
1099 | + curElt.tail = true | |
1100 | + this$1.finishNode(curElt, "TemplateElement") | |
1101 | + } | |
1102 | + node.quasis.push(curElt) | |
1103 | + } | |
1104 | + this.expect(__acorn.tokTypes.backQuote) | |
1105 | + return this.finishNode(node, "TemplateLiteral") | |
1106 | +} | |
1107 | + | |
1108 | +lp$2.parseObj = function() { | |
1109 | + var this$1 = this; | |
1110 | + | |
1111 | + var node = this.startNode() | |
1112 | + node.properties = [] | |
1113 | + this.pushCx() | |
1114 | + var indent = this.curIndent + 1, line = this.curLineStart | |
1115 | + this.eat(__acorn.tokTypes.braceL) | |
1116 | + if (this.curIndent + 1 < indent) { indent = this.curIndent; line = this.curLineStart } | |
1117 | + while (!this.closes(__acorn.tokTypes.braceR, indent, line)) { | |
1118 | + var prop = this$1.startNode(), isGenerator, isAsync, start | |
1119 | + if (this$1.options.ecmaVersion >= 6) { | |
1120 | + start = this$1.storeCurrentPos() | |
1121 | + prop.method = false | |
1122 | + prop.shorthand = false | |
1123 | + isGenerator = this$1.eat(__acorn.tokTypes.star) | |
1124 | + } | |
1125 | + this$1.parsePropertyName(prop) | |
1126 | + if (!prop.computed && | |
1127 | + prop.key.type === "Identifier" && prop.key.name === "async" && this$1.tok.type !== __acorn.tokTypes.parenL && | |
1128 | + this$1.tok.type !== __acorn.tokTypes.colon && !this$1.canInsertSemicolon()) { | |
1129 | + this$1.parsePropertyName(prop) | |
1130 | + isAsync = true | |
1131 | + } else { | |
1132 | + isAsync = false | |
1133 | + } | |
1134 | + if (isDummy(prop.key)) { if (isDummy(this$1.parseMaybeAssign())) this$1.next(); this$1.eat(__acorn.tokTypes.comma); continue } | |
1135 | + if (this$1.eat(__acorn.tokTypes.colon)) { | |
1136 | + prop.kind = "init" | |
1137 | + prop.value = this$1.parseMaybeAssign() | |
1138 | + } else if (this$1.options.ecmaVersion >= 6 && (this$1.tok.type === __acorn.tokTypes.parenL || this$1.tok.type === __acorn.tokTypes.braceL)) { | |
1139 | + prop.kind = "init" | |
1140 | + prop.method = true | |
1141 | + prop.value = this$1.parseMethod(isGenerator, isAsync) | |
1142 | + } else if (this$1.options.ecmaVersion >= 5 && prop.key.type === "Identifier" && | |
1143 | + !prop.computed && (prop.key.name === "get" || prop.key.name === "set") && | |
1144 | + (this$1.tok.type != __acorn.tokTypes.comma && this$1.tok.type != __acorn.tokTypes.braceR)) { | |
1145 | + prop.kind = prop.key.name | |
1146 | + this$1.parsePropertyName(prop) | |
1147 | + prop.value = this$1.parseMethod(false) | |
1148 | + } else { | |
1149 | + prop.kind = "init" | |
1150 | + if (this$1.options.ecmaVersion >= 6) { | |
1151 | + if (this$1.eat(__acorn.tokTypes.eq)) { | |
1152 | + var assign = this$1.startNodeAt(start) | |
1153 | + assign.operator = "=" | |
1154 | + assign.left = prop.key | |
1155 | + assign.right = this$1.parseMaybeAssign() | |
1156 | + prop.value = this$1.finishNode(assign, "AssignmentExpression") | |
1157 | + } else { | |
1158 | + prop.value = prop.key | |
1159 | + } | |
1160 | + } else { | |
1161 | + prop.value = this$1.dummyIdent() | |
1162 | + } | |
1163 | + prop.shorthand = true | |
1164 | + } | |
1165 | + node.properties.push(this$1.finishNode(prop, "Property")) | |
1166 | + this$1.eat(__acorn.tokTypes.comma) | |
1167 | + } | |
1168 | + this.popCx() | |
1169 | + if (!this.eat(__acorn.tokTypes.braceR)) { | |
1170 | + // If there is no closing brace, make the node span to the start | |
1171 | + // of the next token (this is useful for Tern) | |
1172 | + this.last.end = this.tok.start | |
1173 | + if (this.options.locations) this.last.loc.end = this.tok.loc.start | |
1174 | + } | |
1175 | + return this.finishNode(node, "ObjectExpression") | |
1176 | +} | |
1177 | + | |
1178 | +lp$2.parsePropertyName = function(prop) { | |
1179 | + if (this.options.ecmaVersion >= 6) { | |
1180 | + if (this.eat(__acorn.tokTypes.bracketL)) { | |
1181 | + prop.computed = true | |
1182 | + prop.key = this.parseExpression() | |
1183 | + this.expect(__acorn.tokTypes.bracketR) | |
1184 | + return | |
1185 | + } else { | |
1186 | + prop.computed = false | |
1187 | + } | |
1188 | + } | |
1189 | + var key = (this.tok.type === __acorn.tokTypes.num || this.tok.type === __acorn.tokTypes.string) ? this.parseExprAtom() : this.parseIdent() | |
1190 | + prop.key = key || this.dummyIdent() | |
1191 | +} | |
1192 | + | |
1193 | +lp$2.parsePropertyAccessor = function() { | |
1194 | + if (this.tok.type === __acorn.tokTypes.name || this.tok.type.keyword) return this.parseIdent() | |
1195 | +} | |
1196 | + | |
1197 | +lp$2.parseIdent = function() { | |
1198 | + var name = this.tok.type === __acorn.tokTypes.name ? this.tok.value : this.tok.type.keyword | |
1199 | + if (!name) return this.dummyIdent() | |
1200 | + var node = this.startNode() | |
1201 | + this.next() | |
1202 | + node.name = name | |
1203 | + return this.finishNode(node, "Identifier") | |
1204 | +} | |
1205 | + | |
1206 | +lp$2.initFunction = function(node) { | |
1207 | + node.id = null | |
1208 | + node.params = [] | |
1209 | + if (this.options.ecmaVersion >= 6) { | |
1210 | + node.generator = false | |
1211 | + node.expression = false | |
1212 | + } | |
1213 | + if (this.options.ecmaVersion >= 8) | |
1214 | + node.async = false | |
1215 | +} | |
1216 | + | |
1217 | +// Convert existing expression atom to assignable pattern | |
1218 | +// if possible. | |
1219 | + | |
1220 | +lp$2.toAssignable = function(node, binding) { | |
1221 | + var this$1 = this; | |
1222 | + | |
1223 | + if (!node || node.type == "Identifier" || (node.type == "MemberExpression" && !binding)) { | |
1224 | + // Okay | |
1225 | + } else if (node.type == "ParenthesizedExpression") { | |
1226 | + node.expression = this.toAssignable(node.expression, binding) | |
1227 | + } else if (this.options.ecmaVersion < 6) { | |
1228 | + return this.dummyIdent() | |
1229 | + } else if (node.type == "ObjectExpression") { | |
1230 | + node.type = "ObjectPattern" | |
1231 | + var props = node.properties | |
1232 | + for (var i = 0; i < props.length; i++) | |
1233 | + props[i].value = this$1.toAssignable(props[i].value, binding) | |
1234 | + } else if (node.type == "ArrayExpression") { | |
1235 | + node.type = "ArrayPattern" | |
1236 | + this.toAssignableList(node.elements, binding) | |
1237 | + } else if (node.type == "SpreadElement") { | |
1238 | + node.type = "RestElement" | |
1239 | + node.argument = this.toAssignable(node.argument, binding) | |
1240 | + } else if (node.type == "AssignmentExpression") { | |
1241 | + node.type = "AssignmentPattern" | |
1242 | + delete node.operator | |
1243 | + } else { | |
1244 | + return this.dummyIdent() | |
1245 | + } | |
1246 | + return node | |
1247 | +} | |
1248 | + | |
1249 | +lp$2.toAssignableList = function(exprList, binding) { | |
1250 | + var this$1 = this; | |
1251 | + | |
1252 | + for (var i = 0; i < exprList.length; i++) | |
1253 | + exprList[i] = this$1.toAssignable(exprList[i], binding) | |
1254 | + return exprList | |
1255 | +} | |
1256 | + | |
1257 | +lp$2.parseFunctionParams = function(params) { | |
1258 | + params = this.parseExprList(__acorn.tokTypes.parenR) | |
1259 | + return this.toAssignableList(params, true) | |
1260 | +} | |
1261 | + | |
1262 | +lp$2.parseMethod = function(isGenerator, isAsync) { | |
1263 | + var node = this.startNode(), oldInAsync = this.inAsync | |
1264 | + this.initFunction(node) | |
1265 | + if (this.options.ecmaVersion >= 6) | |
1266 | + node.generator = !!isGenerator | |
1267 | + if (this.options.ecmaVersion >= 8) | |
1268 | + node.async = !!isAsync | |
1269 | + this.inAsync = node.async | |
1270 | + node.params = this.parseFunctionParams() | |
1271 | + node.expression = this.options.ecmaVersion >= 6 && this.tok.type !== __acorn.tokTypes.braceL | |
1272 | + node.body = node.expression ? this.parseMaybeAssign() : this.parseBlock() | |
1273 | + this.inAsync = oldInAsync | |
1274 | + return this.finishNode(node, "FunctionExpression") | |
1275 | +} | |
1276 | + | |
1277 | +lp$2.parseArrowExpression = function(node, params, isAsync) { | |
1278 | + var oldInAsync = this.inAsync | |
1279 | + this.initFunction(node) | |
1280 | + if (this.options.ecmaVersion >= 8) | |
1281 | + node.async = !!isAsync | |
1282 | + this.inAsync = node.async | |
1283 | + node.params = this.toAssignableList(params, true) | |
1284 | + node.expression = this.tok.type !== __acorn.tokTypes.braceL | |
1285 | + node.body = node.expression ? this.parseMaybeAssign() : this.parseBlock() | |
1286 | + this.inAsync = oldInAsync | |
1287 | + return this.finishNode(node, "ArrowFunctionExpression") | |
1288 | +} | |
1289 | + | |
1290 | +lp$2.parseExprList = function(close, allowEmpty) { | |
1291 | + var this$1 = this; | |
1292 | + | |
1293 | + this.pushCx() | |
1294 | + var indent = this.curIndent, line = this.curLineStart, elts = [] | |
1295 | + this.next() // Opening bracket | |
1296 | + while (!this.closes(close, indent + 1, line)) { | |
1297 | + if (this$1.eat(__acorn.tokTypes.comma)) { | |
1298 | + elts.push(allowEmpty ? null : this$1.dummyIdent()) | |
1299 | + continue | |
1300 | + } | |
1301 | + var elt = this$1.parseMaybeAssign() | |
1302 | + if (isDummy(elt)) { | |
1303 | + if (this$1.closes(close, indent, line)) break | |
1304 | + this$1.next() | |
1305 | + } else { | |
1306 | + elts.push(elt) | |
1307 | + } | |
1308 | + this$1.eat(__acorn.tokTypes.comma) | |
1309 | + } | |
1310 | + this.popCx() | |
1311 | + if (!this.eat(close)) { | |
1312 | + // If there is no closing brace, make the node span to the start | |
1313 | + // of the next token (this is useful for Tern) | |
1314 | + this.last.end = this.tok.start | |
1315 | + if (this.options.locations) this.last.loc.end = this.tok.loc.start | |
1316 | + } | |
1317 | + return elts | |
1318 | +} | |
1319 | + | |
1320 | +lp$2.parseAwait = function() { | |
1321 | + var node = this.startNode() | |
1322 | + this.next() | |
1323 | + node.argument = this.parseMaybeUnary() | |
1324 | + return this.finishNode(node, "AwaitExpression") | |
1325 | +} | |
1326 | + | |
1327 | +// Acorn: Loose parser | |
1328 | +// | |
1329 | +// This module provides an alternative parser (`parse_dammit`) that | |
1330 | +// exposes that same interface as `parse`, but will try to parse | |
1331 | +// anything as JavaScript, repairing syntax error the best it can. | |
1332 | +// There are circumstances in which it will raise an error and give | |
1333 | +// up, but they are very rare. The resulting AST will be a mostly | |
1334 | +// valid JavaScript AST (as per the [Mozilla parser API][api], except | |
1335 | +// that: | |
1336 | +// | |
1337 | +// - Return outside functions is allowed | |
1338 | +// | |
1339 | +// - Label consistency (no conflicts, break only to existing labels) | |
1340 | +// is not enforced. | |
1341 | +// | |
1342 | +// - Bogus Identifier nodes with a name of `"✖"` are inserted whenever | |
1343 | +// the parser got too confused to return anything meaningful. | |
1344 | +// | |
1345 | +// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API | |
1346 | +// | |
1347 | +// The expected use for this is to *first* try `acorn.parse`, and only | |
1348 | +// if that fails switch to `parse_dammit`. The loose parser might | |
1349 | +// parse badly indented code incorrectly, so **don't** use it as | |
1350 | +// your default parser. | |
1351 | +// | |
1352 | +// Quite a lot of acorn.js is duplicated here. The alternative was to | |
1353 | +// add a *lot* of extra cruft to that file, making it less readable | |
1354 | +// and slower. Copying and editing the code allowed me to make | |
1355 | +// invasive changes and simplifications without creating a complicated | |
1356 | +// tangle. | |
1357 | + | |
1358 | +__acorn.defaultOptions.tabSize = 4 | |
1359 | + | |
1360 | +function parse_dammit(input, options) { | |
1361 | + var p = new LooseParser(input, options) | |
1362 | + p.next() | |
1363 | + return p.parseTopLevel() | |
1364 | +} | |
1365 | + | |
1366 | +__acorn.addLooseExports(parse_dammit, LooseParser, pluginsLoose) | |
1367 | + | |
1368 | +exports.parse_dammit = parse_dammit; | |
1369 | +exports.LooseParser = LooseParser; | |
1370 | +exports.pluginsLoose = pluginsLoose; | |
1371 | + | |
1372 | +Object.defineProperty(exports, '__esModule', { value: true }); | |
1373 | + | |
1374 | +}))); | |
0 | 1375 | \ No newline at end of file | ... | ... |
node_modules/acorn-dynamic-import/node_modules/acorn/dist/walk.es.js
0 → 100644
1 | +// AST walker module for Mozilla Parser API compatible trees | |
2 | + | |
3 | +// A simple walk is one where you simply specify callbacks to be | |
4 | +// called on specific nodes. The last two arguments are optional. A | |
5 | +// simple use would be | |
6 | +// | |
7 | +// walk.simple(myTree, { | |
8 | +// Expression: function(node) { ... } | |
9 | +// }); | |
10 | +// | |
11 | +// to do something with all expressions. All Parser API node types | |
12 | +// can be used to identify node types, as well as Expression, | |
13 | +// Statement, and ScopeBody, which denote categories of nodes. | |
14 | +// | |
15 | +// The base argument can be used to pass a custom (recursive) | |
16 | +// walker, and state can be used to give this walked an initial | |
17 | +// state. | |
18 | + | |
19 | +function simple(node, visitors, base, state, override) { | |
20 | + if (!base) base = exports.base | |
21 | + ;(function c(node, st, override) { | |
22 | + var type = override || node.type, found = visitors[type] | |
23 | + base[type](node, st, c) | |
24 | + if (found) found(node, st) | |
25 | + })(node, state, override) | |
26 | +} | |
27 | + | |
28 | +// An ancestor walk keeps an array of ancestor nodes (including the | |
29 | +// current node) and passes them to the callback as third parameter | |
30 | +// (and also as state parameter when no other state is present). | |
31 | +function ancestor(node, visitors, base, state) { | |
32 | + if (!base) base = exports.base | |
33 | + var ancestors = [] | |
34 | + ;(function c(node, st, override) { | |
35 | + var type = override || node.type, found = visitors[type] | |
36 | + var isNew = node != ancestors[ancestors.length - 1] | |
37 | + if (isNew) ancestors.push(node) | |
38 | + base[type](node, st, c) | |
39 | + if (found) found(node, st || ancestors, ancestors) | |
40 | + if (isNew) ancestors.pop() | |
41 | + })(node, state) | |
42 | +} | |
43 | + | |
44 | +// A recursive walk is one where your functions override the default | |
45 | +// walkers. They can modify and replace the state parameter that's | |
46 | +// threaded through the walk, and can opt how and whether to walk | |
47 | +// their child nodes (by calling their third argument on these | |
48 | +// nodes). | |
49 | +function recursive(node, state, funcs, base, override) { | |
50 | + var visitor = funcs ? exports.make(funcs, base) : base | |
51 | + ;(function c(node, st, override) { | |
52 | + visitor[override || node.type](node, st, c) | |
53 | + })(node, state, override) | |
54 | +} | |
55 | + | |
56 | +function makeTest(test) { | |
57 | + if (typeof test == "string") | |
58 | + return function (type) { return type == test; } | |
59 | + else if (!test) | |
60 | + return function () { return true; } | |
61 | + else | |
62 | + return test | |
63 | +} | |
64 | + | |
65 | +var Found = function Found(node, state) { this.node = node; this.state = state }; | |
66 | + | |
67 | +// Find a node with a given start, end, and type (all are optional, | |
68 | +// null can be used as wildcard). Returns a {node, state} object, or | |
69 | +// undefined when it doesn't find a matching node. | |
70 | +function findNodeAt(node, start, end, test, base, state) { | |
71 | + test = makeTest(test) | |
72 | + if (!base) base = exports.base | |
73 | + try { | |
74 | + ;(function c(node, st, override) { | |
75 | + var type = override || node.type | |
76 | + if ((start == null || node.start <= start) && | |
77 | + (end == null || node.end >= end)) | |
78 | + base[type](node, st, c) | |
79 | + if ((start == null || node.start == start) && | |
80 | + (end == null || node.end == end) && | |
81 | + test(type, node)) | |
82 | + throw new Found(node, st) | |
83 | + })(node, state) | |
84 | + } catch (e) { | |
85 | + if (e instanceof Found) return e | |
86 | + throw e | |
87 | + } | |
88 | +} | |
89 | + | |
90 | +// Find the innermost node of a given type that contains the given | |
91 | +// position. Interface similar to findNodeAt. | |
92 | +function findNodeAround(node, pos, test, base, state) { | |
93 | + test = makeTest(test) | |
94 | + if (!base) base = exports.base | |
95 | + try { | |
96 | + ;(function c(node, st, override) { | |
97 | + var type = override || node.type | |
98 | + if (node.start > pos || node.end < pos) return | |
99 | + base[type](node, st, c) | |
100 | + if (test(type, node)) throw new Found(node, st) | |
101 | + })(node, state) | |
102 | + } catch (e) { | |
103 | + if (e instanceof Found) return e | |
104 | + throw e | |
105 | + } | |
106 | +} | |
107 | + | |
108 | +// Find the outermost matching node after a given position. | |
109 | +function findNodeAfter(node, pos, test, base, state) { | |
110 | + test = makeTest(test) | |
111 | + if (!base) base = exports.base | |
112 | + try { | |
113 | + ;(function c(node, st, override) { | |
114 | + if (node.end < pos) return | |
115 | + var type = override || node.type | |
116 | + if (node.start >= pos && test(type, node)) throw new Found(node, st) | |
117 | + base[type](node, st, c) | |
118 | + })(node, state) | |
119 | + } catch (e) { | |
120 | + if (e instanceof Found) return e | |
121 | + throw e | |
122 | + } | |
123 | +} | |
124 | + | |
125 | +// Find the outermost matching node before a given position. | |
126 | +function findNodeBefore(node, pos, test, base, state) { | |
127 | + test = makeTest(test) | |
128 | + if (!base) base = exports.base | |
129 | + var max | |
130 | + ;(function c(node, st, override) { | |
131 | + if (node.start > pos) return | |
132 | + var type = override || node.type | |
133 | + if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node)) | |
134 | + max = new Found(node, st) | |
135 | + base[type](node, st, c) | |
136 | + })(node, state) | |
137 | + return max | |
138 | +} | |
139 | + | |
140 | +// Fallback to an Object.create polyfill for older environments. | |
141 | +var create = Object.create || function(proto) { | |
142 | + function Ctor() {} | |
143 | + Ctor.prototype = proto | |
144 | + return new Ctor | |
145 | +} | |
146 | + | |
147 | +// Used to create a custom walker. Will fill in all missing node | |
148 | +// type properties with the defaults. | |
149 | +function make(funcs, base) { | |
150 | + if (!base) base = exports.base | |
151 | + var visitor = create(base) | |
152 | + for (var type in funcs) visitor[type] = funcs[type] | |
153 | + return visitor | |
154 | +} | |
155 | + | |
156 | +function skipThrough(node, st, c) { c(node, st) } | |
157 | +function ignore(_node, _st, _c) {} | |
158 | + | |
159 | +// Node walkers. | |
160 | + | |
161 | +var base = {} | |
162 | + | |
163 | +base.Program = base.BlockStatement = function (node, st, c) { | |
164 | + for (var i = 0; i < node.body.length; ++i) | |
165 | + c(node.body[i], st, "Statement") | |
166 | +} | |
167 | +base.Statement = skipThrough | |
168 | +base.EmptyStatement = ignore | |
169 | +base.ExpressionStatement = base.ParenthesizedExpression = | |
170 | + function (node, st, c) { return c(node.expression, st, "Expression"); } | |
171 | +base.IfStatement = function (node, st, c) { | |
172 | + c(node.test, st, "Expression") | |
173 | + c(node.consequent, st, "Statement") | |
174 | + if (node.alternate) c(node.alternate, st, "Statement") | |
175 | +} | |
176 | +base.LabeledStatement = function (node, st, c) { return c(node.body, st, "Statement"); } | |
177 | +base.BreakStatement = base.ContinueStatement = ignore | |
178 | +base.WithStatement = function (node, st, c) { | |
179 | + c(node.object, st, "Expression") | |
180 | + c(node.body, st, "Statement") | |
181 | +} | |
182 | +base.SwitchStatement = function (node, st, c) { | |
183 | + c(node.discriminant, st, "Expression") | |
184 | + for (var i = 0; i < node.cases.length; ++i) { | |
185 | + var cs = node.cases[i] | |
186 | + if (cs.test) c(cs.test, st, "Expression") | |
187 | + for (var j = 0; j < cs.consequent.length; ++j) | |
188 | + c(cs.consequent[j], st, "Statement") | |
189 | + } | |
190 | +} | |
191 | +base.ReturnStatement = base.YieldExpression = base.AwaitExpression = function (node, st, c) { | |
192 | + if (node.argument) c(node.argument, st, "Expression") | |
193 | +} | |
194 | +base.ThrowStatement = base.SpreadElement = | |
195 | + function (node, st, c) { return c(node.argument, st, "Expression"); } | |
196 | +base.TryStatement = function (node, st, c) { | |
197 | + c(node.block, st, "Statement") | |
198 | + if (node.handler) c(node.handler, st) | |
199 | + if (node.finalizer) c(node.finalizer, st, "Statement") | |
200 | +} | |
201 | +base.CatchClause = function (node, st, c) { | |
202 | + c(node.param, st, "Pattern") | |
203 | + c(node.body, st, "ScopeBody") | |
204 | +} | |
205 | +base.WhileStatement = base.DoWhileStatement = function (node, st, c) { | |
206 | + c(node.test, st, "Expression") | |
207 | + c(node.body, st, "Statement") | |
208 | +} | |
209 | +base.ForStatement = function (node, st, c) { | |
210 | + if (node.init) c(node.init, st, "ForInit") | |
211 | + if (node.test) c(node.test, st, "Expression") | |
212 | + if (node.update) c(node.update, st, "Expression") | |
213 | + c(node.body, st, "Statement") | |
214 | +} | |
215 | +base.ForInStatement = base.ForOfStatement = function (node, st, c) { | |
216 | + c(node.left, st, "ForInit") | |
217 | + c(node.right, st, "Expression") | |
218 | + c(node.body, st, "Statement") | |
219 | +} | |
220 | +base.ForInit = function (node, st, c) { | |
221 | + if (node.type == "VariableDeclaration") c(node, st) | |
222 | + else c(node, st, "Expression") | |
223 | +} | |
224 | +base.DebuggerStatement = ignore | |
225 | + | |
226 | +base.FunctionDeclaration = function (node, st, c) { return c(node, st, "Function"); } | |
227 | +base.VariableDeclaration = function (node, st, c) { | |
228 | + for (var i = 0; i < node.declarations.length; ++i) | |
229 | + c(node.declarations[i], st) | |
230 | +} | |
231 | +base.VariableDeclarator = function (node, st, c) { | |
232 | + c(node.id, st, "Pattern") | |
233 | + if (node.init) c(node.init, st, "Expression") | |
234 | +} | |
235 | + | |
236 | +base.Function = function (node, st, c) { | |
237 | + if (node.id) c(node.id, st, "Pattern") | |
238 | + for (var i = 0; i < node.params.length; i++) | |
239 | + c(node.params[i], st, "Pattern") | |
240 | + c(node.body, st, node.expression ? "ScopeExpression" : "ScopeBody") | |
241 | +} | |
242 | +// FIXME drop these node types in next major version | |
243 | +// (They are awkward, and in ES6 every block can be a scope.) | |
244 | +base.ScopeBody = function (node, st, c) { return c(node, st, "Statement"); } | |
245 | +base.ScopeExpression = function (node, st, c) { return c(node, st, "Expression"); } | |
246 | + | |
247 | +base.Pattern = function (node, st, c) { | |
248 | + if (node.type == "Identifier") | |
249 | + c(node, st, "VariablePattern") | |
250 | + else if (node.type == "MemberExpression") | |
251 | + c(node, st, "MemberPattern") | |
252 | + else | |
253 | + c(node, st) | |
254 | +} | |
255 | +base.VariablePattern = ignore | |
256 | +base.MemberPattern = skipThrough | |
257 | +base.RestElement = function (node, st, c) { return c(node.argument, st, "Pattern"); } | |
258 | +base.ArrayPattern = function (node, st, c) { | |
259 | + for (var i = 0; i < node.elements.length; ++i) { | |
260 | + var elt = node.elements[i] | |
261 | + if (elt) c(elt, st, "Pattern") | |
262 | + } | |
263 | +} | |
264 | +base.ObjectPattern = function (node, st, c) { | |
265 | + for (var i = 0; i < node.properties.length; ++i) | |
266 | + c(node.properties[i].value, st, "Pattern") | |
267 | +} | |
268 | + | |
269 | +base.Expression = skipThrough | |
270 | +base.ThisExpression = base.Super = base.MetaProperty = ignore | |
271 | +base.ArrayExpression = function (node, st, c) { | |
272 | + for (var i = 0; i < node.elements.length; ++i) { | |
273 | + var elt = node.elements[i] | |
274 | + if (elt) c(elt, st, "Expression") | |
275 | + } | |
276 | +} | |
277 | +base.ObjectExpression = function (node, st, c) { | |
278 | + for (var i = 0; i < node.properties.length; ++i) | |
279 | + c(node.properties[i], st) | |
280 | +} | |
281 | +base.FunctionExpression = base.ArrowFunctionExpression = base.FunctionDeclaration | |
282 | +base.SequenceExpression = base.TemplateLiteral = function (node, st, c) { | |
283 | + for (var i = 0; i < node.expressions.length; ++i) | |
284 | + c(node.expressions[i], st, "Expression") | |
285 | +} | |
286 | +base.UnaryExpression = base.UpdateExpression = function (node, st, c) { | |
287 | + c(node.argument, st, "Expression") | |
288 | +} | |
289 | +base.BinaryExpression = base.LogicalExpression = function (node, st, c) { | |
290 | + c(node.left, st, "Expression") | |
291 | + c(node.right, st, "Expression") | |
292 | +} | |
293 | +base.AssignmentExpression = base.AssignmentPattern = function (node, st, c) { | |
294 | + c(node.left, st, "Pattern") | |
295 | + c(node.right, st, "Expression") | |
296 | +} | |
297 | +base.ConditionalExpression = function (node, st, c) { | |
298 | + c(node.test, st, "Expression") | |
299 | + c(node.consequent, st, "Expression") | |
300 | + c(node.alternate, st, "Expression") | |
301 | +} | |
302 | +base.NewExpression = base.CallExpression = function (node, st, c) { | |
303 | + c(node.callee, st, "Expression") | |
304 | + if (node.arguments) for (var i = 0; i < node.arguments.length; ++i) | |
305 | + c(node.arguments[i], st, "Expression") | |
306 | +} | |
307 | +base.MemberExpression = function (node, st, c) { | |
308 | + c(node.object, st, "Expression") | |
309 | + if (node.computed) c(node.property, st, "Expression") | |
310 | +} | |
311 | +base.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) { | |
312 | + if (node.declaration) | |
313 | + c(node.declaration, st, node.type == "ExportNamedDeclaration" || node.declaration.id ? "Statement" : "Expression") | |
314 | + if (node.source) c(node.source, st, "Expression") | |
315 | +} | |
316 | +base.ExportAllDeclaration = function (node, st, c) { | |
317 | + c(node.source, st, "Expression") | |
318 | +} | |
319 | +base.ImportDeclaration = function (node, st, c) { | |
320 | + for (var i = 0; i < node.specifiers.length; i++) | |
321 | + c(node.specifiers[i], st) | |
322 | + c(node.source, st, "Expression") | |
323 | +} | |
324 | +base.ImportSpecifier = base.ImportDefaultSpecifier = base.ImportNamespaceSpecifier = base.Identifier = base.Literal = ignore | |
325 | + | |
326 | +base.TaggedTemplateExpression = function (node, st, c) { | |
327 | + c(node.tag, st, "Expression") | |
328 | + c(node.quasi, st) | |
329 | +} | |
330 | +base.ClassDeclaration = base.ClassExpression = function (node, st, c) { return c(node, st, "Class"); } | |
331 | +base.Class = function (node, st, c) { | |
332 | + if (node.id) c(node.id, st, "Pattern") | |
333 | + if (node.superClass) c(node.superClass, st, "Expression") | |
334 | + for (var i = 0; i < node.body.body.length; i++) | |
335 | + c(node.body.body[i], st) | |
336 | +} | |
337 | +base.MethodDefinition = base.Property = function (node, st, c) { | |
338 | + if (node.computed) c(node.key, st, "Expression") | |
339 | + c(node.value, st, "Expression") | |
340 | +} | |
341 | + | |
342 | +export { simple, ancestor, recursive, findNodeAt, findNodeAround, findNodeAfter, findNodeBefore, make, base }; | |
0 | 343 | \ No newline at end of file | ... | ... |
node_modules/acorn-dynamic-import/node_modules/acorn/dist/walk.js
0 → 100644
1 | +(function (global, factory) { | |
2 | + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | |
3 | + typeof define === 'function' && define.amd ? define(['exports'], factory) : | |
4 | + (factory((global.acorn = global.acorn || {}, global.acorn.walk = global.acorn.walk || {}))); | |
5 | +}(this, (function (exports) { 'use strict'; | |
6 | + | |
7 | +// AST walker module for Mozilla Parser API compatible trees | |
8 | + | |
9 | +// A simple walk is one where you simply specify callbacks to be | |
10 | +// called on specific nodes. The last two arguments are optional. A | |
11 | +// simple use would be | |
12 | +// | |
13 | +// walk.simple(myTree, { | |
14 | +// Expression: function(node) { ... } | |
15 | +// }); | |
16 | +// | |
17 | +// to do something with all expressions. All Parser API node types | |
18 | +// can be used to identify node types, as well as Expression, | |
19 | +// Statement, and ScopeBody, which denote categories of nodes. | |
20 | +// | |
21 | +// The base argument can be used to pass a custom (recursive) | |
22 | +// walker, and state can be used to give this walked an initial | |
23 | +// state. | |
24 | + | |
25 | +function simple(node, visitors, base, state, override) { | |
26 | + if (!base) base = exports.base | |
27 | + ;(function c(node, st, override) { | |
28 | + var type = override || node.type, found = visitors[type] | |
29 | + base[type](node, st, c) | |
30 | + if (found) found(node, st) | |
31 | + })(node, state, override) | |
32 | +} | |
33 | + | |
34 | +// An ancestor walk keeps an array of ancestor nodes (including the | |
35 | +// current node) and passes them to the callback as third parameter | |
36 | +// (and also as state parameter when no other state is present). | |
37 | +function ancestor(node, visitors, base, state) { | |
38 | + if (!base) base = exports.base | |
39 | + var ancestors = [] | |
40 | + ;(function c(node, st, override) { | |
41 | + var type = override || node.type, found = visitors[type] | |
42 | + var isNew = node != ancestors[ancestors.length - 1] | |
43 | + if (isNew) ancestors.push(node) | |
44 | + base[type](node, st, c) | |
45 | + if (found) found(node, st || ancestors, ancestors) | |
46 | + if (isNew) ancestors.pop() | |
47 | + })(node, state) | |
48 | +} | |
49 | + | |
50 | +// A recursive walk is one where your functions override the default | |
51 | +// walkers. They can modify and replace the state parameter that's | |
52 | +// threaded through the walk, and can opt how and whether to walk | |
53 | +// their child nodes (by calling their third argument on these | |
54 | +// nodes). | |
55 | +function recursive(node, state, funcs, base, override) { | |
56 | + var visitor = funcs ? exports.make(funcs, base) : base | |
57 | + ;(function c(node, st, override) { | |
58 | + visitor[override || node.type](node, st, c) | |
59 | + })(node, state, override) | |
60 | +} | |
61 | + | |
62 | +function makeTest(test) { | |
63 | + if (typeof test == "string") | |
64 | + return function (type) { return type == test; } | |
65 | + else if (!test) | |
66 | + return function () { return true; } | |
67 | + else | |
68 | + return test | |
69 | +} | |
70 | + | |
71 | +var Found = function Found(node, state) { this.node = node; this.state = state }; | |
72 | + | |
73 | +// Find a node with a given start, end, and type (all are optional, | |
74 | +// null can be used as wildcard). Returns a {node, state} object, or | |
75 | +// undefined when it doesn't find a matching node. | |
76 | +function findNodeAt(node, start, end, test, base, state) { | |
77 | + test = makeTest(test) | |
78 | + if (!base) base = exports.base | |
79 | + try { | |
80 | + ;(function c(node, st, override) { | |
81 | + var type = override || node.type | |
82 | + if ((start == null || node.start <= start) && | |
83 | + (end == null || node.end >= end)) | |
84 | + base[type](node, st, c) | |
85 | + if ((start == null || node.start == start) && | |
86 | + (end == null || node.end == end) && | |
87 | + test(type, node)) | |
88 | + throw new Found(node, st) | |
89 | + })(node, state) | |
90 | + } catch (e) { | |
91 | + if (e instanceof Found) return e | |
92 | + throw e | |
93 | + } | |
94 | +} | |
95 | + | |
96 | +// Find the innermost node of a given type that contains the given | |
97 | +// position. Interface similar to findNodeAt. | |
98 | +function findNodeAround(node, pos, test, base, state) { | |
99 | + test = makeTest(test) | |
100 | + if (!base) base = exports.base | |
101 | + try { | |
102 | + ;(function c(node, st, override) { | |
103 | + var type = override || node.type | |
104 | + if (node.start > pos || node.end < pos) return | |
105 | + base[type](node, st, c) | |
106 | + if (test(type, node)) throw new Found(node, st) | |
107 | + })(node, state) | |
108 | + } catch (e) { | |
109 | + if (e instanceof Found) return e | |
110 | + throw e | |
111 | + } | |
112 | +} | |
113 | + | |
114 | +// Find the outermost matching node after a given position. | |
115 | +function findNodeAfter(node, pos, test, base, state) { | |
116 | + test = makeTest(test) | |
117 | + if (!base) base = exports.base | |
118 | + try { | |
119 | + ;(function c(node, st, override) { | |
120 | + if (node.end < pos) return | |
121 | + var type = override || node.type | |
122 | + if (node.start >= pos && test(type, node)) throw new Found(node, st) | |
123 | + base[type](node, st, c) | |
124 | + })(node, state) | |
125 | + } catch (e) { | |
126 | + if (e instanceof Found) return e | |
127 | + throw e | |
128 | + } | |
129 | +} | |
130 | + | |
131 | +// Find the outermost matching node before a given position. | |
132 | +function findNodeBefore(node, pos, test, base, state) { | |
133 | + test = makeTest(test) | |
134 | + if (!base) base = exports.base | |
135 | + var max | |
136 | + ;(function c(node, st, override) { | |
137 | + if (node.start > pos) return | |
138 | + var type = override || node.type | |
139 | + if (node.end <= pos && (!max || max.node.end < node.end) && test(type, node)) | |
140 | + max = new Found(node, st) | |
141 | + base[type](node, st, c) | |
142 | + })(node, state) | |
143 | + return max | |
144 | +} | |
145 | + | |
146 | +// Fallback to an Object.create polyfill for older environments. | |
147 | +var create = Object.create || function(proto) { | |
148 | + function Ctor() {} | |
149 | + Ctor.prototype = proto | |
150 | + return new Ctor | |
151 | +} | |
152 | + | |
153 | +// Used to create a custom walker. Will fill in all missing node | |
154 | +// type properties with the defaults. | |
155 | +function make(funcs, base) { | |
156 | + if (!base) base = exports.base | |
157 | + var visitor = create(base) | |
158 | + for (var type in funcs) visitor[type] = funcs[type] | |
159 | + return visitor | |
160 | +} | |
161 | + | |
162 | +function skipThrough(node, st, c) { c(node, st) } | |
163 | +function ignore(_node, _st, _c) {} | |
164 | + | |
165 | +// Node walkers. | |
166 | + | |
167 | +var base = {} | |
168 | + | |
169 | +base.Program = base.BlockStatement = function (node, st, c) { | |
170 | + for (var i = 0; i < node.body.length; ++i) | |
171 | + c(node.body[i], st, "Statement") | |
172 | +} | |
173 | +base.Statement = skipThrough | |
174 | +base.EmptyStatement = ignore | |
175 | +base.ExpressionStatement = base.ParenthesizedExpression = | |
176 | + function (node, st, c) { return c(node.expression, st, "Expression"); } | |
177 | +base.IfStatement = function (node, st, c) { | |
178 | + c(node.test, st, "Expression") | |
179 | + c(node.consequent, st, "Statement") | |
180 | + if (node.alternate) c(node.alternate, st, "Statement") | |
181 | +} | |
182 | +base.LabeledStatement = function (node, st, c) { return c(node.body, st, "Statement"); } | |
183 | +base.BreakStatement = base.ContinueStatement = ignore | |
184 | +base.WithStatement = function (node, st, c) { | |
185 | + c(node.object, st, "Expression") | |
186 | + c(node.body, st, "Statement") | |
187 | +} | |
188 | +base.SwitchStatement = function (node, st, c) { | |
189 | + c(node.discriminant, st, "Expression") | |
190 | + for (var i = 0; i < node.cases.length; ++i) { | |
191 | + var cs = node.cases[i] | |
192 | + if (cs.test) c(cs.test, st, "Expression") | |
193 | + for (var j = 0; j < cs.consequent.length; ++j) | |
194 | + c(cs.consequent[j], st, "Statement") | |
195 | + } | |
196 | +} | |
197 | +base.ReturnStatement = base.YieldExpression = base.AwaitExpression = function (node, st, c) { | |
198 | + if (node.argument) c(node.argument, st, "Expression") | |
199 | +} | |
200 | +base.ThrowStatement = base.SpreadElement = | |
201 | + function (node, st, c) { return c(node.argument, st, "Expression"); } | |
202 | +base.TryStatement = function (node, st, c) { | |
203 | + c(node.block, st, "Statement") | |
204 | + if (node.handler) c(node.handler, st) | |
205 | + if (node.finalizer) c(node.finalizer, st, "Statement") | |
206 | +} | |
207 | +base.CatchClause = function (node, st, c) { | |
208 | + c(node.param, st, "Pattern") | |
209 | + c(node.body, st, "ScopeBody") | |
210 | +} | |
211 | +base.WhileStatement = base.DoWhileStatement = function (node, st, c) { | |
212 | + c(node.test, st, "Expression") | |
213 | + c(node.body, st, "Statement") | |
214 | +} | |
215 | +base.ForStatement = function (node, st, c) { | |
216 | + if (node.init) c(node.init, st, "ForInit") | |
217 | + if (node.test) c(node.test, st, "Expression") | |
218 | + if (node.update) c(node.update, st, "Expression") | |
219 | + c(node.body, st, "Statement") | |
220 | +} | |
221 | +base.ForInStatement = base.ForOfStatement = function (node, st, c) { | |
222 | + c(node.left, st, "ForInit") | |
223 | + c(node.right, st, "Expression") | |
224 | + c(node.body, st, "Statement") | |
225 | +} | |
226 | +base.ForInit = function (node, st, c) { | |
227 | + if (node.type == "VariableDeclaration") c(node, st) | |
228 | + else c(node, st, "Expression") | |
229 | +} | |
230 | +base.DebuggerStatement = ignore | |
231 | + | |
232 | +base.FunctionDeclaration = function (node, st, c) { return c(node, st, "Function"); } | |
233 | +base.VariableDeclaration = function (node, st, c) { | |
234 | + for (var i = 0; i < node.declarations.length; ++i) | |
235 | + c(node.declarations[i], st) | |
236 | +} | |
237 | +base.VariableDeclarator = function (node, st, c) { | |
238 | + c(node.id, st, "Pattern") | |
239 | + if (node.init) c(node.init, st, "Expression") | |
240 | +} | |
241 | + | |
242 | +base.Function = function (node, st, c) { | |
243 | + if (node.id) c(node.id, st, "Pattern") | |
244 | + for (var i = 0; i < node.params.length; i++) | |
245 | + c(node.params[i], st, "Pattern") | |
246 | + c(node.body, st, node.expression ? "ScopeExpression" : "ScopeBody") | |
247 | +} | |
248 | +// FIXME drop these node types in next major version | |
249 | +// (They are awkward, and in ES6 every block can be a scope.) | |
250 | +base.ScopeBody = function (node, st, c) { return c(node, st, "Statement"); } | |
251 | +base.ScopeExpression = function (node, st, c) { return c(node, st, "Expression"); } | |
252 | + | |
253 | +base.Pattern = function (node, st, c) { | |
254 | + if (node.type == "Identifier") | |
255 | + c(node, st, "VariablePattern") | |
256 | + else if (node.type == "MemberExpression") | |
257 | + c(node, st, "MemberPattern") | |
258 | + else | |
259 | + c(node, st) | |
260 | +} | |
261 | +base.VariablePattern = ignore | |
262 | +base.MemberPattern = skipThrough | |
263 | +base.RestElement = function (node, st, c) { return c(node.argument, st, "Pattern"); } | |
264 | +base.ArrayPattern = function (node, st, c) { | |
265 | + for (var i = 0; i < node.elements.length; ++i) { | |
266 | + var elt = node.elements[i] | |
267 | + if (elt) c(elt, st, "Pattern") | |
268 | + } | |
269 | +} | |
270 | +base.ObjectPattern = function (node, st, c) { | |
271 | + for (var i = 0; i < node.properties.length; ++i) | |
272 | + c(node.properties[i].value, st, "Pattern") | |
273 | +} | |
274 | + | |
275 | +base.Expression = skipThrough | |
276 | +base.ThisExpression = base.Super = base.MetaProperty = ignore | |
277 | +base.ArrayExpression = function (node, st, c) { | |
278 | + for (var i = 0; i < node.elements.length; ++i) { | |
279 | + var elt = node.elements[i] | |
280 | + if (elt) c(elt, st, "Expression") | |
281 | + } | |
282 | +} | |
283 | +base.ObjectExpression = function (node, st, c) { | |
284 | + for (var i = 0; i < node.properties.length; ++i) | |
285 | + c(node.properties[i], st) | |
286 | +} | |
287 | +base.FunctionExpression = base.ArrowFunctionExpression = base.FunctionDeclaration | |
288 | +base.SequenceExpression = base.TemplateLiteral = function (node, st, c) { | |
289 | + for (var i = 0; i < node.expressions.length; ++i) | |
290 | + c(node.expressions[i], st, "Expression") | |
291 | +} | |
292 | +base.UnaryExpression = base.UpdateExpression = function (node, st, c) { | |
293 | + c(node.argument, st, "Expression") | |
294 | +} | |
295 | +base.BinaryExpression = base.LogicalExpression = function (node, st, c) { | |
296 | + c(node.left, st, "Expression") | |
297 | + c(node.right, st, "Expression") | |
298 | +} | |
299 | +base.AssignmentExpression = base.AssignmentPattern = function (node, st, c) { | |
300 | + c(node.left, st, "Pattern") | |
301 | + c(node.right, st, "Expression") | |
302 | +} | |
303 | +base.ConditionalExpression = function (node, st, c) { | |
304 | + c(node.test, st, "Expression") | |
305 | + c(node.consequent, st, "Expression") | |
306 | + c(node.alternate, st, "Expression") | |
307 | +} | |
308 | +base.NewExpression = base.CallExpression = function (node, st, c) { | |
309 | + c(node.callee, st, "Expression") | |
310 | + if (node.arguments) for (var i = 0; i < node.arguments.length; ++i) | |
311 | + c(node.arguments[i], st, "Expression") | |
312 | +} | |
313 | +base.MemberExpression = function (node, st, c) { | |
314 | + c(node.object, st, "Expression") | |
315 | + if (node.computed) c(node.property, st, "Expression") | |
316 | +} | |
317 | +base.ExportNamedDeclaration = base.ExportDefaultDeclaration = function (node, st, c) { | |
318 | + if (node.declaration) | |
319 | + c(node.declaration, st, node.type == "ExportNamedDeclaration" || node.declaration.id ? "Statement" : "Expression") | |
320 | + if (node.source) c(node.source, st, "Expression") | |
321 | +} | |
322 | +base.ExportAllDeclaration = function (node, st, c) { | |
323 | + c(node.source, st, "Expression") | |
324 | +} | |
325 | +base.ImportDeclaration = function (node, st, c) { | |
326 | + for (var i = 0; i < node.specifiers.length; i++) | |
327 | + c(node.specifiers[i], st) | |
328 | + c(node.source, st, "Expression") | |
329 | +} | |
330 | +base.ImportSpecifier = base.ImportDefaultSpecifier = base.ImportNamespaceSpecifier = base.Identifier = base.Literal = ignore | |
331 | + | |
332 | +base.TaggedTemplateExpression = function (node, st, c) { | |
333 | + c(node.tag, st, "Expression") | |
334 | + c(node.quasi, st) | |
335 | +} | |
336 | +base.ClassDeclaration = base.ClassExpression = function (node, st, c) { return c(node, st, "Class"); } | |
337 | +base.Class = function (node, st, c) { | |
338 | + if (node.id) c(node.id, st, "Pattern") | |
339 | + if (node.superClass) c(node.superClass, st, "Expression") | |
340 | + for (var i = 0; i < node.body.body.length; i++) | |
341 | + c(node.body.body[i], st) | |
342 | +} | |
343 | +base.MethodDefinition = base.Property = function (node, st, c) { | |
344 | + if (node.computed) c(node.key, st, "Expression") | |
345 | + c(node.value, st, "Expression") | |
346 | +} | |
347 | + | |
348 | +exports.simple = simple; | |
349 | +exports.ancestor = ancestor; | |
350 | +exports.recursive = recursive; | |
351 | +exports.findNodeAt = findNodeAt; | |
352 | +exports.findNodeAround = findNodeAround; | |
353 | +exports.findNodeAfter = findNodeAfter; | |
354 | +exports.findNodeBefore = findNodeBefore; | |
355 | +exports.make = make; | |
356 | +exports.base = base; | |
357 | + | |
358 | +Object.defineProperty(exports, '__esModule', { value: true }); | |
359 | + | |
360 | +}))); | |
0 | 361 | \ No newline at end of file | ... | ... |
node_modules/acorn-dynamic-import/node_modules/acorn/package.json
0 → 100644
1 | +{ | |
2 | + "_from": "acorn@^4.0.3", | |
3 | + "_id": "acorn@4.0.13", | |
4 | + "_inBundle": false, | |
5 | + "_integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", | |
6 | + "_location": "/acorn-dynamic-import/acorn", | |
7 | + "_phantomChildren": {}, | |
8 | + "_requested": { | |
9 | + "type": "range", | |
10 | + "registry": true, | |
11 | + "raw": "acorn@^4.0.3", | |
12 | + "name": "acorn", | |
13 | + "escapedName": "acorn", | |
14 | + "rawSpec": "^4.0.3", | |
15 | + "saveSpec": null, | |
16 | + "fetchSpec": "^4.0.3" | |
17 | + }, | |
18 | + "_requiredBy": [ | |
19 | + "/acorn-dynamic-import" | |
20 | + ], | |
21 | + "_resolved": "http://registry.npm.taobao.org/acorn/download/acorn-4.0.13.tgz", | |
22 | + "_shasum": "105495ae5361d697bd195c825192e1ad7f253787", | |
23 | + "_spec": "acorn@^4.0.3", | |
24 | + "_where": "/Library/WebServer/Documents/mywork/cityOperationCenter/node_modules/acorn-dynamic-import", | |
25 | + "bin": { | |
26 | + "acorn": "./bin/acorn" | |
27 | + }, | |
28 | + "bugs": { | |
29 | + "url": "https://github.com/ternjs/acorn/issues" | |
30 | + }, | |
31 | + "bundleDependencies": false, | |
32 | + "contributors": [ | |
33 | + { | |
34 | + "name": "List of Acorn contributors. Updated before every release." | |
35 | + }, | |
36 | + { | |
37 | + "name": "Adrian Rakovsky" | |
38 | + }, | |
39 | + { | |
40 | + "name": "Alistair Braidwood" | |
41 | + }, | |
42 | + { | |
43 | + "name": "Amila Welihinda" | |
44 | + }, | |
45 | + { | |
46 | + "name": "Andres Suarez" | |
47 | + }, | |
48 | + { | |
49 | + "name": "Angelo" | |
50 | + }, | |
51 | + { | |
52 | + "name": "Aparajita Fishman" | |
53 | + }, | |
54 | + { | |
55 | + "name": "Arian Stolwijk" | |
56 | + }, | |
57 | + { | |
58 | + "name": "Artem Govorov" | |
59 | + }, | |
60 | + { | |
61 | + "name": "Brandon Mills" | |
62 | + }, | |
63 | + { | |
64 | + "name": "Charles Hughes" | |
65 | + }, | |
66 | + { | |
67 | + "name": "Conrad Irwin" | |
68 | + }, | |
69 | + { | |
70 | + "name": "Daniel Tschinder" | |
71 | + }, | |
72 | + { | |
73 | + "name": "David Bonnet" | |
74 | + }, | |
75 | + { | |
76 | + "name": "Domenico Matteo" | |
77 | + }, | |
78 | + { | |
79 | + "name": "Forbes Lindesay" | |
80 | + }, | |
81 | + { | |
82 | + "name": "Gilad Peleg" | |
83 | + }, | |
84 | + { | |
85 | + "name": "impinball" | |
86 | + }, | |
87 | + { | |
88 | + "name": "Ingvar Stepanyan" | |
89 | + }, | |
90 | + { | |
91 | + "name": "Jackson Ray Hamilton" | |
92 | + }, | |
93 | + { | |
94 | + "name": "Jesse McCarthy" | |
95 | + }, | |
96 | + { | |
97 | + "name": "Jiaxing Wang" | |
98 | + }, | |
99 | + { | |
100 | + "name": "Joel Kemp" | |
101 | + }, | |
102 | + { | |
103 | + "name": "Johannes Herr" | |
104 | + }, | |
105 | + { | |
106 | + "name": "Jordan Klassen" | |
107 | + }, | |
108 | + { | |
109 | + "name": "Jürg Lehni" | |
110 | + }, | |
111 | + { | |
112 | + "name": "Kai Cataldo" | |
113 | + }, | |
114 | + { | |
115 | + "name": "keeyipchan" | |
116 | + }, | |
117 | + { | |
118 | + "name": "Keheliya Gallaba" | |
119 | + }, | |
120 | + { | |
121 | + "name": "Kevin Irish" | |
122 | + }, | |
123 | + { | |
124 | + "name": "Kevin Kwok" | |
125 | + }, | |
126 | + { | |
127 | + "name": "krator" | |
128 | + }, | |
129 | + { | |
130 | + "name": "Marijn Haverbeke" | |
131 | + }, | |
132 | + { | |
133 | + "name": "Martin Carlberg" | |
134 | + }, | |
135 | + { | |
136 | + "name": "Mat Garcia" | |
137 | + }, | |
138 | + { | |
139 | + "name": "Mathias Bynens" | |
140 | + }, | |
141 | + { | |
142 | + "name": "Mathieu 'p01' Henri" | |
143 | + }, | |
144 | + { | |
145 | + "name": "Matthew Bastien" | |
146 | + }, | |
147 | + { | |
148 | + "name": "Max Schaefer" | |
149 | + }, | |
150 | + { | |
151 | + "name": "Max Zerzouri" | |
152 | + }, | |
153 | + { | |
154 | + "name": "Mihai Bazon" | |
155 | + }, | |
156 | + { | |
157 | + "name": "Mike Rennie" | |
158 | + }, | |
159 | + { | |
160 | + "name": "naoh" | |
161 | + }, | |
162 | + { | |
163 | + "name": "Nicholas C. Zakas" | |
164 | + }, | |
165 | + { | |
166 | + "name": "Nick Fitzgerald" | |
167 | + }, | |
168 | + { | |
169 | + "name": "Olivier Thomann" | |
170 | + }, | |
171 | + { | |
172 | + "name": "Oskar Schöldström" | |
173 | + }, | |
174 | + { | |
175 | + "name": "Paul Harper" | |
176 | + }, | |
177 | + { | |
178 | + "name": "Peter Rust" | |
179 | + }, | |
180 | + { | |
181 | + "name": "PlNG" | |
182 | + }, | |
183 | + { | |
184 | + "name": "Prayag Verma" | |
185 | + }, | |
186 | + { | |
187 | + "name": "ReadmeCritic" | |
188 | + }, | |
189 | + { | |
190 | + "name": "r-e-d" | |
191 | + }, | |
192 | + { | |
193 | + "name": "Richard Gibson" | |
194 | + }, | |
195 | + { | |
196 | + "name": "Rich Harris" | |
197 | + }, | |
198 | + { | |
199 | + "name": "Sebastian McKenzie" | |
200 | + }, | |
201 | + { | |
202 | + "name": "Simen Bekkhus" | |
203 | + }, | |
204 | + { | |
205 | + "name": "Timothy Gu" | |
206 | + }, | |
207 | + { | |
208 | + "name": "Toru Nagashima" | |
209 | + }, | |
210 | + { | |
211 | + "name": "Wexpo Lyu" | |
212 | + }, | |
213 | + { | |
214 | + "name": "zsjforcn" | |
215 | + } | |
216 | + ], | |
217 | + "deprecated": false, | |
218 | + "description": "ECMAScript parser", | |
219 | + "devDependencies": { | |
220 | + "rollup": "^0.34.1", | |
221 | + "rollup-plugin-buble": "^0.11.0", | |
222 | + "unicode-9.0.0": "^0.7.0" | |
223 | + }, | |
224 | + "engines": { | |
225 | + "node": ">=0.4.0" | |
226 | + }, | |
227 | + "homepage": "https://github.com/ternjs/acorn", | |
228 | + "jsnext:main": "dist/acorn.es.js", | |
229 | + "license": "MIT", | |
230 | + "main": "dist/acorn.js", | |
231 | + "maintainers": [ | |
232 | + { | |
233 | + "name": "Marijn Haverbeke", | |
234 | + "email": "marijnh@gmail.com", | |
235 | + "url": "http://marijnhaverbeke.nl" | |
236 | + }, | |
237 | + { | |
238 | + "name": "Ingvar Stepanyan", | |
239 | + "email": "me@rreverser.com", | |
240 | + "url": "http://rreverser.com/" | |
241 | + } | |
242 | + ], | |
243 | + "name": "acorn", | |
244 | + "repository": { | |
245 | + "type": "git", | |
246 | + "url": "git+https://github.com/ternjs/acorn.git" | |
247 | + }, | |
248 | + "scripts": { | |
249 | + "build": "npm run build:main && npm run build:walk && npm run build:loose && npm run build:bin", | |
250 | + "build:bin": "rollup -c rollup/config.bin.js", | |
251 | + "build:loose": "rollup -c rollup/config.loose.js", | |
252 | + "build:main": "rollup -c rollup/config.main.js", | |
253 | + "build:walk": "rollup -c rollup/config.walk.js", | |
254 | + "prepublish": "npm test", | |
255 | + "pretest": "npm run build", | |
256 | + "test": "node test/run.js" | |
257 | + }, | |
258 | + "version": "4.0.13" | |
259 | +} | ... | ... |
node_modules/acorn-dynamic-import/node_modules/acorn/src/bin/acorn.js
0 → 100644
1 | +import {basename} from "path" | |
2 | +import {readFileSync as readFile} from "fs" | |
3 | +import * as acorn from "acorn" | |
4 | + | |
5 | +let infile, forceFile, silent = false, compact = false, tokenize = false | |
6 | +const options = {} | |
7 | + | |
8 | +function help(status) { | |
9 | + const print = (status == 0) ? console.log : console.error | |
10 | + print("usage: " + basename(process.argv[1]) + " [--ecma3|--ecma5|--ecma6|--ecma7|...|--ecma2015|--ecma2016|...]") | |
11 | + print(" [--tokenize] [--locations] [---allow-hash-bang] [--compact] [--silent] [--module] [--help] [--] [infile]") | |
12 | + process.exit(status) | |
13 | +} | |
14 | + | |
15 | +for (let i = 2; i < process.argv.length; ++i) { | |
16 | + const arg = process.argv[i] | |
17 | + if ((arg == "-" || arg[0] != "-") && !infile) infile = arg | |
18 | + else if (arg == "--" && !infile && i + 2 == process.argv.length) forceFile = infile = process.argv[++i] | |
19 | + else if (arg == "--locations") options.locations = true | |
20 | + else if (arg == "--allow-hash-bang") options.allowHashBang = true | |
21 | + else if (arg == "--silent") silent = true | |
22 | + else if (arg == "--compact") compact = true | |
23 | + else if (arg == "--help") help(0) | |
24 | + else if (arg == "--tokenize") tokenize = true | |
25 | + else if (arg == "--module") options.sourceType = 'module' | |
26 | + else { | |
27 | + let match = arg.match(/^--ecma(\d+)$/) | |
28 | + if (match) | |
29 | + options.ecmaVersion = +match[1] | |
30 | + else | |
31 | + help(1) | |
32 | + } | |
33 | +} | |
34 | + | |
35 | +function run(code) { | |
36 | + let result | |
37 | + if (!tokenize) { | |
38 | + try { result = acorn.parse(code, options) } | |
39 | + catch(e) { console.error(e.message); process.exit(1) } | |
40 | + } else { | |
41 | + result = [] | |
42 | + let tokenizer = acorn.tokenizer(code, options), token | |
43 | + while (true) { | |
44 | + try { token = tokenizer.getToken() } | |
45 | + catch(e) { console.error(e.message); process.exit(1) } | |
46 | + result.push(token) | |
47 | + if (token.type == acorn.tokTypes.eof) break | |
48 | + } | |
49 | + } | |
50 | + if (!silent) console.log(JSON.stringify(result, null, compact ? null : 2)) | |
51 | +} | |
52 | + | |
53 | +if (forceFile || infile && infile != "-") { | |
54 | + run(readFile(infile, "utf8")) | |
55 | +} else { | |
56 | + let code = "" | |
57 | + process.stdin.resume() | |
58 | + process.stdin.on("data", chunk => code += chunk) | |
59 | + process.stdin.on("end", () => run(code)) | |
60 | +} | ... | ... |
node_modules/acorn-dynamic-import/node_modules/acorn/src/expression.js
0 → 100644
1 | +// A recursive descent parser operates by defining functions for all | |
2 | +// syntactic elements, and recursively calling those, each function | |
3 | +// advancing the input stream and returning an AST node. Precedence | |
4 | +// of constructs (for example, the fact that `!x[1]` means `!(x[1])` | |
5 | +// instead of `(!x)[1]` is handled by the fact that the parser | |
6 | +// function that parses unary prefix operators is called first, and | |
7 | +// in turn calls the function that parses `[]` subscripts — that | |
8 | +// way, it'll receive the node for `x[1]` already parsed, and wraps | |
9 | +// *that* in the unary operator node. | |
10 | +// | |
11 | +// Acorn uses an [operator precedence parser][opp] to handle binary | |
12 | +// operator precedence, because it is much more compact than using | |
13 | +// the technique outlined above, which uses different, nesting | |
14 | +// functions to specify precedence, for all of the ten binary | |
15 | +// precedence levels that JavaScript defines. | |
16 | +// | |
17 | +// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser | |
18 | + | |
19 | +import {types as tt} from "./tokentype" | |
20 | +import {Parser} from "./state" | |
21 | +import {DestructuringErrors} from "./parseutil" | |
22 | + | |
23 | +const pp = Parser.prototype | |
24 | + | |
25 | +// Check if property name clashes with already added. | |
26 | +// Object/class getters and setters are not allowed to clash — | |
27 | +// either with each other or with an init property — and in | |
28 | +// strict mode, init properties are also not allowed to be repeated. | |
29 | + | |
30 | +pp.checkPropClash = function(prop, propHash) { | |
31 | + if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand)) | |
32 | + return | |
33 | + let {key} = prop, name | |
34 | + switch (key.type) { | |
35 | + case "Identifier": name = key.name; break | |
36 | + case "Literal": name = String(key.value); break | |
37 | + default: return | |
38 | + } | |
39 | + let {kind} = prop | |
40 | + if (this.options.ecmaVersion >= 6) { | |
41 | + if (name === "__proto__" && kind === "init") { | |
42 | + if (propHash.proto) this.raiseRecoverable(key.start, "Redefinition of __proto__ property") | |
43 | + propHash.proto = true | |
44 | + } | |
45 | + return | |
46 | + } | |
47 | + name = "$" + name | |
48 | + let other = propHash[name] | |
49 | + if (other) { | |
50 | + let isGetSet = kind !== "init" | |
51 | + if ((this.strict || isGetSet) && other[kind] || !(isGetSet ^ other.init)) | |
52 | + this.raiseRecoverable(key.start, "Redefinition of property") | |
53 | + } else { | |
54 | + other = propHash[name] = { | |
55 | + init: false, | |
56 | + get: false, | |
57 | + set: false | |
58 | + } | |
59 | + } | |
60 | + other[kind] = true | |
61 | +} | |
62 | + | |
63 | +// ### Expression parsing | |
64 | + | |
65 | +// These nest, from the most general expression type at the top to | |
66 | +// 'atomic', nondivisible expression types at the bottom. Most of | |
67 | +// the functions will simply let the function(s) below them parse, | |
68 | +// and, *if* the syntactic construct they handle is present, wrap | |
69 | +// the AST node that the inner parser gave them in another node. | |
70 | + | |
71 | +// Parse a full expression. The optional arguments are used to | |
72 | +// forbid the `in` operator (in for loops initalization expressions) | |
73 | +// and provide reference for storing '=' operator inside shorthand | |
74 | +// property assignment in contexts where both object expression | |
75 | +// and object pattern might appear (so it's possible to raise | |
76 | +// delayed syntax error at correct position). | |
77 | + | |
78 | +pp.parseExpression = function(noIn, refDestructuringErrors) { | |
79 | + let startPos = this.start, startLoc = this.startLoc | |
80 | + let expr = this.parseMaybeAssign(noIn, refDestructuringErrors) | |
81 | + if (this.type === tt.comma) { | |
82 | + let node = this.startNodeAt(startPos, startLoc) | |
83 | + node.expressions = [expr] | |
84 | + while (this.eat(tt.comma)) node.expressions.push(this.parseMaybeAssign(noIn, refDestructuringErrors)) | |
85 | + return this.finishNode(node, "SequenceExpression") | |
86 | + } | |
87 | + return expr | |
88 | +} | |
89 | + | |
90 | +// Parse an assignment expression. This includes applications of | |
91 | +// operators like `+=`. | |
92 | + | |
93 | +pp.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) { | |
94 | + if (this.inGenerator && this.isContextual("yield")) return this.parseYield() | |
95 | + | |
96 | + let ownDestructuringErrors = false, oldParenAssign = -1 | |
97 | + if (refDestructuringErrors) { | |
98 | + oldParenAssign = refDestructuringErrors.parenthesizedAssign | |
99 | + refDestructuringErrors.parenthesizedAssign = -1 | |
100 | + } else { | |
101 | + refDestructuringErrors = new DestructuringErrors | |
102 | + ownDestructuringErrors = true | |
103 | + } | |
104 | + | |
105 | + let startPos = this.start, startLoc = this.startLoc | |
106 | + if (this.type == tt.parenL || this.type == tt.name) | |
107 | + this.potentialArrowAt = this.start | |
108 | + let left = this.parseMaybeConditional(noIn, refDestructuringErrors) | |
109 | + if (afterLeftParse) left = afterLeftParse.call(this, left, startPos, startLoc) | |
110 | + if (this.type.isAssign) { | |
111 | + this.checkPatternErrors(refDestructuringErrors, true) | |
112 | + if (!ownDestructuringErrors) DestructuringErrors.call(refDestructuringErrors) | |
113 | + let node = this.startNodeAt(startPos, startLoc) | |
114 | + node.operator = this.value | |
115 | + node.left = this.type === tt.eq ? this.toAssignable(left) : left | |
116 | + refDestructuringErrors.shorthandAssign = -1 // reset because shorthand default was used correctly | |
117 | + this.checkLVal(left) | |
118 | + this.next() | |
119 | + node.right = this.parseMaybeAssign(noIn) | |
120 | + return this.finishNode(node, "AssignmentExpression") | |
121 | + } else { | |
122 | + if (ownDestructuringErrors) this.checkExpressionErrors(refDestructuringErrors, true) | |
123 | + } | |
124 | + if (oldParenAssign > -1) refDestructuringErrors.parenthesizedAssign = oldParenAssign | |
125 | + return left | |
126 | +} | |
127 | + | |
128 | +// Parse a ternary conditional (`?:`) operator. | |
129 | + | |
130 | +pp.parseMaybeConditional = function(noIn, refDestructuringErrors) { | |
131 | + let startPos = this.start, startLoc = this.startLoc | |
132 | + let expr = this.parseExprOps(noIn, refDestructuringErrors) | |
133 | + if (this.checkExpressionErrors(refDestructuringErrors)) return expr | |
134 | + if (this.eat(tt.question)) { | |
135 | + let node = this.startNodeAt(startPos, startLoc) | |
136 | + node.test = expr | |
137 | + node.consequent = this.parseMaybeAssign() | |
138 | + this.expect(tt.colon) | |
139 | + node.alternate = this.parseMaybeAssign(noIn) | |
140 | + return this.finishNode(node, "ConditionalExpression") | |
141 | + } | |
142 | + return expr | |
143 | +} | |
144 | + | |
145 | +// Start the precedence parser. | |
146 | + | |
147 | +pp.parseExprOps = function(noIn, refDestructuringErrors) { | |
148 | + let startPos = this.start, startLoc = this.startLoc | |
149 | + let expr = this.parseMaybeUnary(refDestructuringErrors, false) | |
150 | + if (this.checkExpressionErrors(refDestructuringErrors)) return expr | |
151 | + return this.parseExprOp(expr, startPos, startLoc, -1, noIn) | |
152 | +} | |
153 | + | |
154 | +// Parse binary operators with the operator precedence parsing | |
155 | +// algorithm. `left` is the left-hand side of the operator. | |
156 | +// `minPrec` provides context that allows the function to stop and | |
157 | +// defer further parser to one of its callers when it encounters an | |
158 | +// operator that has a lower precedence than the set it is parsing. | |
159 | + | |
160 | +pp.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, noIn) { | |
161 | + let prec = this.type.binop | |
162 | + if (prec != null && (!noIn || this.type !== tt._in)) { | |
163 | + if (prec > minPrec) { | |
164 | + let logical = this.type === tt.logicalOR || this.type === tt.logicalAND | |
165 | + let op = this.value | |
166 | + this.next() | |
167 | + let startPos = this.start, startLoc = this.startLoc | |
168 | + let right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, noIn) | |
169 | + let node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical) | |
170 | + return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn) | |
171 | + } | |
172 | + } | |
173 | + return left | |
174 | +} | |
175 | + | |
176 | +pp.buildBinary = function(startPos, startLoc, left, right, op, logical) { | |
177 | + let node = this.startNodeAt(startPos, startLoc) | |
178 | + node.left = left | |
179 | + node.operator = op | |
180 | + node.right = right | |
181 | + return this.finishNode(node, logical ? "LogicalExpression" : "BinaryExpression") | |
182 | +} | |
183 | + | |
184 | +// Parse unary operators, both prefix and postfix. | |
185 | + | |
186 | +pp.parseMaybeUnary = function(refDestructuringErrors, sawUnary) { | |
187 | + let startPos = this.start, startLoc = this.startLoc, expr | |
188 | + if (this.inAsync && this.isContextual("await")) { | |
189 | + expr = this.parseAwait(refDestructuringErrors) | |
190 | + sawUnary = true | |
191 | + } else if (this.type.prefix) { | |
192 | + let node = this.startNode(), update = this.type === tt.incDec | |
193 | + node.operator = this.value | |
194 | + node.prefix = true | |
195 | + this.next() | |
196 | + node.argument = this.parseMaybeUnary(null, true) | |
197 | + this.checkExpressionErrors(refDestructuringErrors, true) | |
198 | + if (update) this.checkLVal(node.argument) | |
199 | + else if (this.strict && node.operator === "delete" && | |
200 | + node.argument.type === "Identifier") | |
201 | + this.raiseRecoverable(node.start, "Deleting local variable in strict mode") | |
202 | + else sawUnary = true | |
203 | + expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression") | |
204 | + } else { | |
205 | + expr = this.parseExprSubscripts(refDestructuringErrors) | |
206 | + if (this.checkExpressionErrors(refDestructuringErrors)) return expr | |
207 | + while (this.type.postfix && !this.canInsertSemicolon()) { | |
208 | + let node = this.startNodeAt(startPos, startLoc) | |
209 | + node.operator = this.value | |
210 | + node.prefix = false | |
211 | + node.argument = expr | |
212 | + this.checkLVal(expr) | |
213 | + this.next() | |
214 | + expr = this.finishNode(node, "UpdateExpression") | |
215 | + } | |
216 | + } | |
217 | + | |
218 | + if (!sawUnary && this.eat(tt.starstar)) | |
219 | + return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), "**", false) | |
220 | + else | |
221 | + return expr | |
222 | +} | |
223 | + | |
224 | +// Parse call, dot, and `[]`-subscript expressions. | |
225 | + | |
226 | +pp.parseExprSubscripts = function(refDestructuringErrors) { | |
227 | + let startPos = this.start, startLoc = this.startLoc | |
228 | + let expr = this.parseExprAtom(refDestructuringErrors) | |
229 | + let skipArrowSubscripts = expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")" | |
230 | + if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) return expr | |
231 | + let result = this.parseSubscripts(expr, startPos, startLoc) | |
232 | + if (refDestructuringErrors && result.type === "MemberExpression") { | |
233 | + if (refDestructuringErrors.parenthesizedAssign >= result.start) refDestructuringErrors.parenthesizedAssign = -1 | |
234 | + if (refDestructuringErrors.parenthesizedBind >= result.start) refDestructuringErrors.parenthesizedBind = -1 | |
235 | + } | |
236 | + return result | |
237 | +} | |
238 | + | |
239 | +pp.parseSubscripts = function(base, startPos, startLoc, noCalls) { | |
240 | + let maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && | |
241 | + this.lastTokEnd == base.end && !this.canInsertSemicolon() | |
242 | + for (let computed;;) { | |
243 | + if ((computed = this.eat(tt.bracketL)) || this.eat(tt.dot)) { | |
244 | + let node = this.startNodeAt(startPos, startLoc) | |
245 | + node.object = base | |
246 | + node.property = computed ? this.parseExpression() : this.parseIdent(true) | |
247 | + node.computed = !!computed | |
248 | + if (computed) this.expect(tt.bracketR) | |
249 | + base = this.finishNode(node, "MemberExpression") | |
250 | + } else if (!noCalls && this.eat(tt.parenL)) { | |
251 | + let refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos | |
252 | + this.yieldPos = 0 | |
253 | + this.awaitPos = 0 | |
254 | + let exprList = this.parseExprList(tt.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors) | |
255 | + if (maybeAsyncArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) { | |
256 | + this.checkPatternErrors(refDestructuringErrors, false) | |
257 | + this.checkYieldAwaitInDefaultParams() | |
258 | + this.yieldPos = oldYieldPos | |
259 | + this.awaitPos = oldAwaitPos | |
260 | + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true) | |
261 | + } | |
262 | + this.checkExpressionErrors(refDestructuringErrors, true) | |
263 | + this.yieldPos = oldYieldPos || this.yieldPos | |
264 | + this.awaitPos = oldAwaitPos || this.awaitPos | |
265 | + let node = this.startNodeAt(startPos, startLoc) | |
266 | + node.callee = base | |
267 | + node.arguments = exprList | |
268 | + base = this.finishNode(node, "CallExpression") | |
269 | + } else if (this.type === tt.backQuote) { | |
270 | + let node = this.startNodeAt(startPos, startLoc) | |
271 | + node.tag = base | |
272 | + node.quasi = this.parseTemplate() | |
273 | + base = this.finishNode(node, "TaggedTemplateExpression") | |
274 | + } else { | |
275 | + return base | |
276 | + } | |
277 | + } | |
278 | +} | |
279 | + | |
280 | +// Parse an atomic expression — either a single token that is an | |
281 | +// expression, an expression started by a keyword like `function` or | |
282 | +// `new`, or an expression wrapped in punctuation like `()`, `[]`, | |
283 | +// or `{}`. | |
284 | + | |
285 | +pp.parseExprAtom = function(refDestructuringErrors) { | |
286 | + let node, canBeArrow = this.potentialArrowAt == this.start | |
287 | + switch (this.type) { | |
288 | + case tt._super: | |
289 | + if (!this.inFunction) | |
290 | + this.raise(this.start, "'super' outside of function or class") | |
291 | + | |
292 | + case tt._this: | |
293 | + let type = this.type === tt._this ? "ThisExpression" : "Super" | |
294 | + node = this.startNode() | |
295 | + this.next() | |
296 | + return this.finishNode(node, type) | |
297 | + | |
298 | + case tt.name: | |
299 | + let startPos = this.start, startLoc = this.startLoc | |
300 | + let id = this.parseIdent(this.type !== tt.name) | |
301 | + if (this.options.ecmaVersion >= 8 && id.name === "async" && !this.canInsertSemicolon() && this.eat(tt._function)) | |
302 | + return this.parseFunction(this.startNodeAt(startPos, startLoc), false, false, true) | |
303 | + if (canBeArrow && !this.canInsertSemicolon()) { | |
304 | + if (this.eat(tt.arrow)) | |
305 | + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false) | |
306 | + if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === tt.name) { | |
307 | + id = this.parseIdent() | |
308 | + if (this.canInsertSemicolon() || !this.eat(tt.arrow)) | |
309 | + this.unexpected() | |
310 | + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true) | |
311 | + } | |
312 | + } | |
313 | + return id | |
314 | + | |
315 | + case tt.regexp: | |
316 | + let value = this.value | |
317 | + node = this.parseLiteral(value.value) | |
318 | + node.regex = {pattern: value.pattern, flags: value.flags} | |
319 | + return node | |
320 | + | |
321 | + case tt.num: case tt.string: | |
322 | + return this.parseLiteral(this.value) | |
323 | + | |
324 | + case tt._null: case tt._true: case tt._false: | |
325 | + node = this.startNode() | |
326 | + node.value = this.type === tt._null ? null : this.type === tt._true | |
327 | + node.raw = this.type.keyword | |
328 | + this.next() | |
329 | + return this.finishNode(node, "Literal") | |
330 | + | |
331 | + case tt.parenL: | |
332 | + let start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow) | |
333 | + if (refDestructuringErrors) { | |
334 | + if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr)) | |
335 | + refDestructuringErrors.parenthesizedAssign = start | |
336 | + if (refDestructuringErrors.parenthesizedBind < 0) | |
337 | + refDestructuringErrors.parenthesizedBind = start | |
338 | + } | |
339 | + return expr | |
340 | + | |
341 | + case tt.bracketL: | |
342 | + node = this.startNode() | |
343 | + this.next() | |
344 | + node.elements = this.parseExprList(tt.bracketR, true, true, refDestructuringErrors) | |
345 | + return this.finishNode(node, "ArrayExpression") | |
346 | + | |
347 | + case tt.braceL: | |
348 | + return this.parseObj(false, refDestructuringErrors) | |
349 | + | |
350 | + case tt._function: | |
351 | + node = this.startNode() | |
352 | + this.next() | |
353 | + return this.parseFunction(node, false) | |
354 | + | |
355 | + case tt._class: | |
356 | + return this.parseClass(this.startNode(), false) | |
357 | + | |
358 | + case tt._new: | |
359 | + return this.parseNew() | |
360 | + | |
361 | + case tt.backQuote: | |
362 | + return this.parseTemplate() | |
363 | + | |
364 | + default: | |
365 | + this.unexpected() | |
366 | + } | |
367 | +} | |
368 | + | |
369 | +pp.parseLiteral = function(value) { | |
370 | + let node = this.startNode() | |
371 | + node.value = value | |
372 | + node.raw = this.input.slice(this.start, this.end) | |
373 | + this.next() | |
374 | + return this.finishNode(node, "Literal") | |
375 | +} | |
376 | + | |
377 | +pp.parseParenExpression = function() { | |
378 | + this.expect(tt.parenL) | |
379 | + let val = this.parseExpression() | |
380 | + this.expect(tt.parenR) | |
381 | + return val | |
382 | +} | |
383 | + | |
384 | +pp.parseParenAndDistinguishExpression = function(canBeArrow) { | |
385 | + let startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8 | |
386 | + if (this.options.ecmaVersion >= 6) { | |
387 | + this.next() | |
388 | + | |
389 | + let innerStartPos = this.start, innerStartLoc = this.startLoc | |
390 | + let exprList = [], first = true, lastIsComma = false | |
391 | + let refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart, innerParenStart | |
392 | + this.yieldPos = 0 | |
393 | + this.awaitPos = 0 | |
394 | + while (this.type !== tt.parenR) { | |
395 | + first ? first = false : this.expect(tt.comma) | |
396 | + if (allowTrailingComma && this.afterTrailingComma(tt.parenR, true)) { | |
397 | + lastIsComma = true | |
398 | + break | |
399 | + } else if (this.type === tt.ellipsis) { | |
400 | + spreadStart = this.start | |
401 | + exprList.push(this.parseParenItem(this.parseRest())) | |
402 | + if (this.type === tt.comma) this.raise(this.start, "Comma is not permitted after the rest element") | |
403 | + break | |
404 | + } else { | |
405 | + if (this.type === tt.parenL && !innerParenStart) { | |
406 | + innerParenStart = this.start | |
407 | + } | |
408 | + exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem)) | |
409 | + } | |
410 | + } | |
411 | + let innerEndPos = this.start, innerEndLoc = this.startLoc | |
412 | + this.expect(tt.parenR) | |
413 | + | |
414 | + if (canBeArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) { | |
415 | + this.checkPatternErrors(refDestructuringErrors, false) | |
416 | + this.checkYieldAwaitInDefaultParams() | |
417 | + if (innerParenStart) this.unexpected(innerParenStart) | |
418 | + this.yieldPos = oldYieldPos | |
419 | + this.awaitPos = oldAwaitPos | |
420 | + return this.parseParenArrowList(startPos, startLoc, exprList) | |
421 | + } | |
422 | + | |
423 | + if (!exprList.length || lastIsComma) this.unexpected(this.lastTokStart) | |
424 | + if (spreadStart) this.unexpected(spreadStart) | |
425 | + this.checkExpressionErrors(refDestructuringErrors, true) | |
426 | + this.yieldPos = oldYieldPos || this.yieldPos | |
427 | + this.awaitPos = oldAwaitPos || this.awaitPos | |
428 | + | |
429 | + if (exprList.length > 1) { | |
430 | + val = this.startNodeAt(innerStartPos, innerStartLoc) | |
431 | + val.expressions = exprList | |
432 | + this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc) | |
433 | + } else { | |
434 | + val = exprList[0] | |
435 | + } | |
436 | + } else { | |
437 | + val = this.parseParenExpression() | |
438 | + } | |
439 | + | |
440 | + if (this.options.preserveParens) { | |
441 | + let par = this.startNodeAt(startPos, startLoc) | |
442 | + par.expression = val | |
443 | + return this.finishNode(par, "ParenthesizedExpression") | |
444 | + } else { | |
445 | + return val | |
446 | + } | |
447 | +} | |
448 | + | |
449 | +pp.parseParenItem = function(item) { | |
450 | + return item | |
451 | +} | |
452 | + | |
453 | +pp.parseParenArrowList = function(startPos, startLoc, exprList) { | |
454 | + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList) | |
455 | +} | |
456 | + | |
457 | +// New's precedence is slightly tricky. It must allow its argument to | |
458 | +// be a `[]` or dot subscript expression, but not a call — at least, | |
459 | +// not without wrapping it in parentheses. Thus, it uses the noCalls | |
460 | +// argument to parseSubscripts to prevent it from consuming the | |
461 | +// argument list. | |
462 | + | |
463 | +const empty = [] | |
464 | + | |
465 | +pp.parseNew = function() { | |
466 | + let node = this.startNode() | |
467 | + let meta = this.parseIdent(true) | |
468 | + if (this.options.ecmaVersion >= 6 && this.eat(tt.dot)) { | |
469 | + node.meta = meta | |
470 | + node.property = this.parseIdent(true) | |
471 | + if (node.property.name !== "target") | |
472 | + this.raiseRecoverable(node.property.start, "The only valid meta property for new is new.target") | |
473 | + if (!this.inFunction) | |
474 | + this.raiseRecoverable(node.start, "new.target can only be used in functions") | |
475 | + return this.finishNode(node, "MetaProperty") | |
476 | + } | |
477 | + let startPos = this.start, startLoc = this.startLoc | |
478 | + node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true) | |
479 | + if (this.eat(tt.parenL)) node.arguments = this.parseExprList(tt.parenR, this.options.ecmaVersion >= 8, false) | |
480 | + else node.arguments = empty | |
481 | + return this.finishNode(node, "NewExpression") | |
482 | +} | |
483 | + | |
484 | +// Parse template expression. | |
485 | + | |
486 | +pp.parseTemplateElement = function() { | |
487 | + let elem = this.startNode() | |
488 | + elem.value = { | |
489 | + raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, '\n'), | |
490 | + cooked: this.value | |
491 | + } | |
492 | + this.next() | |
493 | + elem.tail = this.type === tt.backQuote | |
494 | + return this.finishNode(elem, "TemplateElement") | |
495 | +} | |
496 | + | |
497 | +pp.parseTemplate = function() { | |
498 | + let node = this.startNode() | |
499 | + this.next() | |
500 | + node.expressions = [] | |
501 | + let curElt = this.parseTemplateElement() | |
502 | + node.quasis = [curElt] | |
503 | + while (!curElt.tail) { | |
504 | + this.expect(tt.dollarBraceL) | |
505 | + node.expressions.push(this.parseExpression()) | |
506 | + this.expect(tt.braceR) | |
507 | + node.quasis.push(curElt = this.parseTemplateElement()) | |
508 | + } | |
509 | + this.next() | |
510 | + return this.finishNode(node, "TemplateLiteral") | |
511 | +} | |
512 | + | |
513 | +// Parse an object literal or binding pattern. | |
514 | + | |
515 | +pp.parseObj = function(isPattern, refDestructuringErrors) { | |
516 | + let node = this.startNode(), first = true, propHash = {} | |
517 | + node.properties = [] | |
518 | + this.next() | |
519 | + while (!this.eat(tt.braceR)) { | |
520 | + if (!first) { | |
521 | + this.expect(tt.comma) | |
522 | + if (this.afterTrailingComma(tt.braceR)) break | |
523 | + } else first = false | |
524 | + | |
525 | + let prop = this.startNode(), isGenerator, isAsync, startPos, startLoc | |
526 | + if (this.options.ecmaVersion >= 6) { | |
527 | + prop.method = false | |
528 | + prop.shorthand = false | |
529 | + if (isPattern || refDestructuringErrors) { | |
530 | + startPos = this.start | |
531 | + startLoc = this.startLoc | |
532 | + } | |
533 | + if (!isPattern) | |
534 | + isGenerator = this.eat(tt.star) | |
535 | + } | |
536 | + this.parsePropertyName(prop) | |
537 | + if (!isPattern && this.options.ecmaVersion >= 8 && !isGenerator && !prop.computed && | |
538 | + prop.key.type === "Identifier" && prop.key.name === "async" && this.type !== tt.parenL && | |
539 | + this.type !== tt.colon && !this.canInsertSemicolon()) { | |
540 | + isAsync = true | |
541 | + this.parsePropertyName(prop, refDestructuringErrors) | |
542 | + } else { | |
543 | + isAsync = false | |
544 | + } | |
545 | + this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors) | |
546 | + this.checkPropClash(prop, propHash) | |
547 | + node.properties.push(this.finishNode(prop, "Property")) | |
548 | + } | |
549 | + return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression") | |
550 | +} | |
551 | + | |
552 | +pp.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors) { | |
553 | + if ((isGenerator || isAsync) && this.type === tt.colon) | |
554 | + this.unexpected() | |
555 | + | |
556 | + if (this.eat(tt.colon)) { | |
557 | + prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors) | |
558 | + prop.kind = "init" | |
559 | + } else if (this.options.ecmaVersion >= 6 && this.type === tt.parenL) { | |
560 | + if (isPattern) this.unexpected() | |
561 | + prop.kind = "init" | |
562 | + prop.method = true | |
563 | + prop.value = this.parseMethod(isGenerator, isAsync) | |
564 | + } else if (this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && | |
565 | + (prop.key.name === "get" || prop.key.name === "set") && | |
566 | + (this.type != tt.comma && this.type != tt.braceR)) { | |
567 | + if (isGenerator || isAsync || isPattern) this.unexpected() | |
568 | + prop.kind = prop.key.name | |
569 | + this.parsePropertyName(prop) | |
570 | + prop.value = this.parseMethod(false) | |
571 | + let paramCount = prop.kind === "get" ? 0 : 1 | |
572 | + if (prop.value.params.length !== paramCount) { | |
573 | + let start = prop.value.start | |
574 | + if (prop.kind === "get") | |
575 | + this.raiseRecoverable(start, "getter should have no params") | |
576 | + else | |
577 | + this.raiseRecoverable(start, "setter should have exactly one param") | |
578 | + } else { | |
579 | + if (prop.kind === "set" && prop.value.params[0].type === "RestElement") | |
580 | + this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params") | |
581 | + } | |
582 | + } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier") { | |
583 | + if (this.keywords.test(prop.key.name) || | |
584 | + (this.strict ? this.reservedWordsStrict : this.reservedWords).test(prop.key.name) || | |
585 | + (this.inGenerator && prop.key.name == "yield") || | |
586 | + (this.inAsync && prop.key.name == "await")) | |
587 | + this.raiseRecoverable(prop.key.start, "'" + prop.key.name + "' can not be used as shorthand property") | |
588 | + prop.kind = "init" | |
589 | + if (isPattern) { | |
590 | + prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key) | |
591 | + } else if (this.type === tt.eq && refDestructuringErrors) { | |
592 | + if (refDestructuringErrors.shorthandAssign < 0) | |
593 | + refDestructuringErrors.shorthandAssign = this.start | |
594 | + prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key) | |
595 | + } else { | |
596 | + prop.value = prop.key | |
597 | + } | |
598 | + prop.shorthand = true | |
599 | + } else this.unexpected() | |
600 | +} | |
601 | + | |
602 | +pp.parsePropertyName = function(prop) { | |
603 | + if (this.options.ecmaVersion >= 6) { | |
604 | + if (this.eat(tt.bracketL)) { | |
605 | + prop.computed = true | |
606 | + prop.key = this.parseMaybeAssign() | |
607 | + this.expect(tt.bracketR) | |
608 | + return prop.key | |
609 | + } else { | |
610 | + prop.computed = false | |
611 | + } | |
612 | + } | |
613 | + return prop.key = this.type === tt.num || this.type === tt.string ? this.parseExprAtom() : this.parseIdent(true) | |
614 | +} | |
615 | + | |
616 | +// Initialize empty function node. | |
617 | + | |
618 | +pp.initFunction = function(node) { | |
619 | + node.id = null | |
620 | + if (this.options.ecmaVersion >= 6) { | |
621 | + node.generator = false | |
622 | + node.expression = false | |
623 | + } | |
624 | + if (this.options.ecmaVersion >= 8) | |
625 | + node.async = false | |
626 | +} | |
627 | + | |
628 | +// Parse object or class method. | |
629 | + | |
630 | +pp.parseMethod = function(isGenerator, isAsync) { | |
631 | + let node = this.startNode(), oldInGen = this.inGenerator, oldInAsync = this.inAsync, | |
632 | + oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction | |
633 | + | |
634 | + this.initFunction(node) | |
635 | + if (this.options.ecmaVersion >= 6) | |
636 | + node.generator = isGenerator | |
637 | + if (this.options.ecmaVersion >= 8) | |
638 | + node.async = !!isAsync | |
639 | + | |
640 | + this.inGenerator = node.generator | |
641 | + this.inAsync = node.async | |
642 | + this.yieldPos = 0 | |
643 | + this.awaitPos = 0 | |
644 | + this.inFunction = true | |
645 | + | |
646 | + this.expect(tt.parenL) | |
647 | + node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8) | |
648 | + this.checkYieldAwaitInDefaultParams() | |
649 | + this.parseFunctionBody(node, false) | |
650 | + | |
651 | + this.inGenerator = oldInGen | |
652 | + this.inAsync = oldInAsync | |
653 | + this.yieldPos = oldYieldPos | |
654 | + this.awaitPos = oldAwaitPos | |
655 | + this.inFunction = oldInFunc | |
656 | + return this.finishNode(node, "FunctionExpression") | |
657 | +} | |
658 | + | |
659 | +// Parse arrow function expression with given parameters. | |
660 | + | |
661 | +pp.parseArrowExpression = function(node, params, isAsync) { | |
662 | + let oldInGen = this.inGenerator, oldInAsync = this.inAsync, | |
663 | + oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction | |
664 | + | |
665 | + this.initFunction(node) | |
666 | + if (this.options.ecmaVersion >= 8) | |
667 | + node.async = !!isAsync | |
668 | + | |
669 | + this.inGenerator = false | |
670 | + this.inAsync = node.async | |
671 | + this.yieldPos = 0 | |
672 | + this.awaitPos = 0 | |
673 | + this.inFunction = true | |
674 | + | |
675 | + node.params = this.toAssignableList(params, true) | |
676 | + this.parseFunctionBody(node, true) | |
677 | + | |
678 | + this.inGenerator = oldInGen | |
679 | + this.inAsync = oldInAsync | |
680 | + this.yieldPos = oldYieldPos | |
681 | + this.awaitPos = oldAwaitPos | |
682 | + this.inFunction = oldInFunc | |
683 | + return this.finishNode(node, "ArrowFunctionExpression") | |
684 | +} | |
685 | + | |
686 | +// Parse function body and check parameters. | |
687 | + | |
688 | +pp.parseFunctionBody = function(node, isArrowFunction) { | |
689 | + let isExpression = isArrowFunction && this.type !== tt.braceL | |
690 | + let oldStrict = this.strict, useStrict = false | |
691 | + | |
692 | + if (isExpression) { | |
693 | + node.body = this.parseMaybeAssign() | |
694 | + node.expression = true | |
695 | + } else { | |
696 | + let nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params) | |
697 | + if (!oldStrict || nonSimple) { | |
698 | + useStrict = this.strictDirective(this.end) | |
699 | + // If this is a strict mode function, verify that argument names | |
700 | + // are not repeated, and it does not try to bind the words `eval` | |
701 | + // or `arguments`. | |
702 | + if (useStrict && nonSimple) | |
703 | + this.raiseRecoverable(node.start, "Illegal 'use strict' directive in function with non-simple parameter list") | |
704 | + } | |
705 | + // Start a new scope with regard to labels and the `inFunction` | |
706 | + // flag (restore them to their old value afterwards). | |
707 | + let oldLabels = this.labels | |
708 | + this.labels = [] | |
709 | + if (useStrict) this.strict = true | |
710 | + node.body = this.parseBlock(true) | |
711 | + node.expression = false | |
712 | + this.labels = oldLabels | |
713 | + } | |
714 | + | |
715 | + if (oldStrict || useStrict) { | |
716 | + this.strict = true | |
717 | + if (node.id) | |
718 | + this.checkLVal(node.id, true) | |
719 | + this.checkParams(node) | |
720 | + this.strict = oldStrict | |
721 | + } else if (isArrowFunction || !this.isSimpleParamList(node.params)) { | |
722 | + this.checkParams(node) | |
723 | + } | |
724 | +} | |
725 | + | |
726 | +pp.isSimpleParamList = function(params) { | |
727 | + for (let i = 0; i < params.length; i++) | |
728 | + if (params[i].type !== "Identifier") return false | |
729 | + return true | |
730 | +} | |
731 | + | |
732 | +// Checks function params for various disallowed patterns such as using "eval" | |
733 | +// or "arguments" and duplicate parameters. | |
734 | + | |
735 | +pp.checkParams = function(node) { | |
736 | + let nameHash = {} | |
737 | + for (let i = 0; i < node.params.length; i++) this.checkLVal(node.params[i], true, nameHash) | |
738 | +} | |
739 | + | |
740 | +// Parses a comma-separated list of expressions, and returns them as | |
741 | +// an array. `close` is the token type that ends the list, and | |
742 | +// `allowEmpty` can be turned on to allow subsequent commas with | |
743 | +// nothing in between them to be parsed as `null` (which is needed | |
744 | +// for array literals). | |
745 | + | |
746 | +pp.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) { | |
747 | + let elts = [], first = true | |
748 | + while (!this.eat(close)) { | |
749 | + if (!first) { | |
750 | + this.expect(tt.comma) | |
751 | + if (allowTrailingComma && this.afterTrailingComma(close)) break | |
752 | + } else first = false | |
753 | + | |
754 | + let elt | |
755 | + if (allowEmpty && this.type === tt.comma) | |
756 | + elt = null | |
757 | + else if (this.type === tt.ellipsis) { | |
758 | + elt = this.parseSpread(refDestructuringErrors) | |
759 | + if (refDestructuringErrors && this.type === tt.comma && refDestructuringErrors.trailingComma < 0) | |
760 | + refDestructuringErrors.trailingComma = this.start | |
761 | + } else { | |
762 | + elt = this.parseMaybeAssign(false, refDestructuringErrors) | |
763 | + } | |
764 | + elts.push(elt) | |
765 | + } | |
766 | + return elts | |
767 | +} | |
768 | + | |
769 | +// Parse the next token as an identifier. If `liberal` is true (used | |
770 | +// when parsing properties), it will also convert keywords into | |
771 | +// identifiers. | |
772 | + | |
773 | +pp.parseIdent = function(liberal) { | |
774 | + let node = this.startNode() | |
775 | + if (liberal && this.options.allowReserved == "never") liberal = false | |
776 | + if (this.type === tt.name) { | |
777 | + if (!liberal && (this.strict ? this.reservedWordsStrict : this.reservedWords).test(this.value) && | |
778 | + (this.options.ecmaVersion >= 6 || | |
779 | + this.input.slice(this.start, this.end).indexOf("\\") == -1)) | |
780 | + this.raiseRecoverable(this.start, "The keyword '" + this.value + "' is reserved") | |
781 | + if (this.inGenerator && this.value === "yield") | |
782 | + this.raiseRecoverable(this.start, "Can not use 'yield' as identifier inside a generator") | |
783 | + if (this.inAsync && this.value === "await") | |
784 | + this.raiseRecoverable(this.start, "Can not use 'await' as identifier inside an async function") | |
785 | + node.name = this.value | |
786 | + } else if (liberal && this.type.keyword) { | |
787 | + node.name = this.type.keyword | |
788 | + } else { | |
789 | + this.unexpected() | |
790 | + } | |
791 | + this.next() | |
792 | + return this.finishNode(node, "Identifier") | |
793 | +} | |
794 | + | |
795 | +// Parses yield expression inside generator. | |
796 | + | |
797 | +pp.parseYield = function() { | |
798 | + if (!this.yieldPos) this.yieldPos = this.start | |
799 | + | |
800 | + let node = this.startNode() | |
801 | + this.next() | |
802 | + if (this.type == tt.semi || this.canInsertSemicolon() || (this.type != tt.star && !this.type.startsExpr)) { | |
803 | + node.delegate = false | |
804 | + node.argument = null | |
805 | + } else { | |
806 | + node.delegate = this.eat(tt.star) | |
807 | + node.argument = this.parseMaybeAssign() | |
808 | + } | |
809 | + return this.finishNode(node, "YieldExpression") | |
810 | +} | |
811 | + | |
812 | +pp.parseAwait = function() { | |
813 | + if (!this.awaitPos) this.awaitPos = this.start | |
814 | + | |
815 | + let node = this.startNode() | |
816 | + this.next() | |
817 | + node.argument = this.parseMaybeUnary(null, true) | |
818 | + return this.finishNode(node, "AwaitExpression") | |
819 | +} | ... | ... |
node_modules/acorn-dynamic-import/node_modules/acorn/src/identifier.js
0 → 100644
1 | +// Reserved word lists for various dialects of the language | |
2 | + | |
3 | +export const reservedWords = { | |
4 | + 3: "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile", | |
5 | + 5: "class enum extends super const export import", | |
6 | + 6: "enum", | |
7 | + strict: "implements interface let package private protected public static yield", | |
8 | + strictBind: "eval arguments" | |
9 | +} | |
10 | + | |
11 | +// And the keywords | |
12 | + | |
13 | +var ecma5AndLessKeywords = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this" | |
14 | + | |
15 | +export const keywords = { | |
16 | + 5: ecma5AndLessKeywords, | |
17 | + 6: ecma5AndLessKeywords + " const class extends export import super" | |
18 | +} | |
19 | + | |
20 | +// ## Character categories | |
21 | + | |
22 | +// Big ugly regular expressions that match characters in the | |
23 | +// whitespace, identifier, and identifier-start categories. These | |
24 | +// are only applied when a character is found to actually have a | |
25 | +// code point above 128. | |
26 | +// Generated by `bin/generate-identifier-regex.js`. | |
27 | + | |
28 | +let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0-\u08b4\u08b6-\u08bd\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fd5\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ae\ua7b0-\ua7b7\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab65\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc" | |
29 | +let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d4-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d01-\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2-\u1cf4\u1cf8\u1cf9\u1dc0-\u1df5\u1dfb-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua900-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f" | |
30 | + | |
31 | +const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]") | |
32 | +const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]") | |
33 | + | |
34 | +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null | |
35 | + | |
36 | +// These are a run-length and offset encoded representation of the | |
37 | +// >0xffff code points that are a valid part of identifiers. The | |
38 | +// offset starts at 0x10000, and each pair of numbers represents an | |
39 | +// offset to the next range, and then a size of the range. They were | |
40 | +// generated by bin/generate-identifier-regex.js | |
41 | +const astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541] | |
42 | +const astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239] | |
43 | + | |
44 | +// This has a complexity linear to the value of the code. The | |
45 | +// assumption is that looking up astral identifier characters is | |
46 | +// rare. | |
47 | +function isInAstralSet(code, set) { | |
48 | + let pos = 0x10000 | |
49 | + for (let i = 0; i < set.length; i += 2) { | |
50 | + pos += set[i] | |
51 | + if (pos > code) return false | |
52 | + pos += set[i + 1] | |
53 | + if (pos >= code) return true | |
54 | + } | |
55 | +} | |
56 | + | |
57 | +// Test whether a given character code starts an identifier. | |
58 | + | |
59 | +export function isIdentifierStart(code, astral) { | |
60 | + if (code < 65) return code === 36 | |
61 | + if (code < 91) return true | |
62 | + if (code < 97) return code === 95 | |
63 | + if (code < 123) return true | |
64 | + if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) | |
65 | + if (astral === false) return false | |
66 | + return isInAstralSet(code, astralIdentifierStartCodes) | |
67 | +} | |
68 | + | |
69 | +// Test whether a given character is part of an identifier. | |
70 | + | |
71 | +export function isIdentifierChar(code, astral) { | |
72 | + if (code < 48) return code === 36 | |
73 | + if (code < 58) return true | |
74 | + if (code < 65) return false | |
75 | + if (code < 91) return true | |
76 | + if (code < 97) return code === 95 | |
77 | + if (code < 123) return true | |
78 | + if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) | |
79 | + if (astral === false) return false | |
80 | + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes) | |
81 | +} | ... | ... |
node_modules/acorn-dynamic-import/node_modules/acorn/src/index.js
0 → 100644
1 | +// Acorn is a tiny, fast JavaScript parser written in JavaScript. | |
2 | +// | |
3 | +// Acorn was written by Marijn Haverbeke, Ingvar Stepanyan, and | |
4 | +// various contributors and released under an MIT license. | |
5 | +// | |
6 | +// Git repositories for Acorn are available at | |
7 | +// | |
8 | +// http://marijnhaverbeke.nl/git/acorn | |
9 | +// https://github.com/ternjs/acorn.git | |
10 | +// | |
11 | +// Please use the [github bug tracker][ghbt] to report issues. | |
12 | +// | |
13 | +// [ghbt]: https://github.com/ternjs/acorn/issues | |
14 | +// | |
15 | +// This file defines the main parser interface. The library also comes | |
16 | +// with a [error-tolerant parser][dammit] and an | |
17 | +// [abstract syntax tree walker][walk], defined in other files. | |
18 | +// | |
19 | +// [dammit]: acorn_loose.js | |
20 | +// [walk]: util/walk.js | |
21 | + | |
22 | +import {Parser} from "./state" | |
23 | +import "./parseutil" | |
24 | +import "./statement" | |
25 | +import "./lval" | |
26 | +import "./expression" | |
27 | +import "./location" | |
28 | + | |
29 | +export {Parser, plugins} from "./state" | |
30 | +export {defaultOptions} from "./options" | |
31 | +export {Position, SourceLocation, getLineInfo} from "./locutil" | |
32 | +export {Node} from "./node" | |
33 | +export {TokenType, types as tokTypes, keywords as keywordTypes} from "./tokentype" | |
34 | +export {TokContext, types as tokContexts} from "./tokencontext" | |
35 | +export {isIdentifierChar, isIdentifierStart} from "./identifier" | |
36 | +export {Token} from "./tokenize" | |
37 | +export {isNewLine, lineBreak, lineBreakG} from "./whitespace" | |
38 | + | |
39 | +export const version = "4.0.11" | |
40 | + | |
41 | +// The main exported interface (under `self.acorn` when in the | |
42 | +// browser) is a `parse` function that takes a code string and | |
43 | +// returns an abstract syntax tree as specified by [Mozilla parser | |
44 | +// API][api]. | |
45 | +// | |
46 | +// [api]: https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API | |
47 | + | |
48 | +export function parse(input, options) { | |
49 | + return new Parser(options, input).parse() | |
50 | +} | |
51 | + | |
52 | +// This function tries to parse a single expression at a given | |
53 | +// offset in a string. Useful for parsing mixed-language formats | |
54 | +// that embed JavaScript expressions. | |
55 | + | |
56 | +export function parseExpressionAt(input, pos, options) { | |
57 | + let p = new Parser(options, input, pos) | |
58 | + p.nextToken() | |
59 | + return p.parseExpression() | |
60 | +} | |
61 | + | |
62 | +// Acorn is organized as a tokenizer and a recursive-descent parser. | |
63 | +// The `tokenizer` export provides an interface to the tokenizer. | |
64 | + | |
65 | +export function tokenizer(input, options) { | |
66 | + return new Parser(options, input) | |
67 | +} | |
68 | + | |
69 | +// This is a terrible kludge to support the existing, pre-ES6 | |
70 | +// interface where the loose parser module retroactively adds exports | |
71 | +// to this module. | |
72 | +export let parse_dammit, LooseParser, pluginsLoose | |
73 | +export function addLooseExports(parse, Parser, plugins) { | |
74 | + parse_dammit = parse | |
75 | + LooseParser = Parser | |
76 | + pluginsLoose = plugins | |
77 | +} | ... | ... |
node_modules/acorn-dynamic-import/node_modules/acorn/src/location.js
0 → 100644
1 | +import {Parser} from "./state" | |
2 | +import {Position, getLineInfo} from "./locutil" | |
3 | + | |
4 | +const pp = Parser.prototype | |
5 | + | |
6 | +// This function is used to raise exceptions on parse errors. It | |
7 | +// takes an offset integer (into the current `input`) to indicate | |
8 | +// the location of the error, attaches the position to the end | |
9 | +// of the error message, and then raises a `SyntaxError` with that | |
10 | +// message. | |
11 | + | |
12 | +pp.raise = function(pos, message) { | |
13 | + let loc = getLineInfo(this.input, pos) | |
14 | + message += " (" + loc.line + ":" + loc.column + ")" | |
15 | + let err = new SyntaxError(message) | |
16 | + err.pos = pos; err.loc = loc; err.raisedAt = this.pos | |
17 | + throw err | |
18 | +} | |
19 | + | |
20 | +pp.raiseRecoverable = pp.raise | |
21 | + | |
22 | +pp.curPosition = function() { | |
23 | + if (this.options.locations) { | |
24 | + return new Position(this.curLine, this.pos - this.lineStart) | |
25 | + } | |
26 | +} | ... | ... |
node_modules/acorn-dynamic-import/node_modules/acorn/src/locutil.js
0 → 100644
1 | +import {lineBreakG} from "./whitespace" | |
2 | + | |
3 | +// These are used when `options.locations` is on, for the | |
4 | +// `startLoc` and `endLoc` properties. | |
5 | + | |
6 | +export class Position { | |
7 | + constructor(line, col) { | |
8 | + this.line = line | |
9 | + this.column = col | |
10 | + } | |
11 | + | |
12 | + offset(n) { | |
13 | + return new Position(this.line, this.column + n) | |
14 | + } | |
15 | +} | |
16 | + | |
17 | +export class SourceLocation { | |
18 | + constructor(p, start, end) { | |
19 | + this.start = start | |
20 | + this.end = end | |
21 | + if (p.sourceFile !== null) this.source = p.sourceFile | |
22 | + } | |
23 | +} | |
24 | + | |
25 | +// The `getLineInfo` function is mostly useful when the | |
26 | +// `locations` option is off (for performance reasons) and you | |
27 | +// want to find the line/column position for a given character | |
28 | +// offset. `input` should be the code string that the offset refers | |
29 | +// into. | |
30 | + | |
31 | +export function getLineInfo(input, offset) { | |
32 | + for (let line = 1, cur = 0;;) { | |
33 | + lineBreakG.lastIndex = cur | |
34 | + let match = lineBreakG.exec(input) | |
35 | + if (match && match.index < offset) { | |
36 | + ++line | |
37 | + cur = match.index + match[0].length | |
38 | + } else { | |
39 | + return new Position(line, offset - cur) | |
40 | + } | |
41 | + } | |
42 | +} | ... | ... |