diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..18f6e9f --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +nginx-1.18.0/nginx.exe +nginx-1.18.0/logs/ +nginx-1.18.0/temp +nginx-1.18.0/docs \ No newline at end of file diff --git a/nginx-1.18.0/conf/fastcgi.conf b/nginx-1.18.0/conf/fastcgi.conf new file mode 100644 index 0000000..091738c --- /dev/null +++ b/nginx-1.18.0/conf/fastcgi.conf @@ -0,0 +1,26 @@ + +fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; +fastcgi_param QUERY_STRING $query_string; +fastcgi_param REQUEST_METHOD $request_method; +fastcgi_param CONTENT_TYPE $content_type; +fastcgi_param CONTENT_LENGTH $content_length; + +fastcgi_param SCRIPT_NAME $fastcgi_script_name; +fastcgi_param REQUEST_URI $request_uri; +fastcgi_param DOCUMENT_URI $document_uri; +fastcgi_param DOCUMENT_ROOT $document_root; +fastcgi_param SERVER_PROTOCOL $server_protocol; +fastcgi_param REQUEST_SCHEME $scheme; +fastcgi_param HTTPS $https if_not_empty; + +fastcgi_param GATEWAY_INTERFACE CGI/1.1; +fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + +fastcgi_param REMOTE_ADDR $remote_addr; +fastcgi_param REMOTE_PORT $remote_port; +fastcgi_param SERVER_ADDR $server_addr; +fastcgi_param SERVER_PORT $server_port; +fastcgi_param SERVER_NAME $server_name; + +# PHP only, required if PHP was built with --enable-force-cgi-redirect +fastcgi_param REDIRECT_STATUS 200; diff --git a/nginx-1.18.0/conf/fastcgi_params b/nginx-1.18.0/conf/fastcgi_params new file mode 100644 index 0000000..28decb9 --- /dev/null +++ b/nginx-1.18.0/conf/fastcgi_params @@ -0,0 +1,25 @@ + +fastcgi_param QUERY_STRING $query_string; +fastcgi_param REQUEST_METHOD $request_method; +fastcgi_param CONTENT_TYPE $content_type; +fastcgi_param CONTENT_LENGTH $content_length; + +fastcgi_param SCRIPT_NAME $fastcgi_script_name; +fastcgi_param REQUEST_URI $request_uri; +fastcgi_param DOCUMENT_URI $document_uri; +fastcgi_param DOCUMENT_ROOT $document_root; +fastcgi_param SERVER_PROTOCOL $server_protocol; +fastcgi_param REQUEST_SCHEME $scheme; +fastcgi_param HTTPS $https if_not_empty; + +fastcgi_param GATEWAY_INTERFACE CGI/1.1; +fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; + +fastcgi_param REMOTE_ADDR $remote_addr; +fastcgi_param REMOTE_PORT $remote_port; +fastcgi_param SERVER_ADDR $server_addr; +fastcgi_param SERVER_PORT $server_port; +fastcgi_param SERVER_NAME $server_name; + +# PHP only, required if PHP was built with --enable-force-cgi-redirect +fastcgi_param REDIRECT_STATUS 200; diff --git a/nginx-1.18.0/conf/koi-utf b/nginx-1.18.0/conf/koi-utf new file mode 100644 index 0000000..e7974ff --- /dev/null +++ b/nginx-1.18.0/conf/koi-utf @@ -0,0 +1,109 @@ + +# This map is not a full koi8-r <> utf8 map: it does not contain +# box-drawing and some other characters. Besides this map contains +# several koi8-u and Byelorussian letters which are not in koi8-r. +# If you need a full and standard map, use contrib/unicode2nginx/koi-utf +# map instead. + +charset_map koi8-r utf-8 { + + 80 E282AC ; # euro + + 95 E280A2 ; # bullet + + 9A C2A0 ; #   + + 9E C2B7 ; # · + + A3 D191 ; # small yo + A4 D194 ; # small Ukrainian ye + + A6 D196 ; # small Ukrainian i + A7 D197 ; # small Ukrainian yi + + AD D291 ; # small Ukrainian soft g + AE D19E ; # small Byelorussian short u + + B0 C2B0 ; # ° + + B3 D081 ; # capital YO + B4 D084 ; # capital Ukrainian YE + + B6 D086 ; # capital Ukrainian I + B7 D087 ; # capital Ukrainian YI + + B9 E28496 ; # numero sign + + BD D290 ; # capital Ukrainian soft G + BE D18E ; # capital Byelorussian short U + + BF C2A9 ; # (C) + + C0 D18E ; # small yu + C1 D0B0 ; # small a + C2 D0B1 ; # small b + C3 D186 ; # small ts + C4 D0B4 ; # small d + C5 D0B5 ; # small ye + C6 D184 ; # small f + C7 D0B3 ; # small g + C8 D185 ; # small kh + C9 D0B8 ; # small i + CA D0B9 ; # small j + CB D0BA ; # small k + CC D0BB ; # small l + CD D0BC ; # small m + CE D0BD ; # small n + CF D0BE ; # small o + + D0 D0BF ; # small p + D1 D18F ; # small ya + D2 D180 ; # small r + D3 D181 ; # small s + D4 D182 ; # small t + D5 D183 ; # small u + D6 D0B6 ; # small zh + D7 D0B2 ; # small v + D8 D18C ; # small soft sign + D9 D18B ; # small y + DA D0B7 ; # small z + DB D188 ; # small sh + DC D18D ; # small e + DD D189 ; # small shch + DE D187 ; # small ch + DF D18A ; # small hard sign + + E0 D0AE ; # capital YU + E1 D090 ; # capital A + E2 D091 ; # capital B + E3 D0A6 ; # capital TS + E4 D094 ; # capital D + E5 D095 ; # capital YE + E6 D0A4 ; # capital F + E7 D093 ; # capital G + E8 D0A5 ; # capital KH + E9 D098 ; # capital I + EA D099 ; # capital J + EB D09A ; # capital K + EC D09B ; # capital L + ED D09C ; # capital M + EE D09D ; # capital N + EF D09E ; # capital O + + F0 D09F ; # capital P + F1 D0AF ; # capital YA + F2 D0A0 ; # capital R + F3 D0A1 ; # capital S + F4 D0A2 ; # capital T + F5 D0A3 ; # capital U + F6 D096 ; # capital ZH + F7 D092 ; # capital V + F8 D0AC ; # capital soft sign + F9 D0AB ; # capital Y + FA D097 ; # capital Z + FB D0A8 ; # capital SH + FC D0AD ; # capital E + FD D0A9 ; # capital SHCH + FE D0A7 ; # capital CH + FF D0AA ; # capital hard sign +} diff --git a/nginx-1.18.0/conf/koi-win b/nginx-1.18.0/conf/koi-win new file mode 100644 index 0000000..72afabe --- /dev/null +++ b/nginx-1.18.0/conf/koi-win @@ -0,0 +1,103 @@ + +charset_map koi8-r windows-1251 { + + 80 88 ; # euro + + 95 95 ; # bullet + + 9A A0 ; #   + + 9E B7 ; # · + + A3 B8 ; # small yo + A4 BA ; # small Ukrainian ye + + A6 B3 ; # small Ukrainian i + A7 BF ; # small Ukrainian yi + + AD B4 ; # small Ukrainian soft g + AE A2 ; # small Byelorussian short u + + B0 B0 ; # ° + + B3 A8 ; # capital YO + B4 AA ; # capital Ukrainian YE + + B6 B2 ; # capital Ukrainian I + B7 AF ; # capital Ukrainian YI + + B9 B9 ; # numero sign + + BD A5 ; # capital Ukrainian soft G + BE A1 ; # capital Byelorussian short U + + BF A9 ; # (C) + + C0 FE ; # small yu + C1 E0 ; # small a + C2 E1 ; # small b + C3 F6 ; # small ts + C4 E4 ; # small d + C5 E5 ; # small ye + C6 F4 ; # small f + C7 E3 ; # small g + C8 F5 ; # small kh + C9 E8 ; # small i + CA E9 ; # small j + CB EA ; # small k + CC EB ; # small l + CD EC ; # small m + CE ED ; # small n + CF EE ; # small o + + D0 EF ; # small p + D1 FF ; # small ya + D2 F0 ; # small r + D3 F1 ; # small s + D4 F2 ; # small t + D5 F3 ; # small u + D6 E6 ; # small zh + D7 E2 ; # small v + D8 FC ; # small soft sign + D9 FB ; # small y + DA E7 ; # small z + DB F8 ; # small sh + DC FD ; # small e + DD F9 ; # small shch + DE F7 ; # small ch + DF FA ; # small hard sign + + E0 DE ; # capital YU + E1 C0 ; # capital A + E2 C1 ; # capital B + E3 D6 ; # capital TS + E4 C4 ; # capital D + E5 C5 ; # capital YE + E6 D4 ; # capital F + E7 C3 ; # capital G + E8 D5 ; # capital KH + E9 C8 ; # capital I + EA C9 ; # capital J + EB CA ; # capital K + EC CB ; # capital L + ED CC ; # capital M + EE CD ; # capital N + EF CE ; # capital O + + F0 CF ; # capital P + F1 DF ; # capital YA + F2 D0 ; # capital R + F3 D1 ; # capital S + F4 D2 ; # capital T + F5 D3 ; # capital U + F6 C6 ; # capital ZH + F7 C2 ; # capital V + F8 DC ; # capital soft sign + F9 DB ; # capital Y + FA C7 ; # capital Z + FB D8 ; # capital SH + FC DD ; # capital E + FD D9 ; # capital SHCH + FE D7 ; # capital CH + FF DA ; # capital hard sign +} diff --git a/nginx-1.18.0/conf/mime.types b/nginx-1.18.0/conf/mime.types new file mode 100644 index 0000000..2961256 --- /dev/null +++ b/nginx-1.18.0/conf/mime.types @@ -0,0 +1,97 @@ + +types { + text/html html htm shtml; + text/css css; + text/xml xml; + image/gif gif; + image/jpeg jpeg jpg; + application/javascript js; + application/atom+xml atom; + application/rss+xml rss; + + text/mathml mml; + text/plain txt; + text/vnd.sun.j2me.app-descriptor jad; + text/vnd.wap.wml wml; + text/x-component htc; + + image/png png; + image/svg+xml svg svgz; + image/tiff tif tiff; + image/vnd.wap.wbmp wbmp; + image/webp webp; + image/x-icon ico; + image/x-jng jng; + image/x-ms-bmp bmp; + + font/woff woff; + font/woff2 woff2; + + application/java-archive jar war ear; + application/json json; + application/mac-binhex40 hqx; + application/msword doc; + application/pdf pdf; + application/postscript ps eps ai; + application/rtf rtf; + application/vnd.apple.mpegurl m3u8; + application/vnd.google-earth.kml+xml kml; + application/vnd.google-earth.kmz kmz; + application/vnd.ms-excel xls; + application/vnd.ms-fontobject eot; + application/vnd.ms-powerpoint ppt; + application/vnd.oasis.opendocument.graphics odg; + application/vnd.oasis.opendocument.presentation odp; + application/vnd.oasis.opendocument.spreadsheet ods; + application/vnd.oasis.opendocument.text odt; + application/vnd.openxmlformats-officedocument.presentationml.presentation + pptx; + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + xlsx; + application/vnd.openxmlformats-officedocument.wordprocessingml.document + docx; + application/vnd.wap.wmlc wmlc; + application/x-7z-compressed 7z; + application/x-cocoa cco; + application/x-java-archive-diff jardiff; + application/x-java-jnlp-file jnlp; + application/x-makeself run; + application/x-perl pl pm; + application/x-pilot prc pdb; + application/x-rar-compressed rar; + application/x-redhat-package-manager rpm; + application/x-sea sea; + application/x-shockwave-flash swf; + application/x-stuffit sit; + application/x-tcl tcl tk; + application/x-x509-ca-cert der pem crt; + application/x-xpinstall xpi; + application/xhtml+xml xhtml; + application/xspf+xml xspf; + application/zip zip; + + application/octet-stream bin exe dll; + application/octet-stream deb; + application/octet-stream dmg; + application/octet-stream iso img; + application/octet-stream msi msp msm; + + audio/midi mid midi kar; + audio/mpeg mp3; + audio/ogg ogg; + audio/x-m4a m4a; + audio/x-realaudio ra; + + video/3gpp 3gpp 3gp; + video/mp2t ts; + video/mp4 mp4; + video/mpeg mpeg mpg; + video/quicktime mov; + video/webm webm; + video/x-flv flv; + video/x-m4v m4v; + video/x-mng mng; + video/x-ms-asf asx asf; + video/x-ms-wmv wmv; + video/x-msvideo avi; +} diff --git a/nginx-1.18.0/conf/nginx.conf b/nginx-1.18.0/conf/nginx.conf new file mode 100644 index 0000000..ff4572f --- /dev/null +++ b/nginx-1.18.0/conf/nginx.conf @@ -0,0 +1,51 @@ + +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + include mime.types; + default_type application/json; + + sendfile on; + + keepalive_timeout 65; + + server { + listen 8080; + server_name localhost; + # 指定前端项目所在的位置 + location / { + root html/hmdp; + index index.html index.htm; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root html; + } + + + location /api { + default_type application/json; + #internal; + keepalive_timeout 30s; + keepalive_requests 1000; + #支持keep-alive + proxy_http_version 1.1; + rewrite /api(/.*) $1 break; + proxy_pass_request_headers on; + #more_clear_input_headers Accept-Encoding; + proxy_next_upstream error timeout; + proxy_pass http://127.0.0.1:8081; + #proxy_pass http://backend; + } + } + + upstream backend { + server 127.0.0.1:8081 max_fails=5 fail_timeout=10s weight=1; + #server 127.0.0.1:8082 max_fails=5 fail_timeout=10s weight=1; + } +} diff --git a/nginx-1.18.0/conf/scgi_params b/nginx-1.18.0/conf/scgi_params new file mode 100644 index 0000000..6d4ce4f --- /dev/null +++ b/nginx-1.18.0/conf/scgi_params @@ -0,0 +1,17 @@ + +scgi_param REQUEST_METHOD $request_method; +scgi_param REQUEST_URI $request_uri; +scgi_param QUERY_STRING $query_string; +scgi_param CONTENT_TYPE $content_type; + +scgi_param DOCUMENT_URI $document_uri; +scgi_param DOCUMENT_ROOT $document_root; +scgi_param SCGI 1; +scgi_param SERVER_PROTOCOL $server_protocol; +scgi_param REQUEST_SCHEME $scheme; +scgi_param HTTPS $https if_not_empty; + +scgi_param REMOTE_ADDR $remote_addr; +scgi_param REMOTE_PORT $remote_port; +scgi_param SERVER_PORT $server_port; +scgi_param SERVER_NAME $server_name; diff --git a/nginx-1.18.0/conf/uwsgi_params b/nginx-1.18.0/conf/uwsgi_params new file mode 100644 index 0000000..09c732c --- /dev/null +++ b/nginx-1.18.0/conf/uwsgi_params @@ -0,0 +1,17 @@ + +uwsgi_param QUERY_STRING $query_string; +uwsgi_param REQUEST_METHOD $request_method; +uwsgi_param CONTENT_TYPE $content_type; +uwsgi_param CONTENT_LENGTH $content_length; + +uwsgi_param REQUEST_URI $request_uri; +uwsgi_param PATH_INFO $document_uri; +uwsgi_param DOCUMENT_ROOT $document_root; +uwsgi_param SERVER_PROTOCOL $server_protocol; +uwsgi_param REQUEST_SCHEME $scheme; +uwsgi_param HTTPS $https if_not_empty; + +uwsgi_param REMOTE_ADDR $remote_addr; +uwsgi_param REMOTE_PORT $remote_port; +uwsgi_param SERVER_PORT $server_port; +uwsgi_param SERVER_NAME $server_name; diff --git a/nginx-1.18.0/conf/win-utf b/nginx-1.18.0/conf/win-utf new file mode 100644 index 0000000..ed8bc00 --- /dev/null +++ b/nginx-1.18.0/conf/win-utf @@ -0,0 +1,126 @@ + +# This map is not a full windows-1251 <> utf8 map: it does not +# contain Serbian and Macedonian letters. If you need a full map, +# use contrib/unicode2nginx/win-utf map instead. + +charset_map windows-1251 utf-8 { + + 82 E2809A ; # single low-9 quotation mark + + 84 E2809E ; # double low-9 quotation mark + 85 E280A6 ; # ellipsis + 86 E280A0 ; # dagger + 87 E280A1 ; # double dagger + 88 E282AC ; # euro + 89 E280B0 ; # per mille + + 91 E28098 ; # left single quotation mark + 92 E28099 ; # right single quotation mark + 93 E2809C ; # left double quotation mark + 94 E2809D ; # right double quotation mark + 95 E280A2 ; # bullet + 96 E28093 ; # en dash + 97 E28094 ; # em dash + + 99 E284A2 ; # trade mark sign + + A0 C2A0 ; #   + A1 D18E ; # capital Byelorussian short U + A2 D19E ; # small Byelorussian short u + + A4 C2A4 ; # currency sign + A5 D290 ; # capital Ukrainian soft G + A6 C2A6 ; # borken bar + A7 C2A7 ; # section sign + A8 D081 ; # capital YO + A9 C2A9 ; # (C) + AA D084 ; # capital Ukrainian YE + AB C2AB ; # left-pointing double angle quotation mark + AC C2AC ; # not sign + AD C2AD ; # soft hypen + AE C2AE ; # (R) + AF D087 ; # capital Ukrainian YI + + B0 C2B0 ; # ° + B1 C2B1 ; # plus-minus sign + B2 D086 ; # capital Ukrainian I + B3 D196 ; # small Ukrainian i + B4 D291 ; # small Ukrainian soft g + B5 C2B5 ; # micro sign + B6 C2B6 ; # pilcrow sign + B7 C2B7 ; # · + B8 D191 ; # small yo + B9 E28496 ; # numero sign + BA D194 ; # small Ukrainian ye + BB C2BB ; # right-pointing double angle quotation mark + + BF D197 ; # small Ukrainian yi + + C0 D090 ; # capital A + C1 D091 ; # capital B + C2 D092 ; # capital V + C3 D093 ; # capital G + C4 D094 ; # capital D + C5 D095 ; # capital YE + C6 D096 ; # capital ZH + C7 D097 ; # capital Z + C8 D098 ; # capital I + C9 D099 ; # capital J + CA D09A ; # capital K + CB D09B ; # capital L + CC D09C ; # capital M + CD D09D ; # capital N + CE D09E ; # capital O + CF D09F ; # capital P + + D0 D0A0 ; # capital R + D1 D0A1 ; # capital S + D2 D0A2 ; # capital T + D3 D0A3 ; # capital U + D4 D0A4 ; # capital F + D5 D0A5 ; # capital KH + D6 D0A6 ; # capital TS + D7 D0A7 ; # capital CH + D8 D0A8 ; # capital SH + D9 D0A9 ; # capital SHCH + DA D0AA ; # capital hard sign + DB D0AB ; # capital Y + DC D0AC ; # capital soft sign + DD D0AD ; # capital E + DE D0AE ; # capital YU + DF D0AF ; # capital YA + + E0 D0B0 ; # small a + E1 D0B1 ; # small b + E2 D0B2 ; # small v + E3 D0B3 ; # small g + E4 D0B4 ; # small d + E5 D0B5 ; # small ye + E6 D0B6 ; # small zh + E7 D0B7 ; # small z + E8 D0B8 ; # small i + E9 D0B9 ; # small j + EA D0BA ; # small k + EB D0BB ; # small l + EC D0BC ; # small m + ED D0BD ; # small n + EE D0BE ; # small o + EF D0BF ; # small p + + F0 D180 ; # small r + F1 D181 ; # small s + F2 D182 ; # small t + F3 D183 ; # small u + F4 D184 ; # small f + F5 D185 ; # small kh + F6 D186 ; # small ts + F7 D187 ; # small ch + F8 D188 ; # small sh + F9 D189 ; # small shch + FA D18A ; # small hard sign + FB D18B ; # small y + FC D18C ; # small soft sign + FD D18D ; # small e + FE D18E ; # small yu + FF D18F ; # small ya +} diff --git a/nginx-1.18.0/contrib/README b/nginx-1.18.0/contrib/README new file mode 100644 index 0000000..fec4b20 --- /dev/null +++ b/nginx-1.18.0/contrib/README @@ -0,0 +1,21 @@ + +geo2nginx.pl by Andrei Nigmatulin + + The perl script to convert CSV geoip database ( free download + at http://www.maxmind.com/app/geoip_country ) to format, suitable + for use by the ngx_http_geo_module. + + +unicode2nginx by Maxim Dounin + + The perl script to convert unicode mappings ( available + at http://www.unicode.org/Public/MAPPINGS/ ) to the nginx + configuration file format. + Two generated full maps for windows-1251 and koi8-r. + + +vim by Evan Miller + + Syntax highlighting of nginx configuration for vim, to be + placed into ~/.vim/. + diff --git a/nginx-1.18.0/contrib/geo2nginx.pl b/nginx-1.18.0/contrib/geo2nginx.pl new file mode 100644 index 0000000..bc8af46 --- /dev/null +++ b/nginx-1.18.0/contrib/geo2nginx.pl @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w + +# (c) Andrei Nigmatulin, 2005 +# +# this script provided "as is", without any warranties. use it at your own risk. +# +# special thanx to Andrew Sitnikov for perl port +# +# this script converts CSV geoip database (free download at http://www.maxmind.com/app/geoip_country) +# to format, suitable for use with nginx_http_geo module (http://sysoev.ru/nginx) +# +# for example, line with ip range +# +# "62.16.68.0","62.16.127.255","1041253376","1041268735","RU","Russian Federation" +# +# will be converted to four subnetworks: +# +# 62.16.68.0/22 RU; +# 62.16.72.0/21 RU; +# 62.16.80.0/20 RU; +# 62.16.96.0/19 RU; + + +use warnings; +use strict; + +while( ){ + if (/"[^"]+","[^"]+","([^"]+)","([^"]+)","([^"]+)"/){ + print_subnets($1, $2, $3); + } +} + +sub print_subnets { + my ($a1, $a2, $c) = @_; + my $l; + while ($a1 <= $a2) { + for ($l = 0; ($a1 & (1 << $l)) == 0 && ($a1 + ((1 << ($l + 1)) - 1)) <= $a2; $l++){}; + print long2ip($a1) . "/" . (32 - $l) . " " . $c . ";\n"; + $a1 += (1 << $l); + } +} + +sub long2ip { + my $ip = shift; + + my $str = 0; + + $str = ($ip & 255); + + $ip >>= 8; + $str = ($ip & 255).".$str"; + + $ip >>= 8; + $str = ($ip & 255).".$str"; + + $ip >>= 8; + $str = ($ip & 255).".$str"; +} diff --git a/nginx-1.18.0/contrib/unicode2nginx/koi-utf b/nginx-1.18.0/contrib/unicode2nginx/koi-utf new file mode 100644 index 0000000..48853af --- /dev/null +++ b/nginx-1.18.0/contrib/unicode2nginx/koi-utf @@ -0,0 +1,131 @@ +charset_map koi8-r utf-8 { + + 80 E29480 ; # BOX DRAWINGS LIGHT HORIZONTAL + 81 E29482 ; # BOX DRAWINGS LIGHT VERTICAL + 82 E2948C ; # BOX DRAWINGS LIGHT DOWN AND RIGHT + 83 E29490 ; # BOX DRAWINGS LIGHT DOWN AND LEFT + 84 E29494 ; # BOX DRAWINGS LIGHT UP AND RIGHT + 85 E29498 ; # BOX DRAWINGS LIGHT UP AND LEFT + 86 E2949C ; # BOX DRAWINGS LIGHT VERTICAL AND RIGHT + 87 E294A4 ; # BOX DRAWINGS LIGHT VERTICAL AND LEFT + 88 E294AC ; # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL + 89 E294B4 ; # BOX DRAWINGS LIGHT UP AND HORIZONTAL + 8A E294BC ; # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL + 8B E29680 ; # UPPER HALF BLOCK + 8C E29684 ; # LOWER HALF BLOCK + 8D E29688 ; # FULL BLOCK + 8E E2968C ; # LEFT HALF BLOCK + 8F E29690 ; # RIGHT HALF BLOCK + 90 E29691 ; # LIGHT SHADE + 91 E29692 ; # MEDIUM SHADE + 92 E29693 ; # DARK SHADE + 93 E28CA0 ; # TOP HALF INTEGRAL + 94 E296A0 ; # BLACK SQUARE + 95 E28899 ; # BULLET OPERATOR + 96 E2889A ; # SQUARE ROOT + 97 E28988 ; # ALMOST EQUAL TO + 98 E289A4 ; # LESS-THAN OR EQUAL TO + 99 E289A5 ; # GREATER-THAN OR EQUAL TO + 9A C2A0 ; # NO-BREAK SPACE + 9B E28CA1 ; # BOTTOM HALF INTEGRAL + 9C C2B0 ; # DEGREE SIGN + 9D C2B2 ; # SUPERSCRIPT TWO + 9E C2B7 ; # MIDDLE DOT + 9F C3B7 ; # DIVISION SIGN + A0 E29590 ; # BOX DRAWINGS DOUBLE HORIZONTAL + A1 E29591 ; # BOX DRAWINGS DOUBLE VERTICAL + A2 E29592 ; # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE + A3 D191 ; # CYRILLIC SMALL LETTER IO + A4 E29593 ; # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE + A5 E29594 ; # BOX DRAWINGS DOUBLE DOWN AND RIGHT + A6 E29595 ; # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE + A7 E29596 ; # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE + A8 E29597 ; # BOX DRAWINGS DOUBLE DOWN AND LEFT + A9 E29598 ; # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE + AA E29599 ; # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE + AB E2959A ; # BOX DRAWINGS DOUBLE UP AND RIGHT + AC E2959B ; # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE + AD E2959C ; # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE + AE E2959D ; # BOX DRAWINGS DOUBLE UP AND LEFT + AF E2959E ; # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE + B0 E2959F ; # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE + B1 E295A0 ; # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT + B2 E295A1 ; # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE + B3 D081 ; # CYRILLIC CAPITAL LETTER IO + B4 E295A2 ; # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE + B5 E295A3 ; # BOX DRAWINGS DOUBLE VERTICAL AND LEFT + B6 E295A4 ; # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE + B7 E295A5 ; # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE + B8 E295A6 ; # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL + B9 E295A7 ; # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE + BA E295A8 ; # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE + BB E295A9 ; # BOX DRAWINGS DOUBLE UP AND HORIZONTAL + BC E295AA ; # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE + BD E295AB ; # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE + BE E295AC ; # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL + BF C2A9 ; # COPYRIGHT SIGN + C0 D18E ; # CYRILLIC SMALL LETTER YU + C1 D0B0 ; # CYRILLIC SMALL LETTER A + C2 D0B1 ; # CYRILLIC SMALL LETTER BE + C3 D186 ; # CYRILLIC SMALL LETTER TSE + C4 D0B4 ; # CYRILLIC SMALL LETTER DE + C5 D0B5 ; # CYRILLIC SMALL LETTER IE + C6 D184 ; # CYRILLIC SMALL LETTER EF + C7 D0B3 ; # CYRILLIC SMALL LETTER GHE + C8 D185 ; # CYRILLIC SMALL LETTER HA + C9 D0B8 ; # CYRILLIC SMALL LETTER I + CA D0B9 ; # CYRILLIC SMALL LETTER SHORT I + CB D0BA ; # CYRILLIC SMALL LETTER KA + CC D0BB ; # CYRILLIC SMALL LETTER EL + CD D0BC ; # CYRILLIC SMALL LETTER EM + CE D0BD ; # CYRILLIC SMALL LETTER EN + CF D0BE ; # CYRILLIC SMALL LETTER O + D0 D0BF ; # CYRILLIC SMALL LETTER PE + D1 D18F ; # CYRILLIC SMALL LETTER YA + D2 D180 ; # CYRILLIC SMALL LETTER ER + D3 D181 ; # CYRILLIC SMALL LETTER ES + D4 D182 ; # CYRILLIC SMALL LETTER TE + D5 D183 ; # CYRILLIC SMALL LETTER U + D6 D0B6 ; # CYRILLIC SMALL LETTER ZHE + D7 D0B2 ; # CYRILLIC SMALL LETTER VE + D8 D18C ; # CYRILLIC SMALL LETTER SOFT SIGN + D9 D18B ; # CYRILLIC SMALL LETTER YERU + DA D0B7 ; # CYRILLIC SMALL LETTER ZE + DB D188 ; # CYRILLIC SMALL LETTER SHA + DC D18D ; # CYRILLIC SMALL LETTER E + DD D189 ; # CYRILLIC SMALL LETTER SHCHA + DE D187 ; # CYRILLIC SMALL LETTER CHE + DF D18A ; # CYRILLIC SMALL LETTER HARD SIGN + E0 D0AE ; # CYRILLIC CAPITAL LETTER YU + E1 D090 ; # CYRILLIC CAPITAL LETTER A + E2 D091 ; # CYRILLIC CAPITAL LETTER BE + E3 D0A6 ; # CYRILLIC CAPITAL LETTER TSE + E4 D094 ; # CYRILLIC CAPITAL LETTER DE + E5 D095 ; # CYRILLIC CAPITAL LETTER IE + E6 D0A4 ; # CYRILLIC CAPITAL LETTER EF + E7 D093 ; # CYRILLIC CAPITAL LETTER GHE + E8 D0A5 ; # CYRILLIC CAPITAL LETTER HA + E9 D098 ; # CYRILLIC CAPITAL LETTER I + EA D099 ; # CYRILLIC CAPITAL LETTER SHORT I + EB D09A ; # CYRILLIC CAPITAL LETTER KA + EC D09B ; # CYRILLIC CAPITAL LETTER EL + ED D09C ; # CYRILLIC CAPITAL LETTER EM + EE D09D ; # CYRILLIC CAPITAL LETTER EN + EF D09E ; # CYRILLIC CAPITAL LETTER O + F0 D09F ; # CYRILLIC CAPITAL LETTER PE + F1 D0AF ; # CYRILLIC CAPITAL LETTER YA + F2 D0A0 ; # CYRILLIC CAPITAL LETTER ER + F3 D0A1 ; # CYRILLIC CAPITAL LETTER ES + F4 D0A2 ; # CYRILLIC CAPITAL LETTER TE + F5 D0A3 ; # CYRILLIC CAPITAL LETTER U + F6 D096 ; # CYRILLIC CAPITAL LETTER ZHE + F7 D092 ; # CYRILLIC CAPITAL LETTER VE + F8 D0AC ; # CYRILLIC CAPITAL LETTER SOFT SIGN + F9 D0AB ; # CYRILLIC CAPITAL LETTER YERU + FA D097 ; # CYRILLIC CAPITAL LETTER ZE + FB D0A8 ; # CYRILLIC CAPITAL LETTER SHA + FC D0AD ; # CYRILLIC CAPITAL LETTER E + FD D0A9 ; # CYRILLIC CAPITAL LETTER SHCHA + FE D0A7 ; # CYRILLIC CAPITAL LETTER CHE + FF D0AA ; # CYRILLIC CAPITAL LETTER HARD SIGN +} diff --git a/nginx-1.18.0/contrib/unicode2nginx/unicode-to-nginx.pl b/nginx-1.18.0/contrib/unicode2nginx/unicode-to-nginx.pl new file mode 100644 index 0000000..d113fed --- /dev/null +++ b/nginx-1.18.0/contrib/unicode2nginx/unicode-to-nginx.pl @@ -0,0 +1,48 @@ +#!/usr/bin/perl -w + +# Convert unicode mappings to nginx configuration file format. + +# You may find useful mappings in various places, including +# unicode.org official site: +# +# http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT +# http://www.unicode.org/Public/MAPPINGS/VENDORS/MISC/KOI8-R.TXT + +# Needs perl 5.6 or later. + +# Written by Maxim Dounin, mdounin@mdounin.ru + +############################################################################### + +require 5.006; + +while (<>) { + # Skip comments and empty lines + + next if /^#/; + next if /^\s*$/; + chomp; + + # Convert mappings + + if (/^\s*0x(..)\s*0x(....)\s*(#.*)/) { + # Mapping "#" + my $cs_code = $1; + my $un_code = $2; + my $un_name = $3; + + # Produce UTF-8 sequence from character code; + + my $un_utf8 = join('', + map { sprintf("%02X", $_) } + unpack("U0C*", pack("U", hex($un_code))) + ); + + print " $cs_code $un_utf8 ; $un_name\n"; + + } else { + warn "Unrecognized line: '$_'"; + } +} + +############################################################################### diff --git a/nginx-1.18.0/contrib/unicode2nginx/win-utf b/nginx-1.18.0/contrib/unicode2nginx/win-utf new file mode 100644 index 0000000..af9f9aa --- /dev/null +++ b/nginx-1.18.0/contrib/unicode2nginx/win-utf @@ -0,0 +1,130 @@ +charset_map windows-1251 utf-8 { + + 80 D082 ; #CYRILLIC CAPITAL LETTER DJE + 81 D083 ; #CYRILLIC CAPITAL LETTER GJE + 82 E2809A ; #SINGLE LOW-9 QUOTATION MARK + 83 D193 ; #CYRILLIC SMALL LETTER GJE + 84 E2809E ; #DOUBLE LOW-9 QUOTATION MARK + 85 E280A6 ; #HORIZONTAL ELLIPSIS + 86 E280A0 ; #DAGGER + 87 E280A1 ; #DOUBLE DAGGER + 88 E282AC ; #EURO SIGN + 89 E280B0 ; #PER MILLE SIGN + 8A D089 ; #CYRILLIC CAPITAL LETTER LJE + 8B E280B9 ; #SINGLE LEFT-POINTING ANGLE QUOTATION MARK + 8C D08A ; #CYRILLIC CAPITAL LETTER NJE + 8D D08C ; #CYRILLIC CAPITAL LETTER KJE + 8E D08B ; #CYRILLIC CAPITAL LETTER TSHE + 8F D08F ; #CYRILLIC CAPITAL LETTER DZHE + 90 D192 ; #CYRILLIC SMALL LETTER DJE + 91 E28098 ; #LEFT SINGLE QUOTATION MARK + 92 E28099 ; #RIGHT SINGLE QUOTATION MARK + 93 E2809C ; #LEFT DOUBLE QUOTATION MARK + 94 E2809D ; #RIGHT DOUBLE QUOTATION MARK + 95 E280A2 ; #BULLET + 96 E28093 ; #EN DASH + 97 E28094 ; #EM DASH + 99 E284A2 ; #TRADE MARK SIGN + 9A D199 ; #CYRILLIC SMALL LETTER LJE + 9B E280BA ; #SINGLE RIGHT-POINTING ANGLE QUOTATION MARK + 9C D19A ; #CYRILLIC SMALL LETTER NJE + 9D D19C ; #CYRILLIC SMALL LETTER KJE + 9E D19B ; #CYRILLIC SMALL LETTER TSHE + 9F D19F ; #CYRILLIC SMALL LETTER DZHE + A0 C2A0 ; #NO-BREAK SPACE + A1 D08E ; #CYRILLIC CAPITAL LETTER SHORT U + A2 D19E ; #CYRILLIC SMALL LETTER SHORT U + A3 D088 ; #CYRILLIC CAPITAL LETTER JE + A4 C2A4 ; #CURRENCY SIGN + A5 D290 ; #CYRILLIC CAPITAL LETTER GHE WITH UPTURN + A6 C2A6 ; #BROKEN BAR + A7 C2A7 ; #SECTION SIGN + A8 D081 ; #CYRILLIC CAPITAL LETTER IO + A9 C2A9 ; #COPYRIGHT SIGN + AA D084 ; #CYRILLIC CAPITAL LETTER UKRAINIAN IE + AB C2AB ; #LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + AC C2AC ; #NOT SIGN + AD C2AD ; #SOFT HYPHEN + AE C2AE ; #REGISTERED SIGN + AF D087 ; #CYRILLIC CAPITAL LETTER YI + B0 C2B0 ; #DEGREE SIGN + B1 C2B1 ; #PLUS-MINUS SIGN + B2 D086 ; #CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I + B3 D196 ; #CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I + B4 D291 ; #CYRILLIC SMALL LETTER GHE WITH UPTURN + B5 C2B5 ; #MICRO SIGN + B6 C2B6 ; #PILCROW SIGN + B7 C2B7 ; #MIDDLE DOT + B8 D191 ; #CYRILLIC SMALL LETTER IO + B9 E28496 ; #NUMERO SIGN + BA D194 ; #CYRILLIC SMALL LETTER UKRAINIAN IE + BB C2BB ; #RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + BC D198 ; #CYRILLIC SMALL LETTER JE + BD D085 ; #CYRILLIC CAPITAL LETTER DZE + BE D195 ; #CYRILLIC SMALL LETTER DZE + BF D197 ; #CYRILLIC SMALL LETTER YI + C0 D090 ; #CYRILLIC CAPITAL LETTER A + C1 D091 ; #CYRILLIC CAPITAL LETTER BE + C2 D092 ; #CYRILLIC CAPITAL LETTER VE + C3 D093 ; #CYRILLIC CAPITAL LETTER GHE + C4 D094 ; #CYRILLIC CAPITAL LETTER DE + C5 D095 ; #CYRILLIC CAPITAL LETTER IE + C6 D096 ; #CYRILLIC CAPITAL LETTER ZHE + C7 D097 ; #CYRILLIC CAPITAL LETTER ZE + C8 D098 ; #CYRILLIC CAPITAL LETTER I + C9 D099 ; #CYRILLIC CAPITAL LETTER SHORT I + CA D09A ; #CYRILLIC CAPITAL LETTER KA + CB D09B ; #CYRILLIC CAPITAL LETTER EL + CC D09C ; #CYRILLIC CAPITAL LETTER EM + CD D09D ; #CYRILLIC CAPITAL LETTER EN + CE D09E ; #CYRILLIC CAPITAL LETTER O + CF D09F ; #CYRILLIC CAPITAL LETTER PE + D0 D0A0 ; #CYRILLIC CAPITAL LETTER ER + D1 D0A1 ; #CYRILLIC CAPITAL LETTER ES + D2 D0A2 ; #CYRILLIC CAPITAL LETTER TE + D3 D0A3 ; #CYRILLIC CAPITAL LETTER U + D4 D0A4 ; #CYRILLIC CAPITAL LETTER EF + D5 D0A5 ; #CYRILLIC CAPITAL LETTER HA + D6 D0A6 ; #CYRILLIC CAPITAL LETTER TSE + D7 D0A7 ; #CYRILLIC CAPITAL LETTER CHE + D8 D0A8 ; #CYRILLIC CAPITAL LETTER SHA + D9 D0A9 ; #CYRILLIC CAPITAL LETTER SHCHA + DA D0AA ; #CYRILLIC CAPITAL LETTER HARD SIGN + DB D0AB ; #CYRILLIC CAPITAL LETTER YERU + DC D0AC ; #CYRILLIC CAPITAL LETTER SOFT SIGN + DD D0AD ; #CYRILLIC CAPITAL LETTER E + DE D0AE ; #CYRILLIC CAPITAL LETTER YU + DF D0AF ; #CYRILLIC CAPITAL LETTER YA + E0 D0B0 ; #CYRILLIC SMALL LETTER A + E1 D0B1 ; #CYRILLIC SMALL LETTER BE + E2 D0B2 ; #CYRILLIC SMALL LETTER VE + E3 D0B3 ; #CYRILLIC SMALL LETTER GHE + E4 D0B4 ; #CYRILLIC SMALL LETTER DE + E5 D0B5 ; #CYRILLIC SMALL LETTER IE + E6 D0B6 ; #CYRILLIC SMALL LETTER ZHE + E7 D0B7 ; #CYRILLIC SMALL LETTER ZE + E8 D0B8 ; #CYRILLIC SMALL LETTER I + E9 D0B9 ; #CYRILLIC SMALL LETTER SHORT I + EA D0BA ; #CYRILLIC SMALL LETTER KA + EB D0BB ; #CYRILLIC SMALL LETTER EL + EC D0BC ; #CYRILLIC SMALL LETTER EM + ED D0BD ; #CYRILLIC SMALL LETTER EN + EE D0BE ; #CYRILLIC SMALL LETTER O + EF D0BF ; #CYRILLIC SMALL LETTER PE + F0 D180 ; #CYRILLIC SMALL LETTER ER + F1 D181 ; #CYRILLIC SMALL LETTER ES + F2 D182 ; #CYRILLIC SMALL LETTER TE + F3 D183 ; #CYRILLIC SMALL LETTER U + F4 D184 ; #CYRILLIC SMALL LETTER EF + F5 D185 ; #CYRILLIC SMALL LETTER HA + F6 D186 ; #CYRILLIC SMALL LETTER TSE + F7 D187 ; #CYRILLIC SMALL LETTER CHE + F8 D188 ; #CYRILLIC SMALL LETTER SHA + F9 D189 ; #CYRILLIC SMALL LETTER SHCHA + FA D18A ; #CYRILLIC SMALL LETTER HARD SIGN + FB D18B ; #CYRILLIC SMALL LETTER YERU + FC D18C ; #CYRILLIC SMALL LETTER SOFT SIGN + FD D18D ; #CYRILLIC SMALL LETTER E + FE D18E ; #CYRILLIC SMALL LETTER YU + FF D18F ; #CYRILLIC SMALL LETTER YA +} diff --git a/nginx-1.18.0/contrib/vim/ftdetect/nginx.vim b/nginx-1.18.0/contrib/vim/ftdetect/nginx.vim new file mode 100644 index 0000000..3ae470d --- /dev/null +++ b/nginx-1.18.0/contrib/vim/ftdetect/nginx.vim @@ -0,0 +1,4 @@ +au BufRead,BufNewFile *.nginx set ft=nginx +au BufRead,BufNewFile */etc/nginx/* set ft=nginx +au BufRead,BufNewFile */usr/local/nginx/conf/* set ft=nginx +au BufRead,BufNewFile nginx.conf set ft=nginx diff --git a/nginx-1.18.0/contrib/vim/ftplugin/nginx.vim b/nginx-1.18.0/contrib/vim/ftplugin/nginx.vim new file mode 100644 index 0000000..463eea9 --- /dev/null +++ b/nginx-1.18.0/contrib/vim/ftplugin/nginx.vim @@ -0,0 +1 @@ +setlocal commentstring=#\ %s diff --git a/nginx-1.18.0/contrib/vim/indent/nginx.vim b/nginx-1.18.0/contrib/vim/indent/nginx.vim new file mode 100644 index 0000000..8601366 --- /dev/null +++ b/nginx-1.18.0/contrib/vim/indent/nginx.vim @@ -0,0 +1,11 @@ +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal indentexpr= + +" cindent actually works for nginx' simple file structure +setlocal cindent +" Just make sure that the comments are not reset as defs would be. +setlocal cinkeys-=0# diff --git a/nginx-1.18.0/contrib/vim/syntax/nginx.vim b/nginx-1.18.0/contrib/vim/syntax/nginx.vim new file mode 100644 index 0000000..1a3a7b7 --- /dev/null +++ b/nginx-1.18.0/contrib/vim/syntax/nginx.vim @@ -0,0 +1,2338 @@ +" Vim syntax file +" Language: nginx.conf + +if exists("b:current_syntax") + finish +end + +" general syntax + +if has("patch-7.4.1142") + " except control characters, ";", "{", and "}" + syn iskeyword 33-58,60-122,124,126-255 +endif + +syn match ngxName '\([^;{} \t\\]\|\\.\)\+' + \ contains=@ngxDirectives + \ nextgroup=@ngxParams skipwhite skipempty +syn match ngxParam '\(\${\|[^;{ \t\\]\|\\.\)\+' + \ contained + \ contains=ngxVariable + \ nextgroup=@ngxParams skipwhite skipempty +syn region ngxString start=+\z(["']\)+ end=+\z1+ skip=+\\\\\|\\\z1+ + \ contains=ngxVariableString + \ nextgroup=@ngxParams skipwhite skipempty +syn match ngxParamComment '#.*$' + \ nextgroup=@ngxParams skipwhite skipempty +syn match ngxSemicolon ';' contained +syn region ngxBlock start=+{+ end=+}+ contained + \ contains=@ngxTopLevel +syn match ngxComment '#.*$' + +syn match ngxVariable '\$\(\w\+\|{\w\+}\)' contained +syn match ngxVariableString '\$\(\w\+\|{\w\+}\)' contained + +syn cluster ngxTopLevel + \ contains=ngxName,ngxString,ngxComment +syn cluster ngxDirectives + \ contains=ngxDirective,ngxDirectiveBlock,ngxDirectiveImportant + \ add=ngxDirectiveControl,ngxDirectiveError,ngxDirectiveDeprecated + \ add=ngxDirectiveThirdParty,ngxDirectiveThirdPartyDeprecated +syn cluster ngxParams + \ contains=ngxParam,ngxString,ngxParamComment,ngxSemicolon,ngxBlock + +" boolean parameters + +syn keyword ngxBoolean contained on off + \ nextgroup=@ngxParams skipwhite skipempty +syn cluster ngxParams add=ngxBoolean + +" listen directive + +syn cluster ngxTopLevel add=ngxDirectiveListen +syn keyword ngxDirectiveListen listen + \ nextgroup=@ngxListenParams skipwhite skipempty +syn match ngxListenParam '\(\${\|[^;{ \t\\]\|\\.\)\+' + \ contained + \ nextgroup=@ngxListenParams skipwhite skipempty +syn region ngxListenString start=+\z(["']\)+ end=+\z1+ skip=+\\\\\|\\\z1+ + \ contained + \ nextgroup=@ngxListenParams skipwhite skipempty +syn match ngxListenComment '#.*$' + \ contained + \ nextgroup=@ngxListenParams skipwhite skipempty +syn keyword ngxListenOptions contained + \ default_server ssl http2 proxy_protocol + \ setfib fastopen backlog rcvbuf sndbuf accept_filter deferred bind + \ ipv6only reuseport so_keepalive + \ nextgroup=@ngxListenParams skipwhite skipempty +syn keyword ngxListenOptionsDeprecated contained + \ spdy + \ nextgroup=@ngxListenParams skipwhite skipempty +syn cluster ngxListenParams + \ contains=ngxListenParam,ngxListenString,ngxListenComment + \ add=ngxListenOptions,ngxListenOptionsDeprecated + +syn keyword ngxDirectiveBlock contained http +syn keyword ngxDirectiveBlock contained stream +syn keyword ngxDirectiveBlock contained mail +syn keyword ngxDirectiveBlock contained events +syn keyword ngxDirectiveBlock contained server +syn keyword ngxDirectiveBlock contained types +syn keyword ngxDirectiveBlock contained location +syn keyword ngxDirectiveBlock contained upstream +syn keyword ngxDirectiveBlock contained charset_map +syn keyword ngxDirectiveBlock contained limit_except +syn keyword ngxDirectiveBlock contained if +syn keyword ngxDirectiveBlock contained geo +syn keyword ngxDirectiveBlock contained map +syn keyword ngxDirectiveBlock contained split_clients +syn keyword ngxDirectiveBlock contained match + +syn keyword ngxDirectiveImportant contained include +syn keyword ngxDirectiveImportant contained root +syn keyword ngxDirectiveImportant contained server_name +syn keyword ngxDirectiveImportant contained internal +syn keyword ngxDirectiveImportant contained proxy_pass +syn keyword ngxDirectiveImportant contained memcached_pass +syn keyword ngxDirectiveImportant contained fastcgi_pass +syn keyword ngxDirectiveImportant contained scgi_pass +syn keyword ngxDirectiveImportant contained uwsgi_pass +syn keyword ngxDirectiveImportant contained try_files + +syn keyword ngxDirectiveControl contained break +syn keyword ngxDirectiveControl contained return +syn keyword ngxDirectiveControl contained rewrite +syn keyword ngxDirectiveControl contained set + +syn keyword ngxDirectiveError contained error_page +syn keyword ngxDirectiveError contained post_action + +syn keyword ngxDirectiveDeprecated contained limit_zone +syn keyword ngxDirectiveDeprecated contained proxy_downstream_buffer +syn keyword ngxDirectiveDeprecated contained proxy_upstream_buffer +syn keyword ngxDirectiveDeprecated contained spdy_chunk_size +syn keyword ngxDirectiveDeprecated contained spdy_headers_comp +syn keyword ngxDirectiveDeprecated contained spdy_keepalive_timeout +syn keyword ngxDirectiveDeprecated contained spdy_max_concurrent_streams +syn keyword ngxDirectiveDeprecated contained spdy_pool_size +syn keyword ngxDirectiveDeprecated contained spdy_recv_buffer_size +syn keyword ngxDirectiveDeprecated contained spdy_recv_timeout +syn keyword ngxDirectiveDeprecated contained spdy_streams_index_size +syn keyword ngxDirectiveDeprecated contained ssl +syn keyword ngxDirectiveDeprecated contained upstream_conf + +syn keyword ngxDirective contained absolute_redirect +syn keyword ngxDirective contained accept_mutex +syn keyword ngxDirective contained accept_mutex_delay +syn keyword ngxDirective contained acceptex_read +syn keyword ngxDirective contained access_log +syn keyword ngxDirective contained add_after_body +syn keyword ngxDirective contained add_before_body +syn keyword ngxDirective contained add_header +syn keyword ngxDirective contained add_trailer +syn keyword ngxDirective contained addition_types +syn keyword ngxDirective contained aio +syn keyword ngxDirective contained aio_write +syn keyword ngxDirective contained alias +syn keyword ngxDirective contained allow +syn keyword ngxDirective contained ancient_browser +syn keyword ngxDirective contained ancient_browser_value +syn keyword ngxDirective contained api +syn keyword ngxDirective contained auth_basic +syn keyword ngxDirective contained auth_basic_user_file +syn keyword ngxDirective contained auth_http +syn keyword ngxDirective contained auth_http_header +syn keyword ngxDirective contained auth_http_pass_client_cert +syn keyword ngxDirective contained auth_http_timeout +syn keyword ngxDirective contained auth_jwt +syn keyword ngxDirective contained auth_jwt_claim_set +syn keyword ngxDirective contained auth_jwt_header_set +syn keyword ngxDirective contained auth_jwt_key_file +syn keyword ngxDirective contained auth_jwt_key_request +syn keyword ngxDirective contained auth_jwt_leeway +syn keyword ngxDirective contained auth_request +syn keyword ngxDirective contained auth_request_set +syn keyword ngxDirective contained autoindex +syn keyword ngxDirective contained autoindex_exact_size +syn keyword ngxDirective contained autoindex_format +syn keyword ngxDirective contained autoindex_localtime +syn keyword ngxDirective contained charset +syn keyword ngxDirective contained charset_types +syn keyword ngxDirective contained chunked_transfer_encoding +syn keyword ngxDirective contained client_body_buffer_size +syn keyword ngxDirective contained client_body_in_file_only +syn keyword ngxDirective contained client_body_in_single_buffer +syn keyword ngxDirective contained client_body_temp_path +syn keyword ngxDirective contained client_body_timeout +syn keyword ngxDirective contained client_header_buffer_size +syn keyword ngxDirective contained client_header_timeout +syn keyword ngxDirective contained client_max_body_size +syn keyword ngxDirective contained connection_pool_size +syn keyword ngxDirective contained create_full_put_path +syn keyword ngxDirective contained daemon +syn keyword ngxDirective contained dav_access +syn keyword ngxDirective contained dav_methods +syn keyword ngxDirective contained debug_connection +syn keyword ngxDirective contained debug_points +syn keyword ngxDirective contained default_type +syn keyword ngxDirective contained degradation +syn keyword ngxDirective contained degrade +syn keyword ngxDirective contained deny +syn keyword ngxDirective contained devpoll_changes +syn keyword ngxDirective contained devpoll_events +syn keyword ngxDirective contained directio +syn keyword ngxDirective contained directio_alignment +syn keyword ngxDirective contained disable_symlinks +syn keyword ngxDirective contained empty_gif +syn keyword ngxDirective contained env +syn keyword ngxDirective contained epoll_events +syn keyword ngxDirective contained error_log +syn keyword ngxDirective contained etag +syn keyword ngxDirective contained eventport_events +syn keyword ngxDirective contained expires +syn keyword ngxDirective contained f4f +syn keyword ngxDirective contained f4f_buffer_size +syn keyword ngxDirective contained fastcgi_bind +syn keyword ngxDirective contained fastcgi_buffer_size +syn keyword ngxDirective contained fastcgi_buffering +syn keyword ngxDirective contained fastcgi_buffers +syn keyword ngxDirective contained fastcgi_busy_buffers_size +syn keyword ngxDirective contained fastcgi_cache +syn keyword ngxDirective contained fastcgi_cache_background_update +syn keyword ngxDirective contained fastcgi_cache_bypass +syn keyword ngxDirective contained fastcgi_cache_key +syn keyword ngxDirective contained fastcgi_cache_lock +syn keyword ngxDirective contained fastcgi_cache_lock_age +syn keyword ngxDirective contained fastcgi_cache_lock_timeout +syn keyword ngxDirective contained fastcgi_cache_max_range_offset +syn keyword ngxDirective contained fastcgi_cache_methods +syn keyword ngxDirective contained fastcgi_cache_min_uses +syn keyword ngxDirective contained fastcgi_cache_path +syn keyword ngxDirective contained fastcgi_cache_purge +syn keyword ngxDirective contained fastcgi_cache_revalidate +syn keyword ngxDirective contained fastcgi_cache_use_stale +syn keyword ngxDirective contained fastcgi_cache_valid +syn keyword ngxDirective contained fastcgi_catch_stderr +syn keyword ngxDirective contained fastcgi_connect_timeout +syn keyword ngxDirective contained fastcgi_force_ranges +syn keyword ngxDirective contained fastcgi_hide_header +syn keyword ngxDirective contained fastcgi_ignore_client_abort +syn keyword ngxDirective contained fastcgi_ignore_headers +syn keyword ngxDirective contained fastcgi_index +syn keyword ngxDirective contained fastcgi_intercept_errors +syn keyword ngxDirective contained fastcgi_keep_conn +syn keyword ngxDirective contained fastcgi_limit_rate +syn keyword ngxDirective contained fastcgi_max_temp_file_size +syn keyword ngxDirective contained fastcgi_next_upstream +syn keyword ngxDirective contained fastcgi_next_upstream_timeout +syn keyword ngxDirective contained fastcgi_next_upstream_tries +syn keyword ngxDirective contained fastcgi_no_cache +syn keyword ngxDirective contained fastcgi_param +syn keyword ngxDirective contained fastcgi_pass_header +syn keyword ngxDirective contained fastcgi_pass_request_body +syn keyword ngxDirective contained fastcgi_pass_request_headers +syn keyword ngxDirective contained fastcgi_read_timeout +syn keyword ngxDirective contained fastcgi_request_buffering +syn keyword ngxDirective contained fastcgi_send_lowat +syn keyword ngxDirective contained fastcgi_send_timeout +syn keyword ngxDirective contained fastcgi_socket_keepalive +syn keyword ngxDirective contained fastcgi_split_path_info +syn keyword ngxDirective contained fastcgi_store +syn keyword ngxDirective contained fastcgi_store_access +syn keyword ngxDirective contained fastcgi_temp_file_write_size +syn keyword ngxDirective contained fastcgi_temp_path +syn keyword ngxDirective contained flv +syn keyword ngxDirective contained geoip_city +syn keyword ngxDirective contained geoip_country +syn keyword ngxDirective contained geoip_org +syn keyword ngxDirective contained geoip_proxy +syn keyword ngxDirective contained geoip_proxy_recursive +syn keyword ngxDirective contained google_perftools_profiles +syn keyword ngxDirective contained grpc_bind +syn keyword ngxDirective contained grpc_buffer_size +syn keyword ngxDirective contained grpc_connect_timeout +syn keyword ngxDirective contained grpc_hide_header +syn keyword ngxDirective contained grpc_ignore_headers +syn keyword ngxDirective contained grpc_intercept_errors +syn keyword ngxDirective contained grpc_next_upstream +syn keyword ngxDirective contained grpc_next_upstream_timeout +syn keyword ngxDirective contained grpc_next_upstream_tries +syn keyword ngxDirective contained grpc_pass +syn keyword ngxDirective contained grpc_pass_header +syn keyword ngxDirective contained grpc_read_timeout +syn keyword ngxDirective contained grpc_send_timeout +syn keyword ngxDirective contained grpc_set_header +syn keyword ngxDirective contained grpc_socket_keepalive +syn keyword ngxDirective contained grpc_ssl_certificate +syn keyword ngxDirective contained grpc_ssl_certificate_key +syn keyword ngxDirective contained grpc_ssl_ciphers +syn keyword ngxDirective contained grpc_ssl_crl +syn keyword ngxDirective contained grpc_ssl_name +syn keyword ngxDirective contained grpc_ssl_password_file +syn keyword ngxDirective contained grpc_ssl_protocols +syn keyword ngxDirective contained grpc_ssl_server_name +syn keyword ngxDirective contained grpc_ssl_session_reuse +syn keyword ngxDirective contained grpc_ssl_trusted_certificate +syn keyword ngxDirective contained grpc_ssl_verify +syn keyword ngxDirective contained grpc_ssl_verify_depth +syn keyword ngxDirective contained gunzip +syn keyword ngxDirective contained gunzip_buffers +syn keyword ngxDirective contained gzip +syn keyword ngxDirective contained gzip_buffers +syn keyword ngxDirective contained gzip_comp_level +syn keyword ngxDirective contained gzip_disable +syn keyword ngxDirective contained gzip_hash +syn keyword ngxDirective contained gzip_http_version +syn keyword ngxDirective contained gzip_min_length +syn keyword ngxDirective contained gzip_no_buffer +syn keyword ngxDirective contained gzip_proxied +syn keyword ngxDirective contained gzip_static +syn keyword ngxDirective contained gzip_types +syn keyword ngxDirective contained gzip_vary +syn keyword ngxDirective contained gzip_window +syn keyword ngxDirective contained hash +syn keyword ngxDirective contained health_check +syn keyword ngxDirective contained health_check_timeout +syn keyword ngxDirective contained hls +syn keyword ngxDirective contained hls_buffers +syn keyword ngxDirective contained hls_forward_args +syn keyword ngxDirective contained hls_fragment +syn keyword ngxDirective contained hls_mp4_buffer_size +syn keyword ngxDirective contained hls_mp4_max_buffer_size +syn keyword ngxDirective contained http2_body_preread_size +syn keyword ngxDirective contained http2_chunk_size +syn keyword ngxDirective contained http2_idle_timeout +syn keyword ngxDirective contained http2_max_concurrent_pushes +syn keyword ngxDirective contained http2_max_concurrent_streams +syn keyword ngxDirective contained http2_max_field_size +syn keyword ngxDirective contained http2_max_header_size +syn keyword ngxDirective contained http2_max_requests +syn keyword ngxDirective contained http2_pool_size +syn keyword ngxDirective contained http2_push +syn keyword ngxDirective contained http2_push_preload +syn keyword ngxDirective contained http2_recv_buffer_size +syn keyword ngxDirective contained http2_recv_timeout +syn keyword ngxDirective contained http2_streams_index_size +syn keyword ngxDirective contained if_modified_since +syn keyword ngxDirective contained ignore_invalid_headers +syn keyword ngxDirective contained image_filter +syn keyword ngxDirective contained image_filter_buffer +syn keyword ngxDirective contained image_filter_interlace +syn keyword ngxDirective contained image_filter_jpeg_quality +syn keyword ngxDirective contained image_filter_sharpen +syn keyword ngxDirective contained image_filter_transparency +syn keyword ngxDirective contained image_filter_webp_quality +syn keyword ngxDirective contained imap_auth +syn keyword ngxDirective contained imap_capabilities +syn keyword ngxDirective contained imap_client_buffer +syn keyword ngxDirective contained index +syn keyword ngxDirective contained iocp_threads +syn keyword ngxDirective contained ip_hash +syn keyword ngxDirective contained js_access +syn keyword ngxDirective contained js_content +syn keyword ngxDirective contained js_filter +syn keyword ngxDirective contained js_include +syn keyword ngxDirective contained js_path +syn keyword ngxDirective contained js_preread +syn keyword ngxDirective contained js_set +syn keyword ngxDirective contained keepalive +syn keyword ngxDirective contained keepalive_disable +syn keyword ngxDirective contained keepalive_requests +syn keyword ngxDirective contained keepalive_timeout +syn keyword ngxDirective contained keyval +syn keyword ngxDirective contained keyval_zone +syn keyword ngxDirective contained kqueue_changes +syn keyword ngxDirective contained kqueue_events +syn keyword ngxDirective contained large_client_header_buffers +syn keyword ngxDirective contained least_conn +syn keyword ngxDirective contained least_time +syn keyword ngxDirective contained limit_conn +syn keyword ngxDirective contained limit_conn_log_level +syn keyword ngxDirective contained limit_conn_status +syn keyword ngxDirective contained limit_conn_zone +syn keyword ngxDirective contained limit_rate +syn keyword ngxDirective contained limit_rate_after +syn keyword ngxDirective contained limit_req +syn keyword ngxDirective contained limit_req_dry_run +syn keyword ngxDirective contained limit_req_log_level +syn keyword ngxDirective contained limit_req_status +syn keyword ngxDirective contained limit_req_zone +syn keyword ngxDirective contained lingering_close +syn keyword ngxDirective contained lingering_time +syn keyword ngxDirective contained lingering_timeout +syn keyword ngxDirective contained load_module +syn keyword ngxDirective contained lock_file +syn keyword ngxDirective contained log_format +syn keyword ngxDirective contained log_not_found +syn keyword ngxDirective contained log_subrequest +syn keyword ngxDirective contained map_hash_bucket_size +syn keyword ngxDirective contained map_hash_max_size +syn keyword ngxDirective contained master_process +syn keyword ngxDirective contained max_ranges +syn keyword ngxDirective contained memcached_bind +syn keyword ngxDirective contained memcached_buffer_size +syn keyword ngxDirective contained memcached_connect_timeout +syn keyword ngxDirective contained memcached_force_ranges +syn keyword ngxDirective contained memcached_gzip_flag +syn keyword ngxDirective contained memcached_next_upstream +syn keyword ngxDirective contained memcached_next_upstream_timeout +syn keyword ngxDirective contained memcached_next_upstream_tries +syn keyword ngxDirective contained memcached_read_timeout +syn keyword ngxDirective contained memcached_send_timeout +syn keyword ngxDirective contained memcached_socket_keepalive +syn keyword ngxDirective contained merge_slashes +syn keyword ngxDirective contained min_delete_depth +syn keyword ngxDirective contained mirror +syn keyword ngxDirective contained mirror_request_body +syn keyword ngxDirective contained modern_browser +syn keyword ngxDirective contained modern_browser_value +syn keyword ngxDirective contained mp4 +syn keyword ngxDirective contained mp4_buffer_size +syn keyword ngxDirective contained mp4_limit_rate +syn keyword ngxDirective contained mp4_limit_rate_after +syn keyword ngxDirective contained mp4_max_buffer_size +syn keyword ngxDirective contained msie_padding +syn keyword ngxDirective contained msie_refresh +syn keyword ngxDirective contained multi_accept +syn keyword ngxDirective contained ntlm +syn keyword ngxDirective contained open_file_cache +syn keyword ngxDirective contained open_file_cache_errors +syn keyword ngxDirective contained open_file_cache_events +syn keyword ngxDirective contained open_file_cache_min_uses +syn keyword ngxDirective contained open_file_cache_valid +syn keyword ngxDirective contained open_log_file_cache +syn keyword ngxDirective contained output_buffers +syn keyword ngxDirective contained override_charset +syn keyword ngxDirective contained pcre_jit +syn keyword ngxDirective contained perl +syn keyword ngxDirective contained perl_modules +syn keyword ngxDirective contained perl_require +syn keyword ngxDirective contained perl_set +syn keyword ngxDirective contained pid +syn keyword ngxDirective contained pop3_auth +syn keyword ngxDirective contained pop3_capabilities +syn keyword ngxDirective contained port_in_redirect +syn keyword ngxDirective contained post_acceptex +syn keyword ngxDirective contained postpone_gzipping +syn keyword ngxDirective contained postpone_output +syn keyword ngxDirective contained preread_buffer_size +syn keyword ngxDirective contained preread_timeout +syn keyword ngxDirective contained protocol +syn keyword ngxDirective contained proxy +syn keyword ngxDirective contained proxy_bind +syn keyword ngxDirective contained proxy_buffer +syn keyword ngxDirective contained proxy_buffer_size +syn keyword ngxDirective contained proxy_buffering +syn keyword ngxDirective contained proxy_buffers +syn keyword ngxDirective contained proxy_busy_buffers_size +syn keyword ngxDirective contained proxy_cache +syn keyword ngxDirective contained proxy_cache_background_update +syn keyword ngxDirective contained proxy_cache_bypass +syn keyword ngxDirective contained proxy_cache_convert_head +syn keyword ngxDirective contained proxy_cache_key +syn keyword ngxDirective contained proxy_cache_lock +syn keyword ngxDirective contained proxy_cache_lock_age +syn keyword ngxDirective contained proxy_cache_lock_timeout +syn keyword ngxDirective contained proxy_cache_max_range_offset +syn keyword ngxDirective contained proxy_cache_methods +syn keyword ngxDirective contained proxy_cache_min_uses +syn keyword ngxDirective contained proxy_cache_path +syn keyword ngxDirective contained proxy_cache_purge +syn keyword ngxDirective contained proxy_cache_revalidate +syn keyword ngxDirective contained proxy_cache_use_stale +syn keyword ngxDirective contained proxy_cache_valid +syn keyword ngxDirective contained proxy_connect_timeout +syn keyword ngxDirective contained proxy_cookie_domain +syn keyword ngxDirective contained proxy_cookie_path +syn keyword ngxDirective contained proxy_download_rate +syn keyword ngxDirective contained proxy_force_ranges +syn keyword ngxDirective contained proxy_headers_hash_bucket_size +syn keyword ngxDirective contained proxy_headers_hash_max_size +syn keyword ngxDirective contained proxy_hide_header +syn keyword ngxDirective contained proxy_http_version +syn keyword ngxDirective contained proxy_ignore_client_abort +syn keyword ngxDirective contained proxy_ignore_headers +syn keyword ngxDirective contained proxy_intercept_errors +syn keyword ngxDirective contained proxy_limit_rate +syn keyword ngxDirective contained proxy_max_temp_file_size +syn keyword ngxDirective contained proxy_method +syn keyword ngxDirective contained proxy_next_upstream +syn keyword ngxDirective contained proxy_next_upstream_timeout +syn keyword ngxDirective contained proxy_next_upstream_tries +syn keyword ngxDirective contained proxy_no_cache +syn keyword ngxDirective contained proxy_pass_error_message +syn keyword ngxDirective contained proxy_pass_header +syn keyword ngxDirective contained proxy_pass_request_body +syn keyword ngxDirective contained proxy_pass_request_headers +syn keyword ngxDirective contained proxy_protocol +syn keyword ngxDirective contained proxy_protocol_timeout +syn keyword ngxDirective contained proxy_read_timeout +syn keyword ngxDirective contained proxy_redirect +syn keyword ngxDirective contained proxy_request_buffering +syn keyword ngxDirective contained proxy_requests +syn keyword ngxDirective contained proxy_responses +syn keyword ngxDirective contained proxy_send_lowat +syn keyword ngxDirective contained proxy_send_timeout +syn keyword ngxDirective contained proxy_session_drop +syn keyword ngxDirective contained proxy_set_body +syn keyword ngxDirective contained proxy_set_header +syn keyword ngxDirective contained proxy_socket_keepalive +syn keyword ngxDirective contained proxy_ssl +syn keyword ngxDirective contained proxy_ssl_certificate +syn keyword ngxDirective contained proxy_ssl_certificate_key +syn keyword ngxDirective contained proxy_ssl_ciphers +syn keyword ngxDirective contained proxy_ssl_crl +syn keyword ngxDirective contained proxy_ssl_name +syn keyword ngxDirective contained proxy_ssl_password_file +syn keyword ngxDirective contained proxy_ssl_protocols +syn keyword ngxDirective contained proxy_ssl_server_name +syn keyword ngxDirective contained proxy_ssl_session_reuse +syn keyword ngxDirective contained proxy_ssl_trusted_certificate +syn keyword ngxDirective contained proxy_ssl_verify +syn keyword ngxDirective contained proxy_ssl_verify_depth +syn keyword ngxDirective contained proxy_store +syn keyword ngxDirective contained proxy_store_access +syn keyword ngxDirective contained proxy_temp_file_write_size +syn keyword ngxDirective contained proxy_temp_path +syn keyword ngxDirective contained proxy_timeout +syn keyword ngxDirective contained proxy_upload_rate +syn keyword ngxDirective contained queue +syn keyword ngxDirective contained random +syn keyword ngxDirective contained random_index +syn keyword ngxDirective contained read_ahead +syn keyword ngxDirective contained real_ip_header +syn keyword ngxDirective contained real_ip_recursive +syn keyword ngxDirective contained recursive_error_pages +syn keyword ngxDirective contained referer_hash_bucket_size +syn keyword ngxDirective contained referer_hash_max_size +syn keyword ngxDirective contained request_pool_size +syn keyword ngxDirective contained reset_timedout_connection +syn keyword ngxDirective contained resolver +syn keyword ngxDirective contained resolver_timeout +syn keyword ngxDirective contained rewrite_log +syn keyword ngxDirective contained satisfy +syn keyword ngxDirective contained scgi_bind +syn keyword ngxDirective contained scgi_buffer_size +syn keyword ngxDirective contained scgi_buffering +syn keyword ngxDirective contained scgi_buffers +syn keyword ngxDirective contained scgi_busy_buffers_size +syn keyword ngxDirective contained scgi_cache +syn keyword ngxDirective contained scgi_cache_background_update +syn keyword ngxDirective contained scgi_cache_bypass +syn keyword ngxDirective contained scgi_cache_key +syn keyword ngxDirective contained scgi_cache_lock +syn keyword ngxDirective contained scgi_cache_lock_age +syn keyword ngxDirective contained scgi_cache_lock_timeout +syn keyword ngxDirective contained scgi_cache_max_range_offset +syn keyword ngxDirective contained scgi_cache_methods +syn keyword ngxDirective contained scgi_cache_min_uses +syn keyword ngxDirective contained scgi_cache_path +syn keyword ngxDirective contained scgi_cache_purge +syn keyword ngxDirective contained scgi_cache_revalidate +syn keyword ngxDirective contained scgi_cache_use_stale +syn keyword ngxDirective contained scgi_cache_valid +syn keyword ngxDirective contained scgi_connect_timeout +syn keyword ngxDirective contained scgi_force_ranges +syn keyword ngxDirective contained scgi_hide_header +syn keyword ngxDirective contained scgi_ignore_client_abort +syn keyword ngxDirective contained scgi_ignore_headers +syn keyword ngxDirective contained scgi_intercept_errors +syn keyword ngxDirective contained scgi_limit_rate +syn keyword ngxDirective contained scgi_max_temp_file_size +syn keyword ngxDirective contained scgi_next_upstream +syn keyword ngxDirective contained scgi_next_upstream_timeout +syn keyword ngxDirective contained scgi_next_upstream_tries +syn keyword ngxDirective contained scgi_no_cache +syn keyword ngxDirective contained scgi_param +syn keyword ngxDirective contained scgi_pass_header +syn keyword ngxDirective contained scgi_pass_request_body +syn keyword ngxDirective contained scgi_pass_request_headers +syn keyword ngxDirective contained scgi_read_timeout +syn keyword ngxDirective contained scgi_request_buffering +syn keyword ngxDirective contained scgi_send_timeout +syn keyword ngxDirective contained scgi_socket_keepalive +syn keyword ngxDirective contained scgi_store +syn keyword ngxDirective contained scgi_store_access +syn keyword ngxDirective contained scgi_temp_file_write_size +syn keyword ngxDirective contained scgi_temp_path +syn keyword ngxDirective contained secure_link +syn keyword ngxDirective contained secure_link_md5 +syn keyword ngxDirective contained secure_link_secret +syn keyword ngxDirective contained send_lowat +syn keyword ngxDirective contained send_timeout +syn keyword ngxDirective contained sendfile +syn keyword ngxDirective contained sendfile_max_chunk +syn keyword ngxDirective contained server_name_in_redirect +syn keyword ngxDirective contained server_names_hash_bucket_size +syn keyword ngxDirective contained server_names_hash_max_size +syn keyword ngxDirective contained server_tokens +syn keyword ngxDirective contained session_log +syn keyword ngxDirective contained session_log_format +syn keyword ngxDirective contained session_log_zone +syn keyword ngxDirective contained set_real_ip_from +syn keyword ngxDirective contained slice +syn keyword ngxDirective contained smtp_auth +syn keyword ngxDirective contained smtp_capabilities +syn keyword ngxDirective contained smtp_client_buffer +syn keyword ngxDirective contained smtp_greeting_delay +syn keyword ngxDirective contained source_charset +syn keyword ngxDirective contained ssi +syn keyword ngxDirective contained ssi_ignore_recycled_buffers +syn keyword ngxDirective contained ssi_last_modified +syn keyword ngxDirective contained ssi_min_file_chunk +syn keyword ngxDirective contained ssi_silent_errors +syn keyword ngxDirective contained ssi_types +syn keyword ngxDirective contained ssi_value_length +syn keyword ngxDirective contained ssl_buffer_size +syn keyword ngxDirective contained ssl_certificate +syn keyword ngxDirective contained ssl_certificate_key +syn keyword ngxDirective contained ssl_ciphers +syn keyword ngxDirective contained ssl_client_certificate +syn keyword ngxDirective contained ssl_crl +syn keyword ngxDirective contained ssl_dhparam +syn keyword ngxDirective contained ssl_early_data +syn keyword ngxDirective contained ssl_ecdh_curve +syn keyword ngxDirective contained ssl_engine +syn keyword ngxDirective contained ssl_handshake_timeout +syn keyword ngxDirective contained ssl_password_file +syn keyword ngxDirective contained ssl_prefer_server_ciphers +syn keyword ngxDirective contained ssl_preread +syn keyword ngxDirective contained ssl_protocols +syn keyword ngxDirective contained ssl_session_cache +syn keyword ngxDirective contained ssl_session_ticket_key +syn keyword ngxDirective contained ssl_session_tickets +syn keyword ngxDirective contained ssl_session_timeout +syn keyword ngxDirective contained ssl_stapling +syn keyword ngxDirective contained ssl_stapling_file +syn keyword ngxDirective contained ssl_stapling_responder +syn keyword ngxDirective contained ssl_stapling_verify +syn keyword ngxDirective contained ssl_trusted_certificate +syn keyword ngxDirective contained ssl_verify_client +syn keyword ngxDirective contained ssl_verify_depth +syn keyword ngxDirective contained starttls +syn keyword ngxDirective contained state +syn keyword ngxDirective contained status +syn keyword ngxDirective contained status_format +syn keyword ngxDirective contained status_zone +syn keyword ngxDirective contained sticky +syn keyword ngxDirective contained sticky_cookie_insert +syn keyword ngxDirective contained stub_status +syn keyword ngxDirective contained sub_filter +syn keyword ngxDirective contained sub_filter_last_modified +syn keyword ngxDirective contained sub_filter_once +syn keyword ngxDirective contained sub_filter_types +syn keyword ngxDirective contained subrequest_output_buffer_size +syn keyword ngxDirective contained tcp_nodelay +syn keyword ngxDirective contained tcp_nopush +syn keyword ngxDirective contained thread_pool +syn keyword ngxDirective contained timeout +syn keyword ngxDirective contained timer_resolution +syn keyword ngxDirective contained types_hash_bucket_size +syn keyword ngxDirective contained types_hash_max_size +syn keyword ngxDirective contained underscores_in_headers +syn keyword ngxDirective contained uninitialized_variable_warn +syn keyword ngxDirective contained use +syn keyword ngxDirective contained user +syn keyword ngxDirective contained userid +syn keyword ngxDirective contained userid_domain +syn keyword ngxDirective contained userid_expires +syn keyword ngxDirective contained userid_mark +syn keyword ngxDirective contained userid_name +syn keyword ngxDirective contained userid_p3p +syn keyword ngxDirective contained userid_path +syn keyword ngxDirective contained userid_service +syn keyword ngxDirective contained uwsgi_bind +syn keyword ngxDirective contained uwsgi_buffer_size +syn keyword ngxDirective contained uwsgi_buffering +syn keyword ngxDirective contained uwsgi_buffers +syn keyword ngxDirective contained uwsgi_busy_buffers_size +syn keyword ngxDirective contained uwsgi_cache +syn keyword ngxDirective contained uwsgi_cache_background_update +syn keyword ngxDirective contained uwsgi_cache_bypass +syn keyword ngxDirective contained uwsgi_cache_key +syn keyword ngxDirective contained uwsgi_cache_lock +syn keyword ngxDirective contained uwsgi_cache_lock_age +syn keyword ngxDirective contained uwsgi_cache_lock_timeout +syn keyword ngxDirective contained uwsgi_cache_max_range_offset +syn keyword ngxDirective contained uwsgi_cache_methods +syn keyword ngxDirective contained uwsgi_cache_min_uses +syn keyword ngxDirective contained uwsgi_cache_path +syn keyword ngxDirective contained uwsgi_cache_purge +syn keyword ngxDirective contained uwsgi_cache_revalidate +syn keyword ngxDirective contained uwsgi_cache_use_stale +syn keyword ngxDirective contained uwsgi_cache_valid +syn keyword ngxDirective contained uwsgi_connect_timeout +syn keyword ngxDirective contained uwsgi_force_ranges +syn keyword ngxDirective contained uwsgi_hide_header +syn keyword ngxDirective contained uwsgi_ignore_client_abort +syn keyword ngxDirective contained uwsgi_ignore_headers +syn keyword ngxDirective contained uwsgi_intercept_errors +syn keyword ngxDirective contained uwsgi_limit_rate +syn keyword ngxDirective contained uwsgi_max_temp_file_size +syn keyword ngxDirective contained uwsgi_modifier1 +syn keyword ngxDirective contained uwsgi_modifier2 +syn keyword ngxDirective contained uwsgi_next_upstream +syn keyword ngxDirective contained uwsgi_next_upstream_timeout +syn keyword ngxDirective contained uwsgi_next_upstream_tries +syn keyword ngxDirective contained uwsgi_no_cache +syn keyword ngxDirective contained uwsgi_param +syn keyword ngxDirective contained uwsgi_pass_header +syn keyword ngxDirective contained uwsgi_pass_request_body +syn keyword ngxDirective contained uwsgi_pass_request_headers +syn keyword ngxDirective contained uwsgi_read_timeout +syn keyword ngxDirective contained uwsgi_request_buffering +syn keyword ngxDirective contained uwsgi_send_timeout +syn keyword ngxDirective contained uwsgi_socket_keepalive +syn keyword ngxDirective contained uwsgi_ssl_certificate +syn keyword ngxDirective contained uwsgi_ssl_certificate_key +syn keyword ngxDirective contained uwsgi_ssl_ciphers +syn keyword ngxDirective contained uwsgi_ssl_crl +syn keyword ngxDirective contained uwsgi_ssl_name +syn keyword ngxDirective contained uwsgi_ssl_password_file +syn keyword ngxDirective contained uwsgi_ssl_protocols +syn keyword ngxDirective contained uwsgi_ssl_server_name +syn keyword ngxDirective contained uwsgi_ssl_session_reuse +syn keyword ngxDirective contained uwsgi_ssl_trusted_certificate +syn keyword ngxDirective contained uwsgi_ssl_verify +syn keyword ngxDirective contained uwsgi_ssl_verify_depth +syn keyword ngxDirective contained uwsgi_store +syn keyword ngxDirective contained uwsgi_store_access +syn keyword ngxDirective contained uwsgi_string +syn keyword ngxDirective contained uwsgi_temp_file_write_size +syn keyword ngxDirective contained uwsgi_temp_path +syn keyword ngxDirective contained valid_referers +syn keyword ngxDirective contained variables_hash_bucket_size +syn keyword ngxDirective contained variables_hash_max_size +syn keyword ngxDirective contained worker_aio_requests +syn keyword ngxDirective contained worker_connections +syn keyword ngxDirective contained worker_cpu_affinity +syn keyword ngxDirective contained worker_priority +syn keyword ngxDirective contained worker_processes +syn keyword ngxDirective contained worker_rlimit_core +syn keyword ngxDirective contained worker_rlimit_nofile +syn keyword ngxDirective contained worker_shutdown_timeout +syn keyword ngxDirective contained working_directory +syn keyword ngxDirective contained xclient +syn keyword ngxDirective contained xml_entities +syn keyword ngxDirective contained xslt_last_modified +syn keyword ngxDirective contained xslt_param +syn keyword ngxDirective contained xslt_string_param +syn keyword ngxDirective contained xslt_stylesheet +syn keyword ngxDirective contained xslt_types +syn keyword ngxDirective contained zone +syn keyword ngxDirective contained zone_sync +syn keyword ngxDirective contained zone_sync_buffers +syn keyword ngxDirective contained zone_sync_connect_retry_interval +syn keyword ngxDirective contained zone_sync_connect_timeout +syn keyword ngxDirective contained zone_sync_interval +syn keyword ngxDirective contained zone_sync_recv_buffer_size +syn keyword ngxDirective contained zone_sync_server +syn keyword ngxDirective contained zone_sync_ssl +syn keyword ngxDirective contained zone_sync_ssl_certificate +syn keyword ngxDirective contained zone_sync_ssl_certificate_key +syn keyword ngxDirective contained zone_sync_ssl_ciphers +syn keyword ngxDirective contained zone_sync_ssl_crl +syn keyword ngxDirective contained zone_sync_ssl_name +syn keyword ngxDirective contained zone_sync_ssl_password_file +syn keyword ngxDirective contained zone_sync_ssl_protocols +syn keyword ngxDirective contained zone_sync_ssl_server_name +syn keyword ngxDirective contained zone_sync_ssl_trusted_certificate +syn keyword ngxDirective contained zone_sync_ssl_verify +syn keyword ngxDirective contained zone_sync_ssl_verify_depth +syn keyword ngxDirective contained zone_sync_timeout + +" 3rd party modules list taken from +" https://github.com/freebsd/freebsd-ports/blob/master/www/nginx-devel/Makefile +" ----------------------------------------------------------------------------- + +" Accept Language +" https://github.com/giom/nginx_accept_language_module +syn keyword ngxDirectiveThirdParty contained set_from_accept_language + +" Digest Authentication +" https://github.com/atomx/nginx-http-auth-digest +syn keyword ngxDirectiveThirdParty contained auth_digest +syn keyword ngxDirectiveThirdParty contained auth_digest_drop_time +syn keyword ngxDirectiveThirdParty contained auth_digest_evasion_time +syn keyword ngxDirectiveThirdParty contained auth_digest_expires +syn keyword ngxDirectiveThirdParty contained auth_digest_maxtries +syn keyword ngxDirectiveThirdParty contained auth_digest_replays +syn keyword ngxDirectiveThirdParty contained auth_digest_shm_size +syn keyword ngxDirectiveThirdParty contained auth_digest_timeout +syn keyword ngxDirectiveThirdParty contained auth_digest_user_file + +" SPNEGO Authentication +" https://github.com/stnoonan/spnego-http-auth-nginx-module +syn keyword ngxDirectiveThirdParty contained auth_gss +syn keyword ngxDirectiveThirdParty contained auth_gss_allow_basic_fallback +syn keyword ngxDirectiveThirdParty contained auth_gss_authorized_principal +syn keyword ngxDirectiveThirdParty contained auth_gss_force_realm +syn keyword ngxDirectiveThirdParty contained auth_gss_format_full +syn keyword ngxDirectiveThirdParty contained auth_gss_keytab +syn keyword ngxDirectiveThirdParty contained auth_gss_realm +syn keyword ngxDirectiveThirdParty contained auth_gss_service_name + +" LDAP Authentication +" https://github.com/kvspb/nginx-auth-ldap +syn keyword ngxDirectiveThirdParty contained auth_ldap +syn keyword ngxDirectiveThirdParty contained auth_ldap_cache_enabled +syn keyword ngxDirectiveThirdParty contained auth_ldap_cache_expiration_time +syn keyword ngxDirectiveThirdParty contained auth_ldap_cache_size +syn keyword ngxDirectiveThirdParty contained auth_ldap_servers +syn keyword ngxDirectiveThirdParty contained auth_ldap_servers_size +syn keyword ngxDirectiveThirdParty contained ldap_server + +" PAM Authentication +" https://github.com/sto/ngx_http_auth_pam_module +syn keyword ngxDirectiveThirdParty contained auth_pam +syn keyword ngxDirectiveThirdParty contained auth_pam_service_name +syn keyword ngxDirectiveThirdParty contained auth_pam_set_pam_env + +" AJP protocol proxy +" https://github.com/yaoweibin/nginx_ajp_module +syn keyword ngxDirectiveThirdParty contained ajp_buffer_size +syn keyword ngxDirectiveThirdParty contained ajp_buffers +syn keyword ngxDirectiveThirdParty contained ajp_busy_buffers_size +syn keyword ngxDirectiveThirdParty contained ajp_cache +syn keyword ngxDirectiveThirdParty contained ajp_cache_key +syn keyword ngxDirectiveThirdParty contained ajp_cache_lock +syn keyword ngxDirectiveThirdParty contained ajp_cache_lock_timeout +syn keyword ngxDirectiveThirdParty contained ajp_cache_methods +syn keyword ngxDirectiveThirdParty contained ajp_cache_min_uses +syn keyword ngxDirectiveThirdParty contained ajp_cache_path +syn keyword ngxDirectiveThirdParty contained ajp_cache_use_stale +syn keyword ngxDirectiveThirdParty contained ajp_cache_valid +syn keyword ngxDirectiveThirdParty contained ajp_connect_timeout +syn keyword ngxDirectiveThirdParty contained ajp_header_packet_buffer_size +syn keyword ngxDirectiveThirdParty contained ajp_hide_header +syn keyword ngxDirectiveThirdParty contained ajp_ignore_client_abort +syn keyword ngxDirectiveThirdParty contained ajp_ignore_headers +syn keyword ngxDirectiveThirdParty contained ajp_intercept_errors +syn keyword ngxDirectiveThirdParty contained ajp_keep_conn +syn keyword ngxDirectiveThirdParty contained ajp_max_data_packet_size +syn keyword ngxDirectiveThirdParty contained ajp_max_temp_file_size +syn keyword ngxDirectiveThirdParty contained ajp_next_upstream +syn keyword ngxDirectiveThirdParty contained ajp_pass +syn keyword ngxDirectiveThirdParty contained ajp_pass_header +syn keyword ngxDirectiveThirdParty contained ajp_pass_request_body +syn keyword ngxDirectiveThirdParty contained ajp_pass_request_headers +syn keyword ngxDirectiveThirdParty contained ajp_read_timeout +syn keyword ngxDirectiveThirdParty contained ajp_send_lowat +syn keyword ngxDirectiveThirdParty contained ajp_send_timeout +syn keyword ngxDirectiveThirdParty contained ajp_store +syn keyword ngxDirectiveThirdParty contained ajp_store_access +syn keyword ngxDirectiveThirdParty contained ajp_temp_file_write_size +syn keyword ngxDirectiveThirdParty contained ajp_temp_path +syn keyword ngxDirectiveThirdParty contained ajp_upstream_fail_timeout +syn keyword ngxDirectiveThirdParty contained ajp_upstream_max_fails + +" AWS proxy +" https://github.com/anomalizer/ngx_aws_auth +syn keyword ngxDirectiveThirdParty contained aws_access_key +syn keyword ngxDirectiveThirdParty contained aws_endpoint +syn keyword ngxDirectiveThirdParty contained aws_key_scope +syn keyword ngxDirectiveThirdParty contained aws_s3_bucket +syn keyword ngxDirectiveThirdParty contained aws_sign +syn keyword ngxDirectiveThirdParty contained aws_signing_key + +" embedding Clojure or Java or Groovy programs +" https://github.com/nginx-clojure/nginx-clojure +syn keyword ngxDirectiveThirdParty contained access_handler_code +syn keyword ngxDirectiveThirdParty contained access_handler_name +syn keyword ngxDirectiveThirdParty contained access_handler_property +syn keyword ngxDirectiveThirdParty contained access_handler_type +syn keyword ngxDirectiveThirdParty contained always_read_body +syn keyword ngxDirectiveThirdParty contained auto_upgrade_ws +syn keyword ngxDirectiveThirdParty contained body_filter_code +syn keyword ngxDirectiveThirdParty contained body_filter_name +syn keyword ngxDirectiveThirdParty contained body_filter_property +syn keyword ngxDirectiveThirdParty contained body_filter_type +syn keyword ngxDirectiveThirdParty contained content_handler_code +syn keyword ngxDirectiveThirdParty contained content_handler_name +syn keyword ngxDirectiveThirdParty contained content_handler_property +syn keyword ngxDirectiveThirdParty contained content_handler_type +syn keyword ngxDirectiveThirdParty contained handler_code +syn keyword ngxDirectiveThirdParty contained handler_name +syn keyword ngxDirectiveThirdParty contained handler_type +syn keyword ngxDirectiveThirdParty contained handlers_lazy_init +syn keyword ngxDirectiveThirdParty contained header_filter_code +syn keyword ngxDirectiveThirdParty contained header_filter_name +syn keyword ngxDirectiveThirdParty contained header_filter_property +syn keyword ngxDirectiveThirdParty contained header_filter_type +syn keyword ngxDirectiveThirdParty contained jvm_classpath +syn keyword ngxDirectiveThirdParty contained jvm_classpath_check +syn keyword ngxDirectiveThirdParty contained jvm_exit_handler_code +syn keyword ngxDirectiveThirdParty contained jvm_exit_handler_name +syn keyword ngxDirectiveThirdParty contained jvm_handler_type +syn keyword ngxDirectiveThirdParty contained jvm_init_handler_code +syn keyword ngxDirectiveThirdParty contained jvm_init_handler_name +syn keyword ngxDirectiveThirdParty contained jvm_options +syn keyword ngxDirectiveThirdParty contained jvm_path +syn keyword ngxDirectiveThirdParty contained jvm_var +syn keyword ngxDirectiveThirdParty contained jvm_workers +syn keyword ngxDirectiveThirdParty contained max_balanced_tcp_connections +syn keyword ngxDirectiveThirdParty contained rewrite_handler_code +syn keyword ngxDirectiveThirdParty contained rewrite_handler_name +syn keyword ngxDirectiveThirdParty contained rewrite_handler_property +syn keyword ngxDirectiveThirdParty contained rewrite_handler_type +syn keyword ngxDirectiveThirdParty contained shared_map +syn keyword ngxDirectiveThirdParty contained write_page_size + +" Certificate Transparency +" https://github.com/grahamedgecombe/nginx-ct +syn keyword ngxDirectiveThirdParty contained ssl_ct +syn keyword ngxDirectiveThirdParty contained ssl_ct_static_scts + +" ngx_echo +" https://github.com/openresty/echo-nginx-module +syn keyword ngxDirectiveThirdParty contained echo_abort_parent +syn keyword ngxDirectiveThirdParty contained echo_after_body +syn keyword ngxDirectiveThirdParty contained echo_before_body +syn keyword ngxDirectiveThirdParty contained echo_blocking_sleep +syn keyword ngxDirectiveThirdParty contained echo_end +syn keyword ngxDirectiveThirdParty contained echo_exec +syn keyword ngxDirectiveThirdParty contained echo_flush +syn keyword ngxDirectiveThirdParty contained echo_foreach_split +syn keyword ngxDirectiveThirdParty contained echo_location +syn keyword ngxDirectiveThirdParty contained echo_location_async +syn keyword ngxDirectiveThirdParty contained echo_read_request_body +syn keyword ngxDirectiveThirdParty contained echo_request_body +syn keyword ngxDirectiveThirdParty contained echo_reset_timer +syn keyword ngxDirectiveThirdParty contained echo_status +syn keyword ngxDirectiveThirdParty contained echo_subrequest +syn keyword ngxDirectiveThirdParty contained echo_subrequest_async + +" FastDFS +" https://github.com/happyfish100/fastdfs-nginx-module +syn keyword ngxDirectiveThirdParty contained ngx_fastdfs_module + +" ngx_headers_more +" https://github.com/openresty/headers-more-nginx-module +syn keyword ngxDirectiveThirdParty contained more_clear_headers +syn keyword ngxDirectiveThirdParty contained more_clear_input_headers +syn keyword ngxDirectiveThirdParty contained more_set_headers +syn keyword ngxDirectiveThirdParty contained more_set_input_headers + +" NGINX WebDAV missing commands support (PROPFIND & OPTIONS) +" https://github.com/arut/nginx-dav-ext-module +syn keyword ngxDirectiveThirdParty contained dav_ext_lock +syn keyword ngxDirectiveThirdParty contained dav_ext_lock_zone +syn keyword ngxDirectiveThirdParty contained dav_ext_methods + +" ngx_eval +" https://github.com/openresty/nginx-eval-module +syn keyword ngxDirectiveThirdParty contained eval +syn keyword ngxDirectiveThirdParty contained eval_buffer_size +syn keyword ngxDirectiveThirdParty contained eval_escalate +syn keyword ngxDirectiveThirdParty contained eval_override_content_type +syn keyword ngxDirectiveThirdParty contained eval_subrequest_in_memory + +" Fancy Index +" https://github.com/aperezdc/ngx-fancyindex +syn keyword ngxDirectiveThirdParty contained fancyindex +syn keyword ngxDirectiveThirdParty contained fancyindex_css_href +syn keyword ngxDirectiveThirdParty contained fancyindex_default_sort +syn keyword ngxDirectiveThirdParty contained fancyindex_directories_first +syn keyword ngxDirectiveThirdParty contained fancyindex_exact_size +syn keyword ngxDirectiveThirdParty contained fancyindex_footer +syn keyword ngxDirectiveThirdParty contained fancyindex_header +syn keyword ngxDirectiveThirdParty contained fancyindex_hide_parent_dir +syn keyword ngxDirectiveThirdParty contained fancyindex_hide_symlinks +syn keyword ngxDirectiveThirdParty contained fancyindex_ignore +syn keyword ngxDirectiveThirdParty contained fancyindex_localtime +syn keyword ngxDirectiveThirdParty contained fancyindex_name_length +syn keyword ngxDirectiveThirdParty contained fancyindex_show_path +syn keyword ngxDirectiveThirdParty contained fancyindex_time_format + +" Footer filter +" https://github.com/alibaba/nginx-http-footer-filter +syn keyword ngxDirectiveThirdParty contained footer +syn keyword ngxDirectiveThirdParty contained footer_types + +" ngx_http_geoip2_module +" https://github.com/leev/ngx_http_geoip2_module +syn keyword ngxDirectiveThirdParty contained geoip2 +syn keyword ngxDirectiveThirdParty contained geoip2_proxy +syn keyword ngxDirectiveThirdParty contained geoip2_proxy_recursive + +" A version of the Nginx HTTP stub status module that outputs in JSON format +" https://github.com/nginx-modules/nginx-json-status-module +syn keyword ngxDirectiveThirdParty contained json_status +syn keyword ngxDirectiveThirdParty contained json_status_type + +" MogileFS client for nginx +" https://github.com/vkholodkov/nginx-mogilefs-module +syn keyword ngxDirectiveThirdParty contained mogilefs_class +syn keyword ngxDirectiveThirdParty contained mogilefs_connect_timeout +syn keyword ngxDirectiveThirdParty contained mogilefs_domain +syn keyword ngxDirectiveThirdParty contained mogilefs_methods +syn keyword ngxDirectiveThirdParty contained mogilefs_noverify +syn keyword ngxDirectiveThirdParty contained mogilefs_pass +syn keyword ngxDirectiveThirdParty contained mogilefs_read_timeout +syn keyword ngxDirectiveThirdParty contained mogilefs_send_timeout +syn keyword ngxDirectiveThirdParty contained mogilefs_tracker + +" Ancient nginx plugin; probably not useful to anyone +" https://github.com/kr/nginx-notice +syn keyword ngxDirectiveThirdParty contained notice +syn keyword ngxDirectiveThirdParty contained notice_type + +" nchan +" https://github.com/slact/nchan +syn keyword ngxDirectiveThirdParty contained nchan_access_control_allow_credentials +syn keyword ngxDirectiveThirdParty contained nchan_access_control_allow_origin +syn keyword ngxDirectiveThirdParty contained nchan_authorize_request +syn keyword ngxDirectiveThirdParty contained nchan_benchmark +syn keyword ngxDirectiveThirdParty contained nchan_benchmark_channels +syn keyword ngxDirectiveThirdParty contained nchan_benchmark_message_padding_bytes +syn keyword ngxDirectiveThirdParty contained nchan_benchmark_messages_per_channel_per_minute +syn keyword ngxDirectiveThirdParty contained nchan_benchmark_publisher_distribution +syn keyword ngxDirectiveThirdParty contained nchan_benchmark_subscriber_distribution +syn keyword ngxDirectiveThirdParty contained nchan_benchmark_subscribers_per_channel +syn keyword ngxDirectiveThirdParty contained nchan_benchmark_time +syn keyword ngxDirectiveThirdParty contained nchan_channel_event_string +syn keyword ngxDirectiveThirdParty contained nchan_channel_events_channel_id +syn keyword ngxDirectiveThirdParty contained nchan_channel_group +syn keyword ngxDirectiveThirdParty contained nchan_channel_group_accounting +syn keyword ngxDirectiveThirdParty contained nchan_channel_id +syn keyword ngxDirectiveThirdParty contained nchan_channel_id_split_delimiter +syn keyword ngxDirectiveThirdParty contained nchan_channel_timeout +syn keyword ngxDirectiveThirdParty contained nchan_deflate_message_for_websocket +syn keyword ngxDirectiveThirdParty contained nchan_eventsource_event +syn keyword ngxDirectiveThirdParty contained nchan_group_location +syn keyword ngxDirectiveThirdParty contained nchan_group_max_channels +syn keyword ngxDirectiveThirdParty contained nchan_group_max_messages +syn keyword ngxDirectiveThirdParty contained nchan_group_max_messages_disk +syn keyword ngxDirectiveThirdParty contained nchan_group_max_messages_memory +syn keyword ngxDirectiveThirdParty contained nchan_group_max_subscribers +syn keyword ngxDirectiveThirdParty contained nchan_longpoll_multipart_response +syn keyword ngxDirectiveThirdParty contained nchan_max_channel_id_length +syn keyword ngxDirectiveThirdParty contained nchan_max_channel_subscribers +syn keyword ngxDirectiveThirdParty contained nchan_max_reserved_memory +syn keyword ngxDirectiveThirdParty contained nchan_message_buffer_length +syn keyword ngxDirectiveThirdParty contained nchan_message_max_buffer_length +syn keyword ngxDirectiveThirdParty contained nchan_message_temp_path +syn keyword ngxDirectiveThirdParty contained nchan_message_timeout +syn keyword ngxDirectiveThirdParty contained nchan_permessage_deflate_compression_level +syn keyword ngxDirectiveThirdParty contained nchan_permessage_deflate_compression_memlevel +syn keyword ngxDirectiveThirdParty contained nchan_permessage_deflate_compression_strategy +syn keyword ngxDirectiveThirdParty contained nchan_permessage_deflate_compression_window +syn keyword ngxDirectiveThirdParty contained nchan_pub_channel_id +syn keyword ngxDirectiveThirdParty contained nchan_publisher +syn keyword ngxDirectiveThirdParty contained nchan_publisher_channel_id +syn keyword ngxDirectiveThirdParty contained nchan_publisher_location +syn keyword ngxDirectiveThirdParty contained nchan_publisher_upstream_request +syn keyword ngxDirectiveThirdParty contained nchan_pubsub +syn keyword ngxDirectiveThirdParty contained nchan_pubsub_channel_id +syn keyword ngxDirectiveThirdParty contained nchan_pubsub_location +syn keyword ngxDirectiveThirdParty contained nchan_redis_connect_timeout +syn keyword ngxDirectiveThirdParty contained nchan_redis_fakesub_timer_interval +syn keyword ngxDirectiveThirdParty contained nchan_redis_idle_channel_cache_timeout +syn keyword ngxDirectiveThirdParty contained nchan_redis_namespace +syn keyword ngxDirectiveThirdParty contained nchan_redis_nostore_fastpublish +syn keyword ngxDirectiveThirdParty contained nchan_redis_optimize_target +syn keyword ngxDirectiveThirdParty contained nchan_redis_pass +syn keyword ngxDirectiveThirdParty contained nchan_redis_pass_inheritable +syn keyword ngxDirectiveThirdParty contained nchan_redis_ping_interval +syn keyword ngxDirectiveThirdParty contained nchan_redis_publish_msgpacked_max_size +syn keyword ngxDirectiveThirdParty contained nchan_redis_server +syn keyword ngxDirectiveThirdParty contained nchan_redis_storage_mode +syn keyword ngxDirectiveThirdParty contained nchan_redis_subscribe_weights +syn keyword ngxDirectiveThirdParty contained nchan_redis_url +syn keyword ngxDirectiveThirdParty contained nchan_redis_wait_after_connecting +syn keyword ngxDirectiveThirdParty contained nchan_shared_memory_size +syn keyword ngxDirectiveThirdParty contained nchan_storage_engine +syn keyword ngxDirectiveThirdParty contained nchan_store_messages +syn keyword ngxDirectiveThirdParty contained nchan_stub_status +syn keyword ngxDirectiveThirdParty contained nchan_sub_channel_id +syn keyword ngxDirectiveThirdParty contained nchan_subscribe_existing_channels_only +syn keyword ngxDirectiveThirdParty contained nchan_subscribe_request +syn keyword ngxDirectiveThirdParty contained nchan_subscriber +syn keyword ngxDirectiveThirdParty contained nchan_subscriber_channel_id +syn keyword ngxDirectiveThirdParty contained nchan_subscriber_compound_etag_message_id +syn keyword ngxDirectiveThirdParty contained nchan_subscriber_first_message +syn keyword ngxDirectiveThirdParty contained nchan_subscriber_http_raw_stream_separator +syn keyword ngxDirectiveThirdParty contained nchan_subscriber_last_message_id +syn keyword ngxDirectiveThirdParty contained nchan_subscriber_location +syn keyword ngxDirectiveThirdParty contained nchan_subscriber_message_id_custom_etag_header +syn keyword ngxDirectiveThirdParty contained nchan_subscriber_timeout +syn keyword ngxDirectiveThirdParty contained nchan_unsubscribe_request +syn keyword ngxDirectiveThirdParty contained nchan_use_redis +syn keyword ngxDirectiveThirdParty contained nchan_websocket_client_heartbeat +syn keyword ngxDirectiveThirdParty contained nchan_websocket_ping_interval +syn keyword ngxDirectiveThirdParty contained push_authorized_channels_only +syn keyword ngxDirectiveThirdParty contained push_channel_group +syn keyword ngxDirectiveThirdParty contained push_channel_timeout +syn keyword ngxDirectiveThirdParty contained push_max_channel_id_length +syn keyword ngxDirectiveThirdParty contained push_max_channel_subscribers +syn keyword ngxDirectiveThirdParty contained push_max_message_buffer_length +syn keyword ngxDirectiveThirdParty contained push_max_reserved_memory +syn keyword ngxDirectiveThirdParty contained push_message_buffer_length +syn keyword ngxDirectiveThirdParty contained push_message_timeout +syn keyword ngxDirectiveThirdParty contained push_min_message_buffer_length +syn keyword ngxDirectiveThirdParty contained push_publisher +syn keyword ngxDirectiveThirdParty contained push_store_messages +syn keyword ngxDirectiveThirdParty contained push_subscriber +syn keyword ngxDirectiveThirdParty contained push_subscriber_concurrency +syn keyword ngxDirectiveThirdParty contained push_subscriber_timeout + +" Push Stream +" https://github.com/wandenberg/nginx-push-stream-module +syn keyword ngxDirectiveThirdParty contained push_stream_allow_connections_to_events_channel +syn keyword ngxDirectiveThirdParty contained push_stream_allowed_origins +syn keyword ngxDirectiveThirdParty contained push_stream_authorized_channels_only +syn keyword ngxDirectiveThirdParty contained push_stream_channel_deleted_message_text +syn keyword ngxDirectiveThirdParty contained push_stream_channel_inactivity_time +syn keyword ngxDirectiveThirdParty contained push_stream_channel_info_on_publish +syn keyword ngxDirectiveThirdParty contained push_stream_channels_path +syn keyword ngxDirectiveThirdParty contained push_stream_channels_statistics +syn keyword ngxDirectiveThirdParty contained push_stream_events_channel_id +syn keyword ngxDirectiveThirdParty contained push_stream_footer_template +syn keyword ngxDirectiveThirdParty contained push_stream_header_template +syn keyword ngxDirectiveThirdParty contained push_stream_header_template_file +syn keyword ngxDirectiveThirdParty contained push_stream_last_event_id +syn keyword ngxDirectiveThirdParty contained push_stream_last_received_message_tag +syn keyword ngxDirectiveThirdParty contained push_stream_last_received_message_time +syn keyword ngxDirectiveThirdParty contained push_stream_longpolling_connection_ttl +syn keyword ngxDirectiveThirdParty contained push_stream_max_channel_id_length +syn keyword ngxDirectiveThirdParty contained push_stream_max_messages_stored_per_channel +syn keyword ngxDirectiveThirdParty contained push_stream_max_number_of_channels +syn keyword ngxDirectiveThirdParty contained push_stream_max_number_of_wildcard_channels +syn keyword ngxDirectiveThirdParty contained push_stream_max_subscribers_per_channel +syn keyword ngxDirectiveThirdParty contained push_stream_message_template +syn keyword ngxDirectiveThirdParty contained push_stream_message_ttl +syn keyword ngxDirectiveThirdParty contained push_stream_padding_by_user_agent +syn keyword ngxDirectiveThirdParty contained push_stream_ping_message_interval +syn keyword ngxDirectiveThirdParty contained push_stream_ping_message_text +syn keyword ngxDirectiveThirdParty contained push_stream_publisher +syn keyword ngxDirectiveThirdParty contained push_stream_shared_memory_size +syn keyword ngxDirectiveThirdParty contained push_stream_store_messages +syn keyword ngxDirectiveThirdParty contained push_stream_subscriber +syn keyword ngxDirectiveThirdParty contained push_stream_subscriber_connection_ttl +syn keyword ngxDirectiveThirdParty contained push_stream_timeout_with_body +syn keyword ngxDirectiveThirdParty contained push_stream_user_agent +syn keyword ngxDirectiveThirdParty contained push_stream_websocket_allow_publish +syn keyword ngxDirectiveThirdParty contained push_stream_wildcard_channel_max_qtd +syn keyword ngxDirectiveThirdParty contained push_stream_wildcard_channel_prefix + +" redis module +" https://www.nginx.com/resources/wiki/modules/redis/ +syn keyword ngxDirectiveThirdParty contained redis_bind +syn keyword ngxDirectiveThirdParty contained redis_buffer_size +syn keyword ngxDirectiveThirdParty contained redis_connect_timeout +syn keyword ngxDirectiveThirdParty contained redis_gzip_flag +syn keyword ngxDirectiveThirdParty contained redis_next_upstream +syn keyword ngxDirectiveThirdParty contained redis_pass +syn keyword ngxDirectiveThirdParty contained redis_read_timeout +syn keyword ngxDirectiveThirdParty contained redis_send_timeout + +" ngx_http_response +" http://catap.ru/downloads/nginx/ +syn keyword ngxDirectiveThirdParty contained response +syn keyword ngxDirectiveThirdParty contained response_type + +" nginx_substitutions_filter +" https://github.com/yaoweibin/ngx_http_substitutions_filter_module +syn keyword ngxDirectiveThirdParty contained subs_buffers +syn keyword ngxDirectiveThirdParty contained subs_filter +syn keyword ngxDirectiveThirdParty contained subs_filter_bypass +syn keyword ngxDirectiveThirdParty contained subs_filter_types +syn keyword ngxDirectiveThirdParty contained subs_line_buffer_size + +" Tarantool nginx upstream module +" https://github.com/tarantool/nginx_upstream_module +syn keyword ngxDirectiveThirdParty contained tnt_allowed_indexes +syn keyword ngxDirectiveThirdParty contained tnt_allowed_spaces +syn keyword ngxDirectiveThirdParty contained tnt_buffer_size +syn keyword ngxDirectiveThirdParty contained tnt_connect_timeout +syn keyword ngxDirectiveThirdParty contained tnt_delete +syn keyword ngxDirectiveThirdParty contained tnt_http_methods +syn keyword ngxDirectiveThirdParty contained tnt_http_rest_methods +syn keyword ngxDirectiveThirdParty contained tnt_in_multiplier +syn keyword ngxDirectiveThirdParty contained tnt_insert +syn keyword ngxDirectiveThirdParty contained tnt_method +syn keyword ngxDirectiveThirdParty contained tnt_multireturn_skip_count +syn keyword ngxDirectiveThirdParty contained tnt_next_upstream +syn keyword ngxDirectiveThirdParty contained tnt_next_upstream_timeout +syn keyword ngxDirectiveThirdParty contained tnt_next_upstream_tries +syn keyword ngxDirectiveThirdParty contained tnt_out_multiplier +syn keyword ngxDirectiveThirdParty contained tnt_pass +syn keyword ngxDirectiveThirdParty contained tnt_pass_http_request +syn keyword ngxDirectiveThirdParty contained tnt_pass_http_request_buffer_size +syn keyword ngxDirectiveThirdParty contained tnt_pure_result +syn keyword ngxDirectiveThirdParty contained tnt_read_timeout +syn keyword ngxDirectiveThirdParty contained tnt_replace +syn keyword ngxDirectiveThirdParty contained tnt_select +syn keyword ngxDirectiveThirdParty contained tnt_select_limit_max +syn keyword ngxDirectiveThirdParty contained tnt_send_timeout +syn keyword ngxDirectiveThirdParty contained tnt_set_header +syn keyword ngxDirectiveThirdParty contained tnt_update +syn keyword ngxDirectiveThirdParty contained tnt_upsert + +" A module for nginx web server for handling file uploads using multipart/form-data encoding (RFC 1867) +" https://github.com/Austinb/nginx-upload-module +syn keyword ngxDirectiveThirdParty contained upload_aggregate_form_field +syn keyword ngxDirectiveThirdParty contained upload_archive_elm +syn keyword ngxDirectiveThirdParty contained upload_archive_elm_separator +syn keyword ngxDirectiveThirdParty contained upload_archive_path +syn keyword ngxDirectiveThirdParty contained upload_archive_path_separator +syn keyword ngxDirectiveThirdParty contained upload_buffer_size +syn keyword ngxDirectiveThirdParty contained upload_cleanup +syn keyword ngxDirectiveThirdParty contained upload_content_type +syn keyword ngxDirectiveThirdParty contained upload_discard +syn keyword ngxDirectiveThirdParty contained upload_field_name +syn keyword ngxDirectiveThirdParty contained upload_file_crc32 +syn keyword ngxDirectiveThirdParty contained upload_file_md5 +syn keyword ngxDirectiveThirdParty contained upload_file_md5_uc +syn keyword ngxDirectiveThirdParty contained upload_file_name +syn keyword ngxDirectiveThirdParty contained upload_file_sha1 +syn keyword ngxDirectiveThirdParty contained upload_file_sha1_uc +syn keyword ngxDirectiveThirdParty contained upload_file_size +syn keyword ngxDirectiveThirdParty contained upload_filter +syn keyword ngxDirectiveThirdParty contained upload_max_file_size +syn keyword ngxDirectiveThirdParty contained upload_max_output_body_len +syn keyword ngxDirectiveThirdParty contained upload_max_part_header_len +syn keyword ngxDirectiveThirdParty contained upload_pass +syn keyword ngxDirectiveThirdParty contained upload_pass_args +syn keyword ngxDirectiveThirdParty contained upload_pass_form_field +syn keyword ngxDirectiveThirdParty contained upload_set_form_field +syn keyword ngxDirectiveThirdParty contained upload_store +syn keyword ngxDirectiveThirdParty contained upload_store_access +syn keyword ngxDirectiveThirdParty contained upload_tmp_path +syn keyword ngxDirectiveThirdParty contained upload_unzip +syn keyword ngxDirectiveThirdParty contained upload_unzip_buffers +syn keyword ngxDirectiveThirdParty contained upload_unzip_hash +syn keyword ngxDirectiveThirdParty contained upload_unzip_max_file_name_len +syn keyword ngxDirectiveThirdParty contained upload_unzip_window +syn keyword ngxDirectiveThirdParty contained upload_void_content_type + +" nginx-upload-progress-module +" https://github.com/masterzen/nginx-upload-progress-module +syn keyword ngxDirectiveThirdParty contained report_uploads +syn keyword ngxDirectiveThirdParty contained track_uploads +syn keyword ngxDirectiveThirdParty contained upload_progress +syn keyword ngxDirectiveThirdParty contained upload_progress_content_type +syn keyword ngxDirectiveThirdParty contained upload_progress_header +syn keyword ngxDirectiveThirdParty contained upload_progress_java_output +syn keyword ngxDirectiveThirdParty contained upload_progress_json_output +syn keyword ngxDirectiveThirdParty contained upload_progress_jsonp_output +syn keyword ngxDirectiveThirdParty contained upload_progress_jsonp_parameter +syn keyword ngxDirectiveThirdParty contained upload_progress_template + +" Health checks upstreams for nginx +" https://github.com/yaoweibin/nginx_upstream_check_module +syn keyword ngxDirectiveThirdParty contained check +syn keyword ngxDirectiveThirdParty contained check_fastcgi_param +syn keyword ngxDirectiveThirdParty contained check_http_expect_alive +syn keyword ngxDirectiveThirdParty contained check_http_send +syn keyword ngxDirectiveThirdParty contained check_keepalive_requests +syn keyword ngxDirectiveThirdParty contained check_shm_size +syn keyword ngxDirectiveThirdParty contained check_status + +" The fair load balancer module for nginx +" https://github.com/cryptofuture/nginx-upstream-fair +syn keyword ngxDirectiveThirdParty contained fair +syn keyword ngxDirectiveThirdParty contained upstream_fair_shm_size + +" Nginx Video Thumb Extractor Module +" https://github.com/wandenberg/nginx-video-thumbextractor-module +syn keyword ngxDirectiveThirdParty contained video_thumbextractor +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_image_height +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_image_width +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_baseline +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_dpi +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_optimize +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_progressive_mode +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_quality +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_jpeg_smooth +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_next_time +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_only_keyframe +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_processes_per_worker +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_threads +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_color +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_cols +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_margin +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_max_cols +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_max_rows +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_padding +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_rows +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_tile_sample_interval +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_video_filename +syn keyword ngxDirectiveThirdParty contained video_thumbextractor_video_second + +" drizzle-nginx-module - Upstream module for talking to MySQL and Drizzle directly +" https://github.com/openresty/drizzle-nginx-module +syn keyword ngxDirectiveThirdParty contained drizzle_buffer_size +syn keyword ngxDirectiveThirdParty contained drizzle_connect_timeout +syn keyword ngxDirectiveThirdParty contained drizzle_dbname +syn keyword ngxDirectiveThirdParty contained drizzle_keepalive +syn keyword ngxDirectiveThirdParty contained drizzle_module_header +syn keyword ngxDirectiveThirdParty contained drizzle_pass +syn keyword ngxDirectiveThirdParty contained drizzle_query +syn keyword ngxDirectiveThirdParty contained drizzle_recv_cols_timeout +syn keyword ngxDirectiveThirdParty contained drizzle_recv_rows_timeout +syn keyword ngxDirectiveThirdParty contained drizzle_send_query_timeout +syn keyword ngxDirectiveThirdParty contained drizzle_server +syn keyword ngxDirectiveThirdParty contained drizzle_status + +" ngx_dynamic_upstream +" https://github.com/cubicdaiya/ngx_dynamic_upstream +syn keyword ngxDirectiveThirdParty contained dynamic_upstream + +" encrypt and decrypt nginx variable values +" https://github.com/openresty/encrypted-session-nginx-module +syn keyword ngxDirectiveThirdParty contained encrypted_session_expires +syn keyword ngxDirectiveThirdParty contained encrypted_session_iv +syn keyword ngxDirectiveThirdParty contained encrypted_session_key +syn keyword ngxDirectiveThirdParty contained set_decrypt_session +syn keyword ngxDirectiveThirdParty contained set_encrypt_session + +" serve content directly from MongoDB's GridFS +" https://github.com/mdirolf/nginx-gridfs +syn keyword ngxDirectiveThirdParty contained gridfs +syn keyword ngxDirectiveThirdParty contained mongo + +" Adds support for arithmetic operations to NGINX config +" https://github.com/arut/nginx-let-module +syn keyword ngxDirectiveThirdParty contained let + +" ngx_http_lua_module - Embed the power of Lua into Nginx HTTP Servers +" https://github.com/openresty/lua-nginx-module +syn keyword ngxDirectiveThirdParty contained access_by_lua +syn keyword ngxDirectiveThirdParty contained access_by_lua_block +syn keyword ngxDirectiveThirdParty contained access_by_lua_file +syn keyword ngxDirectiveThirdParty contained access_by_lua_no_postpone +syn keyword ngxDirectiveThirdParty contained balancer_by_lua_block +syn keyword ngxDirectiveThirdParty contained balancer_by_lua_file +syn keyword ngxDirectiveThirdParty contained body_filter_by_lua +syn keyword ngxDirectiveThirdParty contained body_filter_by_lua_block +syn keyword ngxDirectiveThirdParty contained body_filter_by_lua_file +syn keyword ngxDirectiveThirdParty contained content_by_lua +syn keyword ngxDirectiveThirdParty contained content_by_lua_block +syn keyword ngxDirectiveThirdParty contained content_by_lua_file +syn keyword ngxDirectiveThirdParty contained header_filter_by_lua +syn keyword ngxDirectiveThirdParty contained header_filter_by_lua_block +syn keyword ngxDirectiveThirdParty contained header_filter_by_lua_file +syn keyword ngxDirectiveThirdParty contained init_by_lua +syn keyword ngxDirectiveThirdParty contained init_by_lua_block +syn keyword ngxDirectiveThirdParty contained init_by_lua_file +syn keyword ngxDirectiveThirdParty contained init_worker_by_lua +syn keyword ngxDirectiveThirdParty contained init_worker_by_lua_block +syn keyword ngxDirectiveThirdParty contained init_worker_by_lua_file +syn keyword ngxDirectiveThirdParty contained log_by_lua +syn keyword ngxDirectiveThirdParty contained log_by_lua_block +syn keyword ngxDirectiveThirdParty contained log_by_lua_file +syn keyword ngxDirectiveThirdParty contained lua_capture_error_log +syn keyword ngxDirectiveThirdParty contained lua_check_client_abort +syn keyword ngxDirectiveThirdParty contained lua_code_cache +syn keyword ngxDirectiveThirdParty contained lua_fake_shm +syn keyword ngxDirectiveThirdParty contained lua_http10_buffering +syn keyword ngxDirectiveThirdParty contained lua_load_resty_core +syn keyword ngxDirectiveThirdParty contained lua_malloc_trim +syn keyword ngxDirectiveThirdParty contained lua_max_pending_timers +syn keyword ngxDirectiveThirdParty contained lua_max_running_timers +syn keyword ngxDirectiveThirdParty contained lua_need_request_body +syn keyword ngxDirectiveThirdParty contained lua_package_cpath +syn keyword ngxDirectiveThirdParty contained lua_package_path +syn keyword ngxDirectiveThirdParty contained lua_regex_cache_max_entries +syn keyword ngxDirectiveThirdParty contained lua_regex_match_limit +syn keyword ngxDirectiveThirdParty contained lua_sa_restart +syn keyword ngxDirectiveThirdParty contained lua_shared_dict +syn keyword ngxDirectiveThirdParty contained lua_socket_buffer_size +syn keyword ngxDirectiveThirdParty contained lua_socket_connect_timeout +syn keyword ngxDirectiveThirdParty contained lua_socket_keepalive_timeout +syn keyword ngxDirectiveThirdParty contained lua_socket_log_errors +syn keyword ngxDirectiveThirdParty contained lua_socket_pool_size +syn keyword ngxDirectiveThirdParty contained lua_socket_read_timeout +syn keyword ngxDirectiveThirdParty contained lua_socket_send_lowat +syn keyword ngxDirectiveThirdParty contained lua_socket_send_timeout +syn keyword ngxDirectiveThirdParty contained lua_ssl_ciphers +syn keyword ngxDirectiveThirdParty contained lua_ssl_crl +syn keyword ngxDirectiveThirdParty contained lua_ssl_protocols +syn keyword ngxDirectiveThirdParty contained lua_ssl_trusted_certificate +syn keyword ngxDirectiveThirdParty contained lua_ssl_verify_depth +syn keyword ngxDirectiveThirdParty contained lua_transform_underscores_in_response_headers +syn keyword ngxDirectiveThirdParty contained lua_use_default_type +syn keyword ngxDirectiveThirdParty contained rewrite_by_lua +syn keyword ngxDirectiveThirdParty contained rewrite_by_lua_block +syn keyword ngxDirectiveThirdParty contained rewrite_by_lua_file +syn keyword ngxDirectiveThirdParty contained rewrite_by_lua_no_postpone +syn keyword ngxDirectiveThirdParty contained set_by_lua +syn keyword ngxDirectiveThirdParty contained set_by_lua_block +syn keyword ngxDirectiveThirdParty contained set_by_lua_file +syn keyword ngxDirectiveThirdParty contained ssl_certificate_by_lua_block +syn keyword ngxDirectiveThirdParty contained ssl_certificate_by_lua_file +syn keyword ngxDirectiveThirdParty contained ssl_session_fetch_by_lua_block +syn keyword ngxDirectiveThirdParty contained ssl_session_fetch_by_lua_file +syn keyword ngxDirectiveThirdParty contained ssl_session_store_by_lua_block +syn keyword ngxDirectiveThirdParty contained ssl_session_store_by_lua_file + +" ngx_memc - An extended version of the standard memcached module +" https://github.com/openresty/memc-nginx-module +syn keyword ngxDirectiveThirdParty contained memc_buffer_size +syn keyword ngxDirectiveThirdParty contained memc_cmds_allowed +syn keyword ngxDirectiveThirdParty contained memc_connect_timeout +syn keyword ngxDirectiveThirdParty contained memc_flags_to_last_modified +syn keyword ngxDirectiveThirdParty contained memc_ignore_client_abort +syn keyword ngxDirectiveThirdParty contained memc_next_upstream +syn keyword ngxDirectiveThirdParty contained memc_pass +syn keyword ngxDirectiveThirdParty contained memc_read_timeout +syn keyword ngxDirectiveThirdParty contained memc_send_timeout +syn keyword ngxDirectiveThirdParty contained memc_upstream_fail_timeout +syn keyword ngxDirectiveThirdParty contained memc_upstream_max_fails + +" ModSecurity web application firewall +" https://github.com/SpiderLabs/ModSecurity/tree/master +syn keyword ngxDirectiveThirdParty contained ModSecurityConfig +syn keyword ngxDirectiveThirdParty contained ModSecurityEnabled +syn keyword ngxDirectiveThirdParty contained pool_context_hash_size + +" NAXSI is an open-source, high performance, low rules maintenance WAF for NGINX +" https://github.com/nbs-system/naxsi +syn keyword ngxDirectiveThirdParty contained BasicRule +syn keyword ngxDirectiveThirdParty contained CheckRule +syn keyword ngxDirectiveThirdParty contained DeniedUrl +syn keyword ngxDirectiveThirdParty contained LearningMode +syn keyword ngxDirectiveThirdParty contained LibInjectionSql +syn keyword ngxDirectiveThirdParty contained LibInjectionXss +syn keyword ngxDirectiveThirdParty contained MainRule +syn keyword ngxDirectiveThirdParty contained SecRulesDisabled +syn keyword ngxDirectiveThirdParty contained SecRulesEnabled +syn keyword ngxDirectiveThirdParty contained basic_rule +syn keyword ngxDirectiveThirdParty contained check_rule +syn keyword ngxDirectiveThirdParty contained denied_url +syn keyword ngxDirectiveThirdParty contained learning_mode +syn keyword ngxDirectiveThirdParty contained libinjection_sql +syn keyword ngxDirectiveThirdParty contained libinjection_xss +syn keyword ngxDirectiveThirdParty contained main_rule +syn keyword ngxDirectiveThirdParty contained rules_disabled +syn keyword ngxDirectiveThirdParty contained rules_enabled + +" Phusion Passenger +" https://www.phusionpassenger.com/library/config/nginx/reference/ +syn keyword ngxDirectiveThirdParty contained passenger_abort_on_startup_error +syn keyword ngxDirectiveThirdParty contained passenger_abort_websockets_on_process_shutdown +syn keyword ngxDirectiveThirdParty contained passenger_admin_panel_auth_type +syn keyword ngxDirectiveThirdParty contained passenger_admin_panel_password +syn keyword ngxDirectiveThirdParty contained passenger_admin_panel_url +syn keyword ngxDirectiveThirdParty contained passenger_admin_panel_username +syn keyword ngxDirectiveThirdParty contained passenger_anonymous_telemetry_proxy +syn keyword ngxDirectiveThirdParty contained passenger_app_env +syn keyword ngxDirectiveThirdParty contained passenger_app_file_descriptor_ulimit +syn keyword ngxDirectiveThirdParty contained passenger_app_group_name +syn keyword ngxDirectiveThirdParty contained passenger_app_log_file +syn keyword ngxDirectiveThirdParty contained passenger_app_rights +syn keyword ngxDirectiveThirdParty contained passenger_app_root +syn keyword ngxDirectiveThirdParty contained passenger_app_type +syn keyword ngxDirectiveThirdParty contained passenger_base_uri +syn keyword ngxDirectiveThirdParty contained passenger_buffer_response +syn keyword ngxDirectiveThirdParty contained passenger_buffer_size +syn keyword ngxDirectiveThirdParty contained passenger_buffers +syn keyword ngxDirectiveThirdParty contained passenger_busy_buffers_size +syn keyword ngxDirectiveThirdParty contained passenger_concurrency_model +syn keyword ngxDirectiveThirdParty contained passenger_core_file_descriptor_ulimit +syn keyword ngxDirectiveThirdParty contained passenger_ctl +syn keyword ngxDirectiveThirdParty contained passenger_data_buffer_dir +syn keyword ngxDirectiveThirdParty contained passenger_debugger +syn keyword ngxDirectiveThirdParty contained passenger_default_group +syn keyword ngxDirectiveThirdParty contained passenger_default_user +syn keyword ngxDirectiveThirdParty contained passenger_disable_anonymous_telemetry +syn keyword ngxDirectiveThirdParty contained passenger_disable_security_update_check +syn keyword ngxDirectiveThirdParty contained passenger_document_root +syn keyword ngxDirectiveThirdParty contained passenger_dump_config_manifest +syn keyword ngxDirectiveThirdParty contained passenger_enabled +syn keyword ngxDirectiveThirdParty contained passenger_env_var +syn keyword ngxDirectiveThirdParty contained passenger_file_descriptor_log_file +syn keyword ngxDirectiveThirdParty contained passenger_fly_with +syn keyword ngxDirectiveThirdParty contained passenger_force_max_concurrent_requests_per_process +syn keyword ngxDirectiveThirdParty contained passenger_friendly_error_pages +syn keyword ngxDirectiveThirdParty contained passenger_group +syn keyword ngxDirectiveThirdParty contained passenger_headers_hash_bucket_size +syn keyword ngxDirectiveThirdParty contained passenger_headers_hash_max_size +syn keyword ngxDirectiveThirdParty contained passenger_ignore_client_abort +syn keyword ngxDirectiveThirdParty contained passenger_ignore_headers +syn keyword ngxDirectiveThirdParty contained passenger_instance_registry_dir +syn keyword ngxDirectiveThirdParty contained passenger_intercept_errors +syn keyword ngxDirectiveThirdParty contained passenger_load_shell_envvars +syn keyword ngxDirectiveThirdParty contained passenger_log_file +syn keyword ngxDirectiveThirdParty contained passenger_log_level +syn keyword ngxDirectiveThirdParty contained passenger_max_instances +syn keyword ngxDirectiveThirdParty contained passenger_max_instances_per_app +syn keyword ngxDirectiveThirdParty contained passenger_max_pool_size +syn keyword ngxDirectiveThirdParty contained passenger_max_preloader_idle_time +syn keyword ngxDirectiveThirdParty contained passenger_max_request_queue_size +syn keyword ngxDirectiveThirdParty contained passenger_max_request_queue_time +syn keyword ngxDirectiveThirdParty contained passenger_max_request_time +syn keyword ngxDirectiveThirdParty contained passenger_max_requests +syn keyword ngxDirectiveThirdParty contained passenger_memory_limit +syn keyword ngxDirectiveThirdParty contained passenger_meteor_app_settings +syn keyword ngxDirectiveThirdParty contained passenger_min_instances +syn keyword ngxDirectiveThirdParty contained passenger_monitor_log_file +syn keyword ngxDirectiveThirdParty contained passenger_nodejs +syn keyword ngxDirectiveThirdParty contained passenger_pass_header +syn keyword ngxDirectiveThirdParty contained passenger_pool_idle_time +syn keyword ngxDirectiveThirdParty contained passenger_pre_start +syn keyword ngxDirectiveThirdParty contained passenger_python +syn keyword ngxDirectiveThirdParty contained passenger_read_timeout +syn keyword ngxDirectiveThirdParty contained passenger_request_queue_overflow_status_code +syn keyword ngxDirectiveThirdParty contained passenger_resist_deployment_errors +syn keyword ngxDirectiveThirdParty contained passenger_response_buffer_high_watermark +syn keyword ngxDirectiveThirdParty contained passenger_restart_dir +syn keyword ngxDirectiveThirdParty contained passenger_rolling_restarts +syn keyword ngxDirectiveThirdParty contained passenger_root +syn keyword ngxDirectiveThirdParty contained passenger_ruby +syn keyword ngxDirectiveThirdParty contained passenger_security_update_check_proxy +syn keyword ngxDirectiveThirdParty contained passenger_set_header +syn keyword ngxDirectiveThirdParty contained passenger_show_version_in_header +syn keyword ngxDirectiveThirdParty contained passenger_socket_backlog +syn keyword ngxDirectiveThirdParty contained passenger_spawn_method +syn keyword ngxDirectiveThirdParty contained passenger_start_timeout +syn keyword ngxDirectiveThirdParty contained passenger_startup_file +syn keyword ngxDirectiveThirdParty contained passenger_stat_throttle_rate +syn keyword ngxDirectiveThirdParty contained passenger_sticky_sessions +syn keyword ngxDirectiveThirdParty contained passenger_sticky_sessions_cookie_name +syn keyword ngxDirectiveThirdParty contained passenger_thread_count +syn keyword ngxDirectiveThirdParty contained passenger_turbocaching +syn keyword ngxDirectiveThirdParty contained passenger_user +syn keyword ngxDirectiveThirdParty contained passenger_user_switching +syn keyword ngxDirectiveThirdParty contained passenger_vary_turbocache_by_cookie +syn keyword ngxDirectiveThirdPartyDeprecated contained passenger_analytics_log_group +syn keyword ngxDirectiveThirdPartyDeprecated contained passenger_analytics_log_user +syn keyword ngxDirectiveThirdPartyDeprecated contained passenger_debug_log_file +syn keyword ngxDirectiveThirdPartyDeprecated contained passenger_use_global_queue +syn keyword ngxDirectiveThirdPartyDeprecated contained rack_env +syn keyword ngxDirectiveThirdPartyDeprecated contained rails_app_spawner_idle_time +syn keyword ngxDirectiveThirdPartyDeprecated contained rails_env +syn keyword ngxDirectiveThirdPartyDeprecated contained rails_framework_spawner_idle_time +syn keyword ngxDirectiveThirdPartyDeprecated contained rails_spawn_method +syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_filter +syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_gateway_address +syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_gateway_cert +syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_gateway_port +syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_key +syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_proxy_address +syn keyword ngxDirectiveThirdPartyDeprecated contained union_station_support + +" ngx_postgres is an upstream module that allows nginx to communicate directly with PostgreSQL database +" https://github.com/FRiCKLE/ngx_postgres +syn keyword ngxDirectiveThirdParty contained postgres_connect_timeout +syn keyword ngxDirectiveThirdParty contained postgres_escape +syn keyword ngxDirectiveThirdParty contained postgres_keepalive +syn keyword ngxDirectiveThirdParty contained postgres_output +syn keyword ngxDirectiveThirdParty contained postgres_pass +syn keyword ngxDirectiveThirdParty contained postgres_query +syn keyword ngxDirectiveThirdParty contained postgres_result_timeout +syn keyword ngxDirectiveThirdParty contained postgres_rewrite +syn keyword ngxDirectiveThirdParty contained postgres_server +syn keyword ngxDirectiveThirdParty contained postgres_set + +" ngx_rds_csv - Nginx output filter module to convert Resty-DBD-Streams (RDS) to Comma-Separated Values (CSV) +" https://github.com/openresty/rds-csv-nginx-module +syn keyword ngxDirectiveThirdParty contained rds_csv +syn keyword ngxDirectiveThirdParty contained rds_csv_buffer_size +syn keyword ngxDirectiveThirdParty contained rds_csv_content_type +syn keyword ngxDirectiveThirdParty contained rds_csv_field_name_header +syn keyword ngxDirectiveThirdParty contained rds_csv_field_separator +syn keyword ngxDirectiveThirdParty contained rds_csv_row_terminator + +" ngx_rds_json - an output filter that formats Resty DBD Streams generated by ngx_drizzle and others to JSON +" https://github.com/openresty/rds-json-nginx-module +syn keyword ngxDirectiveThirdParty contained rds_json +syn keyword ngxDirectiveThirdParty contained rds_json_buffer_size +syn keyword ngxDirectiveThirdParty contained rds_json_content_type +syn keyword ngxDirectiveThirdParty contained rds_json_errcode_key +syn keyword ngxDirectiveThirdParty contained rds_json_errstr_key +syn keyword ngxDirectiveThirdParty contained rds_json_format +syn keyword ngxDirectiveThirdParty contained rds_json_ret +syn keyword ngxDirectiveThirdParty contained rds_json_root +syn keyword ngxDirectiveThirdParty contained rds_json_success_property +syn keyword ngxDirectiveThirdParty contained rds_json_user_property + +" ngx_redis2 - Nginx upstream module for the Redis 2.0 protocol +" https://github.com/openresty/redis2-nginx-module +syn keyword ngxDirectiveThirdParty contained redis2_bind +syn keyword ngxDirectiveThirdParty contained redis2_buffer_size +syn keyword ngxDirectiveThirdParty contained redis2_connect_timeout +syn keyword ngxDirectiveThirdParty contained redis2_literal_raw_query +syn keyword ngxDirectiveThirdParty contained redis2_next_upstream +syn keyword ngxDirectiveThirdParty contained redis2_pass +syn keyword ngxDirectiveThirdParty contained redis2_query +syn keyword ngxDirectiveThirdParty contained redis2_raw_queries +syn keyword ngxDirectiveThirdParty contained redis2_raw_query +syn keyword ngxDirectiveThirdParty contained redis2_read_timeout +syn keyword ngxDirectiveThirdParty contained redis2_send_timeout + +" NGINX-based Media Streaming Server +" https://github.com/arut/nginx-rtmp-module +syn keyword ngxDirectiveThirdParty contained ack_window +syn keyword ngxDirectiveThirdParty contained application +syn keyword ngxDirectiveThirdParty contained buffer +syn keyword ngxDirectiveThirdParty contained buflen +syn keyword ngxDirectiveThirdParty contained busy +syn keyword ngxDirectiveThirdParty contained chunk_size +syn keyword ngxDirectiveThirdParty contained dash +syn keyword ngxDirectiveThirdParty contained dash_cleanup +syn keyword ngxDirectiveThirdParty contained dash_fragment +syn keyword ngxDirectiveThirdParty contained dash_nested +syn keyword ngxDirectiveThirdParty contained dash_path +syn keyword ngxDirectiveThirdParty contained dash_playlist_length +syn keyword ngxDirectiveThirdParty contained drop_idle_publisher +syn keyword ngxDirectiveThirdParty contained exec +syn keyword ngxDirectiveThirdParty contained exec_block +syn keyword ngxDirectiveThirdParty contained exec_kill_signal +syn keyword ngxDirectiveThirdParty contained exec_options +syn keyword ngxDirectiveThirdParty contained exec_play +syn keyword ngxDirectiveThirdParty contained exec_play_done +syn keyword ngxDirectiveThirdParty contained exec_publish +syn keyword ngxDirectiveThirdParty contained exec_publish_done +syn keyword ngxDirectiveThirdParty contained exec_pull +syn keyword ngxDirectiveThirdParty contained exec_push +syn keyword ngxDirectiveThirdParty contained exec_record_done +syn keyword ngxDirectiveThirdParty contained exec_static +syn keyword ngxDirectiveThirdParty contained hls_audio_buffer_size +syn keyword ngxDirectiveThirdParty contained hls_base_url +syn keyword ngxDirectiveThirdParty contained hls_cleanup +syn keyword ngxDirectiveThirdParty contained hls_continuous +syn keyword ngxDirectiveThirdParty contained hls_fragment_naming +syn keyword ngxDirectiveThirdParty contained hls_fragment_naming_granularity +syn keyword ngxDirectiveThirdParty contained hls_fragment_slicing +syn keyword ngxDirectiveThirdParty contained hls_fragments_per_key +syn keyword ngxDirectiveThirdParty contained hls_key_path +syn keyword ngxDirectiveThirdParty contained hls_key_url +syn keyword ngxDirectiveThirdParty contained hls_keys +syn keyword ngxDirectiveThirdParty contained hls_max_audio_delay +syn keyword ngxDirectiveThirdParty contained hls_max_fragment +syn keyword ngxDirectiveThirdParty contained hls_muxdelay +syn keyword ngxDirectiveThirdParty contained hls_nested +syn keyword ngxDirectiveThirdParty contained hls_path +syn keyword ngxDirectiveThirdParty contained hls_playlist_length +syn keyword ngxDirectiveThirdParty contained hls_sync +syn keyword ngxDirectiveThirdParty contained hls_type +syn keyword ngxDirectiveThirdParty contained hls_variant +syn keyword ngxDirectiveThirdParty contained idle_streams +syn keyword ngxDirectiveThirdParty contained interleave +syn keyword ngxDirectiveThirdParty contained live +syn keyword ngxDirectiveThirdParty contained max_connections +syn keyword ngxDirectiveThirdParty contained max_message +syn keyword ngxDirectiveThirdParty contained max_streams +syn keyword ngxDirectiveThirdParty contained meta +syn keyword ngxDirectiveThirdParty contained netcall_buffer +syn keyword ngxDirectiveThirdParty contained netcall_timeout +syn keyword ngxDirectiveThirdParty contained notify_method +syn keyword ngxDirectiveThirdParty contained notify_relay_redirect +syn keyword ngxDirectiveThirdParty contained notify_update_strict +syn keyword ngxDirectiveThirdParty contained notify_update_timeout +syn keyword ngxDirectiveThirdParty contained on_connect +syn keyword ngxDirectiveThirdParty contained on_disconnect +syn keyword ngxDirectiveThirdParty contained on_done +syn keyword ngxDirectiveThirdParty contained on_play +syn keyword ngxDirectiveThirdParty contained on_play_done +syn keyword ngxDirectiveThirdParty contained on_publish +syn keyword ngxDirectiveThirdParty contained on_publish_done +syn keyword ngxDirectiveThirdParty contained on_record_done +syn keyword ngxDirectiveThirdParty contained on_update +syn keyword ngxDirectiveThirdParty contained out_cork +syn keyword ngxDirectiveThirdParty contained out_queue +syn keyword ngxDirectiveThirdParty contained ping +syn keyword ngxDirectiveThirdParty contained ping_timeout +syn keyword ngxDirectiveThirdParty contained play +syn keyword ngxDirectiveThirdParty contained play_local_path +syn keyword ngxDirectiveThirdParty contained play_restart +syn keyword ngxDirectiveThirdParty contained play_temp_path +syn keyword ngxDirectiveThirdParty contained play_time_fix +syn keyword ngxDirectiveThirdParty contained publish_notify +syn keyword ngxDirectiveThirdParty contained publish_time_fix +syn keyword ngxDirectiveThirdParty contained pull +syn keyword ngxDirectiveThirdParty contained pull_reconnect +syn keyword ngxDirectiveThirdParty contained push +syn keyword ngxDirectiveThirdParty contained push_reconnect +syn keyword ngxDirectiveThirdParty contained record +syn keyword ngxDirectiveThirdParty contained record_append +syn keyword ngxDirectiveThirdParty contained record_interval +syn keyword ngxDirectiveThirdParty contained record_lock +syn keyword ngxDirectiveThirdParty contained record_max_frames +syn keyword ngxDirectiveThirdParty contained record_max_size +syn keyword ngxDirectiveThirdParty contained record_notify +syn keyword ngxDirectiveThirdParty contained record_path +syn keyword ngxDirectiveThirdParty contained record_suffix +syn keyword ngxDirectiveThirdParty contained record_unique +syn keyword ngxDirectiveThirdParty contained recorder +syn keyword ngxDirectiveThirdParty contained relay_buffer +syn keyword ngxDirectiveThirdParty contained respawn +syn keyword ngxDirectiveThirdParty contained respawn_timeout +syn keyword ngxDirectiveThirdParty contained rtmp +syn keyword ngxDirectiveThirdParty contained rtmp_auto_push +syn keyword ngxDirectiveThirdParty contained rtmp_auto_push_reconnect +syn keyword ngxDirectiveThirdParty contained rtmp_control +syn keyword ngxDirectiveThirdParty contained rtmp_socket_dir +syn keyword ngxDirectiveThirdParty contained rtmp_stat +syn keyword ngxDirectiveThirdParty contained rtmp_stat_stylesheet +syn keyword ngxDirectiveThirdParty contained session_relay +syn keyword ngxDirectiveThirdParty contained so_keepalive +syn keyword ngxDirectiveThirdParty contained stream_buckets +syn keyword ngxDirectiveThirdParty contained sync +syn keyword ngxDirectiveThirdParty contained wait_key +syn keyword ngxDirectiveThirdParty contained wait_video + +" ngx_set_misc - Various set_xxx directives added to nginx's rewrite module (md5/sha1, sql/json quoting, and many more) +" https://github.com/openresty/set-misc-nginx-module +syn keyword ngxDirectiveThirdParty contained set_base32_alphabet +syn keyword ngxDirectiveThirdParty contained set_base32_padding +syn keyword ngxDirectiveThirdParty contained set_decode_base32 +syn keyword ngxDirectiveThirdParty contained set_decode_base64 +syn keyword ngxDirectiveThirdParty contained set_decode_hex +syn keyword ngxDirectiveThirdParty contained set_encode_base32 +syn keyword ngxDirectiveThirdParty contained set_encode_base64 +syn keyword ngxDirectiveThirdParty contained set_encode_hex +syn keyword ngxDirectiveThirdParty contained set_escape_uri +syn keyword ngxDirectiveThirdParty contained set_formatted_gmt_time +syn keyword ngxDirectiveThirdParty contained set_formatted_local_time +syn keyword ngxDirectiveThirdParty contained set_hashed_upstream +syn keyword ngxDirectiveThirdParty contained set_hmac_sha1 +syn keyword ngxDirectiveThirdParty contained set_if_empty +syn keyword ngxDirectiveThirdParty contained set_local_today +syn keyword ngxDirectiveThirdParty contained set_misc_base32_padding +syn keyword ngxDirectiveThirdParty contained set_quote_json_str +syn keyword ngxDirectiveThirdParty contained set_quote_pgsql_str +syn keyword ngxDirectiveThirdParty contained set_quote_sql_str +syn keyword ngxDirectiveThirdParty contained set_random +syn keyword ngxDirectiveThirdParty contained set_rotate +syn keyword ngxDirectiveThirdParty contained set_secure_random_alphanum +syn keyword ngxDirectiveThirdParty contained set_secure_random_lcalpha +syn keyword ngxDirectiveThirdParty contained set_unescape_uri + +" nginx-sflow-module +" https://github.com/sflow/nginx-sflow-module +syn keyword ngxDirectiveThirdParty contained sflow + +" Shibboleth auth request module for Nginx +" https://github.com/nginx-shib/nginx-http-shibboleth +syn keyword ngxDirectiveThirdParty contained shib_request +syn keyword ngxDirectiveThirdParty contained shib_request_set +syn keyword ngxDirectiveThirdParty contained shib_request_use_headers + +" nginx module which adds ability to cache static files +" https://github.com/FRiCKLE/ngx_slowfs_cache +syn keyword ngxDirectiveThirdParty contained slowfs_big_file_size +syn keyword ngxDirectiveThirdParty contained slowfs_cache +syn keyword ngxDirectiveThirdParty contained slowfs_cache_key +syn keyword ngxDirectiveThirdParty contained slowfs_cache_min_uses +syn keyword ngxDirectiveThirdParty contained slowfs_cache_path +syn keyword ngxDirectiveThirdParty contained slowfs_cache_purge +syn keyword ngxDirectiveThirdParty contained slowfs_cache_valid +syn keyword ngxDirectiveThirdParty contained slowfs_temp_path + +" Dynamic Image Transformation Module For nginx +" https://github.com/cubicdaiya/ngx_small_light +syn keyword ngxDirectiveThirdParty contained small_light +syn keyword ngxDirectiveThirdParty contained small_light_buffer +syn keyword ngxDirectiveThirdParty contained small_light_getparam_mode +syn keyword ngxDirectiveThirdParty contained small_light_imlib2_temp_dir +syn keyword ngxDirectiveThirdParty contained small_light_material_dir +syn keyword ngxDirectiveThirdParty contained small_light_pattern_define +syn keyword ngxDirectiveThirdParty contained small_light_radius_max +syn keyword ngxDirectiveThirdParty contained small_light_sigma_max + +" ngx_srcache - Transparent subrequest-based caching layout for arbitrary nginx locations +" https://github.com/openresty/srcache-nginx-module +syn keyword ngxDirectiveThirdParty contained srcache_buffer +syn keyword ngxDirectiveThirdParty contained srcache_default_expire +syn keyword ngxDirectiveThirdParty contained srcache_fetch +syn keyword ngxDirectiveThirdParty contained srcache_fetch_skip +syn keyword ngxDirectiveThirdParty contained srcache_header_buffer_size +syn keyword ngxDirectiveThirdParty contained srcache_ignore_content_encoding +syn keyword ngxDirectiveThirdParty contained srcache_max_expire +syn keyword ngxDirectiveThirdParty contained srcache_methods +syn keyword ngxDirectiveThirdParty contained srcache_request_cache_control +syn keyword ngxDirectiveThirdParty contained srcache_response_cache_control +syn keyword ngxDirectiveThirdParty contained srcache_store +syn keyword ngxDirectiveThirdParty contained srcache_store_hide_header +syn keyword ngxDirectiveThirdParty contained srcache_store_max_size +syn keyword ngxDirectiveThirdParty contained srcache_store_no_cache +syn keyword ngxDirectiveThirdParty contained srcache_store_no_store +syn keyword ngxDirectiveThirdParty contained srcache_store_pass_header +syn keyword ngxDirectiveThirdParty contained srcache_store_private +syn keyword ngxDirectiveThirdParty contained srcache_store_ranges +syn keyword ngxDirectiveThirdParty contained srcache_store_skip +syn keyword ngxDirectiveThirdParty contained srcache_store_statuses + +" NGINX-based VOD Packager +" https://github.com/kaltura/nginx-vod-module +syn keyword ngxDirectiveThirdParty contained vod +syn keyword ngxDirectiveThirdParty contained vod_align_segments_to_key_frames +syn keyword ngxDirectiveThirdParty contained vod_apply_dynamic_mapping +syn keyword ngxDirectiveThirdParty contained vod_base_url +syn keyword ngxDirectiveThirdParty contained vod_bootstrap_segment_durations +syn keyword ngxDirectiveThirdParty contained vod_cache_buffer_size +syn keyword ngxDirectiveThirdParty contained vod_clip_from_param_name +syn keyword ngxDirectiveThirdParty contained vod_clip_to_param_name +syn keyword ngxDirectiveThirdParty contained vod_drm_clear_lead_segment_count +syn keyword ngxDirectiveThirdParty contained vod_drm_enabled +syn keyword ngxDirectiveThirdParty contained vod_drm_info_cache +syn keyword ngxDirectiveThirdParty contained vod_drm_max_info_length +syn keyword ngxDirectiveThirdParty contained vod_drm_request_uri +syn keyword ngxDirectiveThirdParty contained vod_drm_single_key +syn keyword ngxDirectiveThirdParty contained vod_drm_upstream_location +syn keyword ngxDirectiveThirdParty contained vod_dynamic_clip_map_uri +syn keyword ngxDirectiveThirdParty contained vod_dynamic_mapping_cache +syn keyword ngxDirectiveThirdParty contained vod_encryption_iv_seed +syn keyword ngxDirectiveThirdParty contained vod_expires +syn keyword ngxDirectiveThirdParty contained vod_expires_live +syn keyword ngxDirectiveThirdParty contained vod_expires_live_time_dependent +syn keyword ngxDirectiveThirdParty contained vod_fallback_upstream_location +syn keyword ngxDirectiveThirdParty contained vod_force_continuous_timestamps +syn keyword ngxDirectiveThirdParty contained vod_force_playlist_type_vod +syn keyword ngxDirectiveThirdParty contained vod_force_sequence_index +syn keyword ngxDirectiveThirdParty contained vod_gop_look_ahead +syn keyword ngxDirectiveThirdParty contained vod_gop_look_behind +syn keyword ngxDirectiveThirdParty contained vod_ignore_edit_list +syn keyword ngxDirectiveThirdParty contained vod_initial_read_size +syn keyword ngxDirectiveThirdParty contained vod_lang_param_name +syn keyword ngxDirectiveThirdParty contained vod_last_modified +syn keyword ngxDirectiveThirdParty contained vod_last_modified_types +syn keyword ngxDirectiveThirdParty contained vod_live_mapping_cache +syn keyword ngxDirectiveThirdParty contained vod_live_response_cache +syn keyword ngxDirectiveThirdParty contained vod_live_window_duration +syn keyword ngxDirectiveThirdParty contained vod_manifest_duration_policy +syn keyword ngxDirectiveThirdParty contained vod_manifest_segment_durations_mode +syn keyword ngxDirectiveThirdParty contained vod_mapping_cache +syn keyword ngxDirectiveThirdParty contained vod_max_frames_size +syn keyword ngxDirectiveThirdParty contained vod_max_mapping_response_size +syn keyword ngxDirectiveThirdParty contained vod_max_metadata_size +syn keyword ngxDirectiveThirdParty contained vod_max_upstream_headers_size +syn keyword ngxDirectiveThirdParty contained vod_media_set_map_uri +syn keyword ngxDirectiveThirdParty contained vod_media_set_override_json +syn keyword ngxDirectiveThirdParty contained vod_metadata_cache +syn keyword ngxDirectiveThirdParty contained vod_min_single_nalu_per_frame_segment +syn keyword ngxDirectiveThirdParty contained vod_mode +syn keyword ngxDirectiveThirdParty contained vod_multi_uri_suffix +syn keyword ngxDirectiveThirdParty contained vod_notification_uri +syn keyword ngxDirectiveThirdParty contained vod_open_file_thread_pool +syn keyword ngxDirectiveThirdParty contained vod_output_buffer_pool +syn keyword ngxDirectiveThirdParty contained vod_parse_hdlr_name +syn keyword ngxDirectiveThirdParty contained vod_path_response_postfix +syn keyword ngxDirectiveThirdParty contained vod_path_response_prefix +syn keyword ngxDirectiveThirdParty contained vod_performance_counters +syn keyword ngxDirectiveThirdParty contained vod_proxy_header_name +syn keyword ngxDirectiveThirdParty contained vod_proxy_header_value +syn keyword ngxDirectiveThirdParty contained vod_redirect_segments_url +syn keyword ngxDirectiveThirdParty contained vod_remote_upstream_location +syn keyword ngxDirectiveThirdParty contained vod_response_cache +syn keyword ngxDirectiveThirdParty contained vod_secret_key +syn keyword ngxDirectiveThirdParty contained vod_segment_count_policy +syn keyword ngxDirectiveThirdParty contained vod_segment_duration +syn keyword ngxDirectiveThirdParty contained vod_segments_base_url +syn keyword ngxDirectiveThirdParty contained vod_source_clip_map_uri +syn keyword ngxDirectiveThirdParty contained vod_speed_param_name +syn keyword ngxDirectiveThirdParty contained vod_status +syn keyword ngxDirectiveThirdParty contained vod_time_shift_param_name +syn keyword ngxDirectiveThirdParty contained vod_tracks_param_name +syn keyword ngxDirectiveThirdParty contained vod_upstream_extra_args +syn keyword ngxDirectiveThirdParty contained vod_upstream_location + +" Nginx virtual host traffic status module +" https://github.com/vozlt/nginx-module-vts +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_average_method +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_bypass_limit +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_bypass_stats +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_display +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_display_format +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_display_jsonp +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_display_sum_key +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_dump +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_filter +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_filter_by_host +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_filter_by_set_key +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_filter_check_duplicate +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_filter_max_node +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_histogram_buckets +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_limit +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_limit_check_duplicate +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_limit_traffic +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_limit_traffic_by_set_key +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_set_by_filter +syn keyword ngxDirectiveThirdParty contained vhost_traffic_status_zone + +" xss-nginx-module - Native cross-site scripting support in nginx +" https://github.com/openresty/xss-nginx-module +syn keyword ngxDirectiveThirdParty contained xss_callback_arg +syn keyword ngxDirectiveThirdParty contained xss_check_status +syn keyword ngxDirectiveThirdParty contained xss_get +syn keyword ngxDirectiveThirdParty contained xss_input_types +syn keyword ngxDirectiveThirdParty contained xss_output_type +syn keyword ngxDirectiveThirdParty contained xss_override_status + +" Add support for array-typed variables to nginx config files +" https://github.com/openresty/array-var-nginx-module +syn keyword ngxDirectiveThirdParty contained array_join +syn keyword ngxDirectiveThirdParty contained array_map +syn keyword ngxDirectiveThirdParty contained array_map_op +syn keyword ngxDirectiveThirdParty contained array_split + +" NGINX module for Brotli compression +" https://github.com/eustas/ngx_brotli +syn keyword ngxDirectiveThirdParty contained brotli +syn keyword ngxDirectiveThirdParty contained brotli_buffers +syn keyword ngxDirectiveThirdParty contained brotli_comp_level +syn keyword ngxDirectiveThirdParty contained brotli_min_length +syn keyword ngxDirectiveThirdParty contained brotli_static +syn keyword ngxDirectiveThirdParty contained brotli_types +syn keyword ngxDirectiveThirdParty contained brotli_window + +" form-input-nginx-module +" https://github.com/calio/form-input-nginx-module +syn keyword ngxDirectiveThirdParty contained set_form_input +syn keyword ngxDirectiveThirdParty contained set_form_input_multi + +" character conversion nginx module using libiconv +" https://github.com/calio/iconv-nginx-module +syn keyword ngxDirectiveThirdParty contained iconv_buffer_size +syn keyword ngxDirectiveThirdParty contained iconv_filter +syn keyword ngxDirectiveThirdParty contained set_iconv + +" 3rd party modules list taken from +" https://www.nginx.com/resources/wiki/modules/ +" --------------------------------------------- + +" Nginx Module for Authenticating Akamai G2O requests +" https://github.com/kaltura/nginx_mod_akamai_g2o +syn keyword ngxDirectiveThirdParty contained g2o +syn keyword ngxDirectiveThirdParty contained g2o_data_header +syn keyword ngxDirectiveThirdParty contained g2o_hash_function +syn keyword ngxDirectiveThirdParty contained g2o_key +syn keyword ngxDirectiveThirdParty contained g2o_log_level +syn keyword ngxDirectiveThirdParty contained g2o_nonce +syn keyword ngxDirectiveThirdParty contained g2o_sign_header +syn keyword ngxDirectiveThirdParty contained g2o_time_window +syn keyword ngxDirectiveThirdParty contained g2o_version + +" nginx_lua_module +" https://github.com/alacner/nginx_lua_module +syn keyword ngxDirectiveThirdParty contained lua_file + +" Nginx Audio Track for HTTP Live Streaming +" https://github.com/flavioribeiro/nginx-audio-track-for-hls-module +syn keyword ngxDirectiveThirdParty contained ngx_hls_audio_track +syn keyword ngxDirectiveThirdParty contained ngx_hls_audio_track_output_format +syn keyword ngxDirectiveThirdParty contained ngx_hls_audio_track_output_header +syn keyword ngxDirectiveThirdParty contained ngx_hls_audio_track_rootpath + +" A Nginx module to dump backtrace when a worker process exits abnormally +" https://github.com/alibaba/nginx-backtrace +syn keyword ngxDirectiveThirdParty contained backtrace_log +syn keyword ngxDirectiveThirdParty contained backtrace_max_stack_size + +" circle_gif module +" https://github.com/evanmiller/nginx_circle_gif +syn keyword ngxDirectiveThirdParty contained circle_gif +syn keyword ngxDirectiveThirdParty contained circle_gif_max_radius +syn keyword ngxDirectiveThirdParty contained circle_gif_min_radius +syn keyword ngxDirectiveThirdParty contained circle_gif_step_radius + +" Upstream Consistent Hash +" https://github.com/replay/ngx_http_consistent_hash +syn keyword ngxDirectiveThirdParty contained consistent_hash + +" Nginx module for etags on dynamic content +" https://github.com/kali/nginx-dynamic-etags +syn keyword ngxDirectiveThirdParty contained dynamic_etags + +" Enhanced Nginx Memcached Module +" https://github.com/bpaquet/ngx_http_enhanced_memcached_module +syn keyword ngxDirectiveThirdParty contained enhanced_memcached_allow_delete +syn keyword ngxDirectiveThirdParty contained enhanced_memcached_allow_put +syn keyword ngxDirectiveThirdParty contained enhanced_memcached_bind +syn keyword ngxDirectiveThirdParty contained enhanced_memcached_buffer_size +syn keyword ngxDirectiveThirdParty contained enhanced_memcached_connect_timeout +syn keyword ngxDirectiveThirdParty contained enhanced_memcached_flush +syn keyword ngxDirectiveThirdParty contained enhanced_memcached_flush_namespace +syn keyword ngxDirectiveThirdParty contained enhanced_memcached_hash_keys_with_md5 +syn keyword ngxDirectiveThirdParty contained enhanced_memcached_pass +syn keyword ngxDirectiveThirdParty contained enhanced_memcached_read_timeout +syn keyword ngxDirectiveThirdParty contained enhanced_memcached_send_timeout +syn keyword ngxDirectiveThirdParty contained enhanced_memcached_stats + +" nginx max connections queue +" https://github.com/ezmobius/nginx-ey-balancer +syn keyword ngxDirectiveThirdParty contained max_connections_max_queue_length +syn keyword ngxDirectiveThirdParty contained max_connections_queue_timeout + +" Nginx module for POST authentication and authorization +" https://github.com/veruu/ngx_form_auth +syn keyword ngxDirectiveThirdParty contained form_auth +syn keyword ngxDirectiveThirdParty contained form_auth_login +syn keyword ngxDirectiveThirdParty contained form_auth_pam_service +syn keyword ngxDirectiveThirdParty contained form_auth_password +syn keyword ngxDirectiveThirdParty contained form_auth_remote_user + +" ngx_http_accounting_module +" https://github.com/Lax/ngx_http_accounting_module +syn keyword ngxDirectiveThirdParty contained accounting +syn keyword ngxDirectiveThirdParty contained accounting_id +syn keyword ngxDirectiveThirdParty contained accounting_interval +syn keyword ngxDirectiveThirdParty contained accounting_log +syn keyword ngxDirectiveThirdParty contained accounting_perturb + +" concatenating files in a given context: CSS and JS files usually +" https://github.com/alibaba/nginx-http-concat +syn keyword ngxDirectiveThirdParty contained concat +syn keyword ngxDirectiveThirdParty contained concat_delimiter +syn keyword ngxDirectiveThirdParty contained concat_ignore_file_error +syn keyword ngxDirectiveThirdParty contained concat_max_files +syn keyword ngxDirectiveThirdParty contained concat_types +syn keyword ngxDirectiveThirdParty contained concat_unique + +" update upstreams' config by restful interface +" https://github.com/yzprofile/ngx_http_dyups_module +syn keyword ngxDirectiveThirdParty contained dyups_interface +syn keyword ngxDirectiveThirdParty contained dyups_read_msg_log +syn keyword ngxDirectiveThirdParty contained dyups_read_msg_timeout +syn keyword ngxDirectiveThirdParty contained dyups_shm_zone_size +syn keyword ngxDirectiveThirdParty contained dyups_trylock +syn keyword ngxDirectiveThirdParty contained dyups_upstream_conf + +" add given content to the end of the response according to the condition specified +" https://github.com/flygoast/ngx_http_footer_if_filter +syn keyword ngxDirectiveThirdParty contained footer_if + +" NGINX HTTP Internal Redirect Module +" https://github.com/flygoast/ngx_http_internal_redirect +syn keyword ngxDirectiveThirdParty contained internal_redirect_if +syn keyword ngxDirectiveThirdParty contained internal_redirect_if_no_postpone + +" nginx-ip-blocker +" https://github.com/tmthrgd/nginx-ip-blocker +syn keyword ngxDirectiveThirdParty contained ip_blocker + +" IP2Location Nginx +" https://github.com/chrislim2888/ip2location-nginx +syn keyword ngxDirectiveThirdParty contained ip2location_database + +" Limit upload rate +" https://github.com/cfsego/limit_upload_rate +syn keyword ngxDirectiveThirdParty contained limit_upload_rate +syn keyword ngxDirectiveThirdParty contained limit_upload_rate_after +syn keyword ngxDirectiveThirdParty contained limit_upload_rate_log_level + +" limit the number of connections to upstream +" https://github.com/cfsego/nginx-limit-upstream +syn keyword ngxDirectiveThirdParty contained limit_upstream_conn +syn keyword ngxDirectiveThirdParty contained limit_upstream_log_level +syn keyword ngxDirectiveThirdParty contained limit_upstream_zone + +" conditional accesslog for nginx +" https://github.com/cfsego/ngx_log_if +syn keyword ngxDirectiveThirdParty contained access_log_bypass_if + +" log messages over ZeroMQ +" https://github.com/alticelabs/nginx-log-zmq +syn keyword ngxDirectiveThirdParty contained log_zmq_endpoint +syn keyword ngxDirectiveThirdParty contained log_zmq_format +syn keyword ngxDirectiveThirdParty contained log_zmq_off +syn keyword ngxDirectiveThirdParty contained log_zmq_server + +" simple module to uppercase/lowercase strings in the nginx config +" https://github.com/replay/ngx_http_lower_upper_case +syn keyword ngxDirectiveThirdParty contained lower +syn keyword ngxDirectiveThirdParty contained upper + +" content filter for nginx, which returns the md5 hash of the content otherwise returned +" https://github.com/kainswor/nginx_md5_filter +syn keyword ngxDirectiveThirdParty contained md5_filter + +" Non-blocking upstream module for Nginx to connect to MongoDB +" https://github.com/simpl/ngx_mongo +syn keyword ngxDirectiveThirdParty contained mongo_auth +syn keyword ngxDirectiveThirdParty contained mongo_bind +syn keyword ngxDirectiveThirdParty contained mongo_buffer_size +syn keyword ngxDirectiveThirdParty contained mongo_buffering +syn keyword ngxDirectiveThirdParty contained mongo_buffers +syn keyword ngxDirectiveThirdParty contained mongo_busy_buffers_size +syn keyword ngxDirectiveThirdParty contained mongo_connect_timeout +syn keyword ngxDirectiveThirdParty contained mongo_json +syn keyword ngxDirectiveThirdParty contained mongo_next_upstream +syn keyword ngxDirectiveThirdParty contained mongo_pass +syn keyword ngxDirectiveThirdParty contained mongo_query +syn keyword ngxDirectiveThirdParty contained mongo_read_timeout +syn keyword ngxDirectiveThirdParty contained mongo_send_timeout + +" Nginx OCSP processing module designed for response caching +" https://github.com/kyprizel/nginx_ocsp_proxy-module +syn keyword ngxDirectiveThirdParty contained ocsp_cache_timeout +syn keyword ngxDirectiveThirdParty contained ocsp_proxy + +" Nginx OpenSSL version check at startup +" https://github.com/apcera/nginx-openssl-version +syn keyword ngxDirectiveThirdParty contained openssl_builddate_minimum +syn keyword ngxDirectiveThirdParty contained openssl_version_minimum + +" Automatic PageSpeed optimization module for Nginx +" https://github.com/pagespeed/ngx_pagespeed +syn keyword ngxDirectiveThirdParty contained pagespeed + +" PECL Memcache standard hashing compatible loadbalancer for Nginx +" https://github.com/replay/ngx_http_php_memcache_standard_balancer +syn keyword ngxDirectiveThirdParty contained hash_key + +" nginx module to parse php sessions +" https://github.com/replay/ngx_http_php_session +syn keyword ngxDirectiveThirdParty contained php_session_parse +syn keyword ngxDirectiveThirdParty contained php_session_strip_formatting + +" Nginx HTTP rDNS module +" https://github.com/flant/nginx-http-rdns +syn keyword ngxDirectiveThirdParty contained rdns +syn keyword ngxDirectiveThirdParty contained rdns_allow +syn keyword ngxDirectiveThirdParty contained rdns_deny + +" Streaming regular expression replacement in response bodies +" https://github.com/openresty/replace-filter-nginx-module +syn keyword ngxDirectiveThirdParty contained replace_filter +syn keyword ngxDirectiveThirdParty contained replace_filter_last_modified +syn keyword ngxDirectiveThirdParty contained replace_filter_max_buffered_size +syn keyword ngxDirectiveThirdParty contained replace_filter_skip +syn keyword ngxDirectiveThirdParty contained replace_filter_types + +" Link RRDtool's graphing facilities directly into nginx +" https://github.com/evanmiller/mod_rrd_graph +syn keyword ngxDirectiveThirdParty contained rrd_graph +syn keyword ngxDirectiveThirdParty contained rrd_graph_root + +" Module for nginx to proxy rtmp using http protocol +" https://github.com/kwojtek/nginx-rtmpt-proxy-module +syn keyword ngxDirectiveThirdParty contained rtmpt_proxy +syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_http_timeout +syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_rtmp_timeout +syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_stat +syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_stylesheet +syn keyword ngxDirectiveThirdParty contained rtmpt_proxy_target + +" Syntactically Awesome NGINX Module +" https://github.com/mneudert/sass-nginx-module +syn keyword ngxDirectiveThirdParty contained sass_compile +syn keyword ngxDirectiveThirdParty contained sass_error_log +syn keyword ngxDirectiveThirdParty contained sass_include_path +syn keyword ngxDirectiveThirdParty contained sass_indent +syn keyword ngxDirectiveThirdParty contained sass_is_indented_syntax +syn keyword ngxDirectiveThirdParty contained sass_linefeed +syn keyword ngxDirectiveThirdParty contained sass_output_style +syn keyword ngxDirectiveThirdParty contained sass_precision +syn keyword ngxDirectiveThirdParty contained sass_source_comments +syn keyword ngxDirectiveThirdParty contained sass_source_map_embed + +" Nginx Selective Cache Purge Module +" https://github.com/wandenberg/nginx-selective-cache-purge-module +syn keyword ngxDirectiveThirdParty contained selective_cache_purge_query +syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_database +syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_host +syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_password +syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_port +syn keyword ngxDirectiveThirdParty contained selective_cache_purge_redis_unix_socket + +" cconv nginx module +" https://github.com/liseen/set-cconv-nginx-module +syn keyword ngxDirectiveThirdParty contained set_cconv_to_simp +syn keyword ngxDirectiveThirdParty contained set_cconv_to_trad +syn keyword ngxDirectiveThirdParty contained set_pinyin_to_normal + +" Nginx module that allows the setting of variables to the value of a variety of hashes +" https://github.com/simpl/ngx_http_set_hash +syn keyword ngxDirectiveThirdParty contained set_md5 +syn keyword ngxDirectiveThirdParty contained set_md5_upper +syn keyword ngxDirectiveThirdParty contained set_murmur2 +syn keyword ngxDirectiveThirdParty contained set_murmur2_upper +syn keyword ngxDirectiveThirdParty contained set_sha1 +syn keyword ngxDirectiveThirdParty contained set_sha1_upper + +" Nginx module to set the language of a request based on a number of options +" https://github.com/simpl/ngx_http_set_lang +syn keyword ngxDirectiveThirdParty contained lang_cookie +syn keyword ngxDirectiveThirdParty contained lang_get_var +syn keyword ngxDirectiveThirdParty contained lang_host +syn keyword ngxDirectiveThirdParty contained lang_list +syn keyword ngxDirectiveThirdParty contained lang_post_var +syn keyword ngxDirectiveThirdParty contained lang_referer +syn keyword ngxDirectiveThirdParty contained set_lang +syn keyword ngxDirectiveThirdParty contained set_lang_method + +" Nginx Sorted Querystring Module +" https://github.com/wandenberg/nginx-sorted-querystring-module +syn keyword ngxDirectiveThirdParty contained sorted_querysting_filter_parameter + +" Nginx upstream module for Sphinx 2.x search daemon +" https://github.com/reeteshranjan/sphinx2-nginx-module +syn keyword ngxDirectiveThirdParty contained sphinx2_bind +syn keyword ngxDirectiveThirdParty contained sphinx2_buffer_size +syn keyword ngxDirectiveThirdParty contained sphinx2_connect_timeout +syn keyword ngxDirectiveThirdParty contained sphinx2_next_upstream +syn keyword ngxDirectiveThirdParty contained sphinx2_pass +syn keyword ngxDirectiveThirdParty contained sphinx2_read_timeout +syn keyword ngxDirectiveThirdParty contained sphinx2_send_timeout + +" Nginx module for retrieving user attributes and groups from SSSD +" https://github.com/veruu/ngx_sssd_info +syn keyword ngxDirectiveThirdParty contained sssd_info +syn keyword ngxDirectiveThirdParty contained sssd_info_attribute +syn keyword ngxDirectiveThirdParty contained sssd_info_attribute_separator +syn keyword ngxDirectiveThirdParty contained sssd_info_attributes +syn keyword ngxDirectiveThirdParty contained sssd_info_group +syn keyword ngxDirectiveThirdParty contained sssd_info_group_separator +syn keyword ngxDirectiveThirdParty contained sssd_info_groups +syn keyword ngxDirectiveThirdParty contained sssd_info_output_to + +" An nginx module for sending statistics to statsd +" https://github.com/zebrafishlabs/nginx-statsd +syn keyword ngxDirectiveThirdParty contained statsd_count +syn keyword ngxDirectiveThirdParty contained statsd_sample_rate +syn keyword ngxDirectiveThirdParty contained statsd_server +syn keyword ngxDirectiveThirdParty contained statsd_timing + +" ngx_stream_echo - TCP/stream echo module for NGINX (a port of the ngx_http_echo module) +" https://github.com/openresty/stream-echo-nginx-module +syn keyword ngxDirectiveThirdParty contained echo +syn keyword ngxDirectiveThirdParty contained echo_client_error_log_level +syn keyword ngxDirectiveThirdParty contained echo_discard_request +syn keyword ngxDirectiveThirdParty contained echo_duplicate +syn keyword ngxDirectiveThirdParty contained echo_flush_wait +syn keyword ngxDirectiveThirdParty contained echo_lingering_close +syn keyword ngxDirectiveThirdParty contained echo_lingering_time +syn keyword ngxDirectiveThirdParty contained echo_lingering_timeout +syn keyword ngxDirectiveThirdParty contained echo_read_buffer_size +syn keyword ngxDirectiveThirdParty contained echo_read_bytes +syn keyword ngxDirectiveThirdParty contained echo_read_line +syn keyword ngxDirectiveThirdParty contained echo_read_timeout +syn keyword ngxDirectiveThirdParty contained echo_request_data +syn keyword ngxDirectiveThirdParty contained echo_send_timeout +syn keyword ngxDirectiveThirdParty contained echo_sleep + +" Embed the power of Lua into NGINX TCP/UDP servers +" https://github.com/openresty/stream-lua-nginx-module +syn keyword ngxDirectiveThirdParty contained lua_add_variable +syn keyword ngxDirectiveThirdParty contained preread_by_lua_block +syn keyword ngxDirectiveThirdParty contained preread_by_lua_file +syn keyword ngxDirectiveThirdParty contained preread_by_lua_no_postpone + +" nginx-upsync-module +" https://github.com/weibocom/nginx-upsync-module +syn keyword ngxDirectiveThirdParty contained upstream_show +syn keyword ngxDirectiveThirdParty contained upsync +syn keyword ngxDirectiveThirdParty contained upsync_dump_path +syn keyword ngxDirectiveThirdParty contained upsync_lb + +" Whitespace stripper for nginx +" https://github.com/evanmiller/mod_strip +syn keyword ngxDirectiveThirdParty contained strip + +" Split one big HTTP/Range request to multiple subrange requesets +" https://github.com/Qihoo360/ngx_http_subrange_module +syn keyword ngxDirectiveThirdParty contained subrange + +" summarizer-nginx-module +" https://github.com/reeteshranjan/summarizer-nginx-module +syn keyword ngxDirectiveThirdParty contained summarizer_bind +syn keyword ngxDirectiveThirdParty contained summarizer_buffer_size +syn keyword ngxDirectiveThirdParty contained summarizer_connect_timeout +syn keyword ngxDirectiveThirdParty contained summarizer_next_upstream +syn keyword ngxDirectiveThirdParty contained summarizer_pass +syn keyword ngxDirectiveThirdParty contained summarizer_read_timeout +syn keyword ngxDirectiveThirdParty contained summarizer_send_timeout + +" nginx module providing API to communicate with supervisord and manage (start/stop) backends on-demand +" https://github.com/FRiCKLE/ngx_supervisord +syn keyword ngxDirectiveThirdParty contained supervisord +syn keyword ngxDirectiveThirdParty contained supervisord_inherit_backend_status +syn keyword ngxDirectiveThirdParty contained supervisord_name +syn keyword ngxDirectiveThirdParty contained supervisord_start +syn keyword ngxDirectiveThirdParty contained supervisord_stop + +" simple robot mitigation module using cookie based challenge/response technique. Not supported any more. +" https://github.com/kyprizel/testcookie-nginx-module +syn keyword ngxDirectiveThirdParty contained testcookie +syn keyword ngxDirectiveThirdParty contained testcookie_arg +syn keyword ngxDirectiveThirdParty contained testcookie_deny_keepalive +syn keyword ngxDirectiveThirdParty contained testcookie_domain +syn keyword ngxDirectiveThirdParty contained testcookie_expires +syn keyword ngxDirectiveThirdParty contained testcookie_fallback +syn keyword ngxDirectiveThirdParty contained testcookie_get_only +syn keyword ngxDirectiveThirdParty contained testcookie_httponly_flag +syn keyword ngxDirectiveThirdParty contained testcookie_https_location +syn keyword ngxDirectiveThirdParty contained testcookie_internal +syn keyword ngxDirectiveThirdParty contained testcookie_max_attempts +syn keyword ngxDirectiveThirdParty contained testcookie_name +syn keyword ngxDirectiveThirdParty contained testcookie_p3p +syn keyword ngxDirectiveThirdParty contained testcookie_pass +syn keyword ngxDirectiveThirdParty contained testcookie_path +syn keyword ngxDirectiveThirdParty contained testcookie_port_in_redirect +syn keyword ngxDirectiveThirdParty contained testcookie_redirect_via_refresh +syn keyword ngxDirectiveThirdParty contained testcookie_refresh_encrypt_cookie +syn keyword ngxDirectiveThirdParty contained testcookie_refresh_encrypt_cookie_iv +syn keyword ngxDirectiveThirdParty contained testcookie_refresh_encrypt_cookie_key +syn keyword ngxDirectiveThirdParty contained testcookie_refresh_status +syn keyword ngxDirectiveThirdParty contained testcookie_refresh_template +syn keyword ngxDirectiveThirdParty contained testcookie_secret +syn keyword ngxDirectiveThirdParty contained testcookie_secure_flag +syn keyword ngxDirectiveThirdParty contained testcookie_session +syn keyword ngxDirectiveThirdParty contained testcookie_whitelist + +" ngx_http_types_filter_module +" https://github.com/flygoast/ngx_http_types_filter +syn keyword ngxDirectiveThirdParty contained types_filter +syn keyword ngxDirectiveThirdParty contained types_filter_use_default + +" A module allowing the nginx to use files embedded in a zip file +" https://github.com/youzee/nginx-unzip-module +syn keyword ngxDirectiveThirdParty contained file_in_unzip +syn keyword ngxDirectiveThirdParty contained file_in_unzip_archivefile +syn keyword ngxDirectiveThirdParty contained file_in_unzip_extract + +" An asynchronous domain name resolve module for nginx upstream +" https://github.com/wdaike/ngx_upstream_jdomain +syn keyword ngxDirectiveThirdParty contained jdomain + +" Nginx url encoding converting module +" https://github.com/vozlt/nginx-module-url +syn keyword ngxDirectiveThirdParty contained url_encoding_convert +syn keyword ngxDirectiveThirdParty contained url_encoding_convert_alloc_size +syn keyword ngxDirectiveThirdParty contained url_encoding_convert_alloc_size_x +syn keyword ngxDirectiveThirdParty contained url_encoding_convert_from +syn keyword ngxDirectiveThirdParty contained url_encoding_convert_phase +syn keyword ngxDirectiveThirdParty contained url_encoding_convert_to + +" A nginx module to match browsers and crawlers +" https://github.com/alibaba/nginx-http-user-agent +syn keyword ngxDirectiveThirdParty contained user_agent + +" nginx load-balancer module implementing ketama consistent hashing +" https://github.com/flygoast/ngx_http_upstream_ketama_chash +syn keyword ngxDirectiveThirdParty contained ketama_chash + + + + +" highlight + +hi link ngxComment Comment +hi link ngxParamComment Comment +hi link ngxListenComment Comment +hi link ngxVariable Identifier +hi link ngxVariableString PreProc +hi link ngxString String +hi link ngxListenString String + +hi link ngxBoolean Boolean +hi link ngxDirectiveBlock Statement +hi link ngxDirectiveImportant Type +hi link ngxDirectiveListen Type +hi link ngxDirectiveControl Keyword +hi link ngxDirectiveError Constant +hi link ngxDirectiveDeprecated Error +hi link ngxDirective Identifier +hi link ngxDirectiveThirdParty Special +hi link ngxDirectiveThirdPartyDeprecated Error + +hi link ngxListenOptions Keyword +hi link ngxListenOptionsDeprecated Error + +let b:current_syntax = "nginx" diff --git a/nginx-1.18.0/html/50x.html b/nginx-1.18.0/html/50x.html new file mode 100644 index 0000000..9071e0a --- /dev/null +++ b/nginx-1.18.0/html/50x.html @@ -0,0 +1,21 @@ + + + +Error + + + +

An error occurred.

+

Sorry, the page you are looking for is currently unavailable.
+Please try again later.

+

If you are the system administrator of this resource then you should check +the error log for details.

+

Faithfully yours, nginx.

+ + diff --git a/nginx-1.18.0/html/hmdp/.gitignore b/nginx-1.18.0/html/hmdp/.gitignore new file mode 100644 index 0000000..d082997 --- /dev/null +++ b/nginx-1.18.0/html/hmdp/.gitignore @@ -0,0 +1,15 @@ +# Created by .ignore support plugin (hsz.mobi) +# Example user template template +# Example user template + +# IntelliJ project files +.idea +*.iml +out +gen +target +*.class + +*.log +.settings +.project diff --git a/nginx-1.18.0/html/hmdp/blog-detail.html b/nginx-1.18.0/html/hmdp/blog-detail.html new file mode 100644 index 0000000..d4d43b4 --- /dev/null +++ b/nginx-1.18.0/html/hmdp/blog-detail.html @@ -0,0 +1,388 @@ + + + + + + 黑马点评 + + + + + + + + + +
+
+
+
+
...
+
+
+
+
+ +
+
+
+
+ +
+
+
{{blog.name}}
+ {{formatTime(new Date(blog.createTime))}} +
+
+
+ {{followed ? '取消关注' : '关注'}} +
+
+ +
+
+
+
+
+ +
+
+
{{shop.name}}
+
+ + +
+
¥{{shop.avgPrice}}/人
+
+
+
+
+ + + +
+
+
+ +
+
{{blog.liked}}人点赞
+
+
+
+
+
+
网友评价 (119)
+
+
+
+
+
+ +
+
+
叶小乙 Lv5
+
+ 打分 + +
+
+ 某平台上买的券,价格可以当工作餐吃,虽然价格便宜,但是这家店一点都没有... +
+
+ + + + +
+
+ 浏览641     评论5 +
+
+
+
+
查看全部119条评价
+
+
+
+
+
+
+
+
+
+ + + + {{blog.liked}} +
+
+
+
+
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/nginx-1.18.0/html/hmdp/blog-edit.html b/nginx-1.18.0/html/hmdp/blog-edit.html new file mode 100644 index 0000000..9e54bc4 --- /dev/null +++ b/nginx-1.18.0/html/hmdp/blog-edit.html @@ -0,0 +1,161 @@ + + + + + + 黑马点评 + + + + + + + + +
+
+
取消
+
  发笔记
+
+
发布
+
+
+
+ +
+ +
上传照片
+
+
+
+ + +
+
+
+
+ +
+
+ +
+
+
+
关联商户
+
{{selectedShop.name}}
+
去选择 
+
+
+ + +
+
+
关联商户
+
+ +
+
+
{{s.name}}
+
{{s.area}}
+
+
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/nginx-1.18.0/html/hmdp/css/blog-detail.css b/nginx-1.18.0/html/hmdp/css/blog-detail.css new file mode 100644 index 0000000..5c12cab --- /dev/null +++ b/nginx-1.18.0/html/hmdp/css/blog-detail.css @@ -0,0 +1,245 @@ + +.header { + background-color: #fff; + +} + +.top-bar { + height: 60px; +} + +.header { + width: 100%; + height: 6%; + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 2px solid #ff6633; + position: fixed; + top: 0; + z-index: 500; +} +.shop-avg{ + opacity: .4; +} +.header-back-btn { + width: 10%; + color: #ff6633; + font-size: 24px; + font-weight: bold; +} + +.header-title { + width: 80%; + text-align: center; + font-size: 18px; + font-family: Hiragino Sans GB, Arial, Helvetica, "\5B8B\4F53", sans-serif; +} + +.header-share { + width: 10%; + text-align: center; + font-size: 18px; + color: #82848a; + font-weight: bold; + font-family: Hiragino Sans GB, Arial, Helvetica, "\5B8B\4F53", sans-serif; +} +.blog-divider { + height: 10px; + background-color: #f3f1f1; +} + +.blog-info-box{ + position: relative; + overflow: hidden; + height: 85%; + width: 100%; +} +.blog-info-box.indicator{ + position: absolute; + right: 3vw; + bottom: 3vw; + width: 10vw; + height: 10vw; + line-height: 10vw; + border-radius: 5vw; + text-align: center; + background-color: rgba(0,0,0,.5); + color: #fff; + font-size: 14px; +} +.swiper-item{ + position: absolute; + left:0; + top:0; + width: 100%; + height: 100%; +} +.basic{ + display: flex; + justify-content: space-between; + padding: 15px 15px 5px 15px; +} +.basic-icon { + width: 40px; + height: 40px; + padding: 1px; + background-color: #fff; + border-radius: 50%; + box-shadow: 0 0 3px 2px rgba(0, 0, 0, 0.07); +} +.basic-icon img { + border-radius: 50%; + width: 100%; + height: 100%; +} + +.shop-basic{ + margin: auto; + width: 80%; + border-radius: 5px; + display: flex; + justify-content: space-between; + padding: 15px 15px 5px 15px; + box-shadow: 0 4px 4px 2px rgba(0, 0, 0, 0.1); +} +.shop-icon { + width: 50px; + height: 50px; +} +.shop-icon img { + width: 100%; + height: 100%; +} + +.zan-box{ + width: 90%; + margin: auto; + padding: 20px 0 10px; + display: flex; + justify-content: space-between; +} +.zan-list{ + width: 88%; + display: flex; +} +.user-icon-mini{ + margin-left: -5px; + width: 20px; + height: 20px; + border-radius: 50%; + padding: 1px; + background-color: #fff; + box-shadow: 0 0 3px 2px rgba(0, 0, 0, 0.07); +} +.user-icon-mini img { + border-radius: 50%; + width: 100%; + height: 100%; +} +.basic-info { + width: 60%; +} +.basic-info .name{ + font-weight: bold; + font-size: 12px; + color: #446889; +} +.basic-info .time{ + display: inline-block; + padding: 0 10px; + margin: 5px 0 10px; + border-radius: 2px; + opacity: .4; +} + +.logout-btn{ + width: 100%; + height: 25px; + line-height: 25px; + border-radius: 12px; + text-align: center; + border: #ff6633 1px solid; + color: #ff6633; + box-shadow: 0 1px 2px 1px rgba(0, 0, 0, 0.04); +} +.blog-text{ + width: 90%; + padding: 5px 20px; +} +.copyright { + color: #d1d1d1; + margin-top: 20px; + text-shadow: 0 1px 1px #fff; + text-align: center; +} +.blog-comments { + padding: 10px; +} +.comments-head { + display: flex; + justify-content: space-between; + font-size: 14px; + font-weight: bold; +} +.comments-head span { + font-size: 12px; + font-weight: normal; + color: #82848a; +} +.comment-tags { + display: flex; + flex-wrap: wrap; + justify-content: space-between; +} +.comment-tags div { + width: 25%; + border: 1px solid #427fc4; + border-radius: 5px; + text-align: center; + color: #427fc4; + padding: 5px 10px; + margin-top: 7px; +} +.comment-list { + margin-top: 15px; +} +.comment-box { + display: flex; + justify-content: space-between; + margin-bottom: 15px; +} +.comment-icon { + width: 55px; +} +.comment-icon img{ + width: 48px; + height: 48px; + border-radius: 50%; +} +.comment-info { + width: 80%; + flex-grow: 1; +} +.comment-user { + font-size: 14px; +} +.comment-user span { + font-size: 10px; + padding: 0 10px; + border-radius: 8px; + background-color: #f7b253; + color: white; +} +.comment-images { + display: flex; + width: 100%; + overflow-x: scroll; + padding: 10px 0; +} +.comment-images img { + height: 94px; + width: 92px; + border-radius: 5px; + margin-right: 5px; +} \ No newline at end of file diff --git a/nginx-1.18.0/html/hmdp/css/blog-edit.css b/nginx-1.18.0/html/hmdp/css/blog-edit.css new file mode 100644 index 0000000..61b2baf --- /dev/null +++ b/nginx-1.18.0/html/hmdp/css/blog-edit.css @@ -0,0 +1,174 @@ +.header{ + padding: 15px; + line-height: 20px; + display: flex; + justify-content: space-between; + text-align: center; +} +.header-cancel-btn{ + font-size: 14px; + font-weight: bold; +} +.header-commit-btn{ + color: white; + background-color: #F63; + padding: 0 12px; + border-radius: 15px; +} +.header-title i { + font-size: 14px; +} +.header-title { + text-align: center; + font-size: 18px; + font-family: Hiragino Sans GB,Arial,Helvetica,"\5B8B\4F53",sans-serif; +} +.upload-box { + padding: 15px; + display: flex; + overflow-x: scroll; +} +.upload-btn { + width: 70px; + height: 125px; + line-height: 40px; + text-align: center; + align-items: center; + border: 1px dashed #3a8ee6; + border-radius: 5px; + font-size: 30px; + color: #82848a; + margin-right: 10px; +} +.upload-btn i { + margin-top: 35px; +} + +.pic-list { + display: flex; + overflow-x: scroll; + height: 125px; +} +.pic-box{ + width: 100px; + height: 120px; + border-radius: 5px; + margin-right: 2px; + border: 1px solid #c0ccda; + position: relative; +} +.pic-box img { + width: 100px; + height: 120px; + border-radius: 5px; +} +.pic-box i { + position: absolute; + z-index: 99; + top: 2px; + right: 2px; + color: gray; +} +.blog-title,.blog-content { + padding: 5px 15px; +} +.blog-title input { + width: 100%; + line-height: 30px; + font-size: 14px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #e6e6e8; +} +input::placeholder { + font-weight: bold; + color: #cccccc; +} +textarea::placeholder { + color: #cccccc; +} +.blog-content textarea{ + width: 100%; + height: 310px; + border: 0; +} +.blog-shop { + color: #82848a; + padding: 15px; + display: flex; + justify-content: space-between; +} +.shop-left { + color: #111111; + font-size: 14px; + font-weight: bold; +} +.divider { + background-color: #f4f4f5; + height: 10px; +} +.end-gray { + background-color: #f4f4f5; + height: 100%; +} +.mask { + height: 100%; + width: 100%; + position: fixed; + z-index: 299; + top: 0; + left: 0; + background: rgba(0,0,0,0.3); +} +.shop-dialog { + position: absolute; + z-index: 999; + bottom: 0; + height: 500px; + width: 100%; + background-color: #fff; +} +.search-bar { + display: flex; + padding: 15px; + line-height: 30px; + justify-content: space-between; +} +.city-select { + font-weight: bold; + font-size: 14px; + margin-right: 10px; +} +.search-input { + width: 50%; + flex-grow: 1; + background-color: #f1f1f1; + line-height: 30px; + align-items: center; + border-radius: 20px; + display: flex; + padding: 0 10px ; +} +.search-input input { + margin-left: 10px; + border: 0; + width: 100%; + background-color: #f1f1f1; +} +input:focus,textarea:focus { + outline: none; +} +.shop-list { + padding: 15px; + overflow-y: scroll; + height: 100%; +} +.shop-item { + border-bottom: 1px solid #eae8e8; + padding: 8px 0; +} +.shop-name { + font-size: 14px; + font-weight: bold; +} \ No newline at end of file diff --git a/nginx-1.18.0/html/hmdp/css/element.css b/nginx-1.18.0/html/hmdp/css/element.css new file mode 100644 index 0000000..dc7ff5e --- /dev/null +++ b/nginx-1.18.0/html/hmdp/css/element.css @@ -0,0 +1 @@ +@charset "UTF-8";.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}.el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}@font-face{font-family:element-icons;src:url(fonts/element-icons.woff) format("woff"),url(fonts/element-icons.ttf) format("truetype");font-weight:400;font-display:"auto";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-ice-cream-round:before{content:"\e6a0"}.el-icon-ice-cream-square:before{content:"\e6a3"}.el-icon-lollipop:before{content:"\e6a4"}.el-icon-potato-strips:before{content:"\e6a5"}.el-icon-milk-tea:before{content:"\e6a6"}.el-icon-ice-drink:before{content:"\e6a7"}.el-icon-ice-tea:before{content:"\e6a9"}.el-icon-coffee:before{content:"\e6aa"}.el-icon-orange:before{content:"\e6ab"}.el-icon-pear:before{content:"\e6ac"}.el-icon-apple:before{content:"\e6ad"}.el-icon-cherry:before{content:"\e6ae"}.el-icon-watermelon:before{content:"\e6af"}.el-icon-grape:before{content:"\e6b0"}.el-icon-refrigerator:before{content:"\e6b1"}.el-icon-goblet-square-full:before{content:"\e6b2"}.el-icon-goblet-square:before{content:"\e6b3"}.el-icon-goblet-full:before{content:"\e6b4"}.el-icon-goblet:before{content:"\e6b5"}.el-icon-cold-drink:before{content:"\e6b6"}.el-icon-coffee-cup:before{content:"\e6b8"}.el-icon-water-cup:before{content:"\e6b9"}.el-icon-hot-water:before{content:"\e6ba"}.el-icon-ice-cream:before{content:"\e6bb"}.el-icon-dessert:before{content:"\e6bc"}.el-icon-sugar:before{content:"\e6bd"}.el-icon-tableware:before{content:"\e6be"}.el-icon-burger:before{content:"\e6bf"}.el-icon-knife-fork:before{content:"\e6c1"}.el-icon-fork-spoon:before{content:"\e6c2"}.el-icon-chicken:before{content:"\e6c3"}.el-icon-food:before{content:"\e6c4"}.el-icon-dish-1:before{content:"\e6c5"}.el-icon-dish:before{content:"\e6c6"}.el-icon-moon-night:before{content:"\e6ee"}.el-icon-moon:before{content:"\e6f0"}.el-icon-cloudy-and-sunny:before{content:"\e6f1"}.el-icon-partly-cloudy:before{content:"\e6f2"}.el-icon-cloudy:before{content:"\e6f3"}.el-icon-sunny:before{content:"\e6f6"}.el-icon-sunset:before{content:"\e6f7"}.el-icon-sunrise-1:before{content:"\e6f8"}.el-icon-sunrise:before{content:"\e6f9"}.el-icon-heavy-rain:before{content:"\e6fa"}.el-icon-lightning:before{content:"\e6fb"}.el-icon-light-rain:before{content:"\e6fc"}.el-icon-wind-power:before{content:"\e6fd"}.el-icon-baseball:before{content:"\e712"}.el-icon-soccer:before{content:"\e713"}.el-icon-football:before{content:"\e715"}.el-icon-basketball:before{content:"\e716"}.el-icon-ship:before{content:"\e73f"}.el-icon-truck:before{content:"\e740"}.el-icon-bicycle:before{content:"\e741"}.el-icon-mobile-phone:before{content:"\e6d3"}.el-icon-service:before{content:"\e6d4"}.el-icon-key:before{content:"\e6e2"}.el-icon-unlock:before{content:"\e6e4"}.el-icon-lock:before{content:"\e6e5"}.el-icon-watch:before{content:"\e6fe"}.el-icon-watch-1:before{content:"\e6ff"}.el-icon-timer:before{content:"\e702"}.el-icon-alarm-clock:before{content:"\e703"}.el-icon-map-location:before{content:"\e704"}.el-icon-delete-location:before{content:"\e705"}.el-icon-add-location:before{content:"\e706"}.el-icon-location-information:before{content:"\e707"}.el-icon-location-outline:before{content:"\e708"}.el-icon-location:before{content:"\e79e"}.el-icon-place:before{content:"\e709"}.el-icon-discover:before{content:"\e70a"}.el-icon-first-aid-kit:before{content:"\e70b"}.el-icon-trophy-1:before{content:"\e70c"}.el-icon-trophy:before{content:"\e70d"}.el-icon-medal:before{content:"\e70e"}.el-icon-medal-1:before{content:"\e70f"}.el-icon-stopwatch:before{content:"\e710"}.el-icon-mic:before{content:"\e711"}.el-icon-copy-document:before{content:"\e718"}.el-icon-full-screen:before{content:"\e719"}.el-icon-switch-button:before{content:"\e71b"}.el-icon-aim:before{content:"\e71c"}.el-icon-crop:before{content:"\e71d"}.el-icon-odometer:before{content:"\e71e"}.el-icon-time:before{content:"\e71f"}.el-icon-bangzhu:before{content:"\e724"}.el-icon-close-notification:before{content:"\e726"}.el-icon-microphone:before{content:"\e727"}.el-icon-turn-off-microphone:before{content:"\e728"}.el-icon-position:before{content:"\e729"}.el-icon-postcard:before{content:"\e72a"}.el-icon-message:before{content:"\e72b"}.el-icon-chat-line-square:before{content:"\e72d"}.el-icon-chat-dot-square:before{content:"\e72e"}.el-icon-chat-dot-round:before{content:"\e72f"}.el-icon-chat-square:before{content:"\e730"}.el-icon-chat-line-round:before{content:"\e731"}.el-icon-chat-round:before{content:"\e732"}.el-icon-set-up:before{content:"\e733"}.el-icon-turn-off:before{content:"\e734"}.el-icon-open:before{content:"\e735"}.el-icon-connection:before{content:"\e736"}.el-icon-link:before{content:"\e737"}.el-icon-cpu:before{content:"\e738"}.el-icon-thumb:before{content:"\e739"}.el-icon-female:before{content:"\e73a"}.el-icon-male:before{content:"\e73b"}.el-icon-guide:before{content:"\e73c"}.el-icon-news:before{content:"\e73e"}.el-icon-price-tag:before{content:"\e744"}.el-icon-discount:before{content:"\e745"}.el-icon-wallet:before{content:"\e747"}.el-icon-coin:before{content:"\e748"}.el-icon-money:before{content:"\e749"}.el-icon-bank-card:before{content:"\e74a"}.el-icon-box:before{content:"\e74b"}.el-icon-present:before{content:"\e74c"}.el-icon-sell:before{content:"\e6d5"}.el-icon-sold-out:before{content:"\e6d6"}.el-icon-shopping-bag-2:before{content:"\e74d"}.el-icon-shopping-bag-1:before{content:"\e74e"}.el-icon-shopping-cart-2:before{content:"\e74f"}.el-icon-shopping-cart-1:before{content:"\e750"}.el-icon-shopping-cart-full:before{content:"\e751"}.el-icon-smoking:before{content:"\e752"}.el-icon-no-smoking:before{content:"\e753"}.el-icon-house:before{content:"\e754"}.el-icon-table-lamp:before{content:"\e755"}.el-icon-school:before{content:"\e756"}.el-icon-office-building:before{content:"\e757"}.el-icon-toilet-paper:before{content:"\e758"}.el-icon-notebook-2:before{content:"\e759"}.el-icon-notebook-1:before{content:"\e75a"}.el-icon-files:before{content:"\e75b"}.el-icon-collection:before{content:"\e75c"}.el-icon-receiving:before{content:"\e75d"}.el-icon-suitcase-1:before{content:"\e760"}.el-icon-suitcase:before{content:"\e761"}.el-icon-film:before{content:"\e763"}.el-icon-collection-tag:before{content:"\e765"}.el-icon-data-analysis:before{content:"\e766"}.el-icon-pie-chart:before{content:"\e767"}.el-icon-data-board:before{content:"\e768"}.el-icon-data-line:before{content:"\e76d"}.el-icon-reading:before{content:"\e769"}.el-icon-magic-stick:before{content:"\e76a"}.el-icon-coordinate:before{content:"\e76b"}.el-icon-mouse:before{content:"\e76c"}.el-icon-brush:before{content:"\e76e"}.el-icon-headset:before{content:"\e76f"}.el-icon-umbrella:before{content:"\e770"}.el-icon-scissors:before{content:"\e771"}.el-icon-mobile:before{content:"\e773"}.el-icon-attract:before{content:"\e774"}.el-icon-monitor:before{content:"\e775"}.el-icon-search:before{content:"\e778"}.el-icon-takeaway-box:before{content:"\e77a"}.el-icon-paperclip:before{content:"\e77d"}.el-icon-printer:before{content:"\e77e"}.el-icon-document-add:before{content:"\e782"}.el-icon-document:before{content:"\e785"}.el-icon-document-checked:before{content:"\e786"}.el-icon-document-copy:before{content:"\e787"}.el-icon-document-delete:before{content:"\e788"}.el-icon-document-remove:before{content:"\e789"}.el-icon-tickets:before{content:"\e78b"}.el-icon-folder-checked:before{content:"\e77f"}.el-icon-folder-delete:before{content:"\e780"}.el-icon-folder-remove:before{content:"\e781"}.el-icon-folder-add:before{content:"\e783"}.el-icon-folder-opened:before{content:"\e784"}.el-icon-folder:before{content:"\e78a"}.el-icon-edit-outline:before{content:"\e764"}.el-icon-edit:before{content:"\e78c"}.el-icon-date:before{content:"\e78e"}.el-icon-c-scale-to-original:before{content:"\e7c6"}.el-icon-view:before{content:"\e6ce"}.el-icon-loading:before{content:"\e6cf"}.el-icon-rank:before{content:"\e6d1"}.el-icon-sort-down:before{content:"\e7c4"}.el-icon-sort-up:before{content:"\e7c5"}.el-icon-sort:before{content:"\e6d2"}.el-icon-finished:before{content:"\e6cd"}.el-icon-refresh-left:before{content:"\e6c7"}.el-icon-refresh-right:before{content:"\e6c8"}.el-icon-refresh:before{content:"\e6d0"}.el-icon-video-play:before{content:"\e7c0"}.el-icon-video-pause:before{content:"\e7c1"}.el-icon-d-arrow-right:before{content:"\e6dc"}.el-icon-d-arrow-left:before{content:"\e6dd"}.el-icon-arrow-up:before{content:"\e6e1"}.el-icon-arrow-down:before{content:"\e6df"}.el-icon-arrow-right:before{content:"\e6e0"}.el-icon-arrow-left:before{content:"\e6de"}.el-icon-top-right:before{content:"\e6e7"}.el-icon-top-left:before{content:"\e6e8"}.el-icon-top:before{content:"\e6e6"}.el-icon-bottom:before{content:"\e6eb"}.el-icon-right:before{content:"\e6e9"}.el-icon-back:before{content:"\e6ea"}.el-icon-bottom-right:before{content:"\e6ec"}.el-icon-bottom-left:before{content:"\e6ed"}.el-icon-caret-top:before{content:"\e78f"}.el-icon-caret-bottom:before{content:"\e790"}.el-icon-caret-right:before{content:"\e791"}.el-icon-caret-left:before{content:"\e792"}.el-icon-d-caret:before{content:"\e79a"}.el-icon-share:before{content:"\e793"}.el-icon-menu:before{content:"\e798"}.el-icon-s-grid:before{content:"\e7a6"}.el-icon-s-check:before{content:"\e7a7"}.el-icon-s-data:before{content:"\e7a8"}.el-icon-s-opportunity:before{content:"\e7aa"}.el-icon-s-custom:before{content:"\e7ab"}.el-icon-s-claim:before{content:"\e7ad"}.el-icon-s-finance:before{content:"\e7ae"}.el-icon-s-comment:before{content:"\e7af"}.el-icon-s-flag:before{content:"\e7b0"}.el-icon-s-marketing:before{content:"\e7b1"}.el-icon-s-shop:before{content:"\e7b4"}.el-icon-s-open:before{content:"\e7b5"}.el-icon-s-management:before{content:"\e7b6"}.el-icon-s-ticket:before{content:"\e7b7"}.el-icon-s-release:before{content:"\e7b8"}.el-icon-s-home:before{content:"\e7b9"}.el-icon-s-promotion:before{content:"\e7ba"}.el-icon-s-operation:before{content:"\e7bb"}.el-icon-s-unfold:before{content:"\e7bc"}.el-icon-s-fold:before{content:"\e7a9"}.el-icon-s-platform:before{content:"\e7bd"}.el-icon-s-order:before{content:"\e7be"}.el-icon-s-cooperation:before{content:"\e7bf"}.el-icon-bell:before{content:"\e725"}.el-icon-message-solid:before{content:"\e799"}.el-icon-video-camera:before{content:"\e772"}.el-icon-video-camera-solid:before{content:"\e796"}.el-icon-camera:before{content:"\e779"}.el-icon-camera-solid:before{content:"\e79b"}.el-icon-download:before{content:"\e77c"}.el-icon-upload2:before{content:"\e77b"}.el-icon-upload:before{content:"\e7c3"}.el-icon-picture-outline-round:before{content:"\e75f"}.el-icon-picture-outline:before{content:"\e75e"}.el-icon-picture:before{content:"\e79f"}.el-icon-close:before{content:"\e6db"}.el-icon-check:before{content:"\e6da"}.el-icon-plus:before{content:"\e6d9"}.el-icon-minus:before{content:"\e6d8"}.el-icon-help:before{content:"\e73d"}.el-icon-s-help:before{content:"\e7b3"}.el-icon-circle-close:before{content:"\e78d"}.el-icon-circle-check:before{content:"\e720"}.el-icon-circle-plus-outline:before{content:"\e723"}.el-icon-remove-outline:before{content:"\e722"}.el-icon-zoom-out:before{content:"\e776"}.el-icon-zoom-in:before{content:"\e777"}.el-icon-error:before{content:"\e79d"}.el-icon-success:before{content:"\e79c"}.el-icon-circle-plus:before{content:"\e7a0"}.el-icon-remove:before{content:"\e7a2"}.el-icon-info:before{content:"\e7a1"}.el-icon-question:before{content:"\e7a4"}.el-icon-warning-outline:before{content:"\e6c9"}.el-icon-warning:before{content:"\e7a3"}.el-icon-goods:before{content:"\e7c2"}.el-icon-s-goods:before{content:"\e7b2"}.el-icon-star-off:before{content:"\e717"}.el-icon-star-on:before{content:"\e797"}.el-icon-more-outline:before{content:"\e6cc"}.el-icon-more:before{content:"\e794"}.el-icon-phone-outline:before{content:"\e6cb"}.el-icon-phone:before{content:"\e795"}.el-icon-user:before{content:"\e6e3"}.el-icon-user-solid:before{content:"\e7a5"}.el-icon-setting:before{content:"\e6ca"}.el-icon-s-tools:before{content:"\e7ac"}.el-icon-delete:before{content:"\e6d7"}.el-icon-delete-solid:before{content:"\e7c9"}.el-icon-eleme:before{content:"\e7c7"}.el-icon-platform-eleme:before{content:"\e7ca"}.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);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:#FF6633}.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:#FF6633}.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:#FF6633}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#FF6633;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-date-table,.el-table th{-webkit-user-select:none;-moz-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:#FF6633}.el-pager li.active{color:#FF6633;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);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:#FF6633}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.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;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#FFF}.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}.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:rgba(255,255,255,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default::before{background:rgba(220,223,230,.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 i{margin-right:5px}.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;background-color:#FFF}.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;background-color:#FFF}.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-menu::after,.el-menu::before{display:table;content:""}.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 #FF6633;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 #FF6633;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{-webkit-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;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:#FF6633}.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;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;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#FF6633}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotateZ(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-button__inner,.el-radio-group{display:inline-block;line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.el-radio-group{font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{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;outline:0;margin:0;position:relative;cursor:pointer;-webkit-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:#FF6633}.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:#FF6633;border-color:#FF6633;-webkit-box-shadow:-1px 0 0 0 #FF6633;box-shadow:-1px 0 0 0 #FF6633}.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 #FF6633;box-shadow:0 0 2px 2px #FF6633}.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;transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#FF6633}.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;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#FFF}.el-switch.is-checked .el-switch__core{border-color:#FF6633;background-color:#FF6633}.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:#FF6633;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:"\e6da";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;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:#FF6633;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:#FF6633}.el-select .el-input .el-select__caret{color:#C0C4CC;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#C0C4CC;-webkit-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:#FF6633}.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%);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);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%;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{line-height:60px;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;transition: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);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__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.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;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.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--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{overflow:hidden;-ms-user-select:none;user-select:none}.el-table th>.cell{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th>.cell.highlight{color:#FF6633}.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;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-right:10px}.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:#FF6633}.el-table .descending .sort-caret.descending{border-top-color:#FF6633}.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{background-color:#ecf5ff}.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:#F5F7FA}.el-table__body tr.current-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);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td{-webkit-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 [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.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);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.el-date-table td,.el-date-table td div{height:30px;-webkit-box-sizing:border-box}.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:#FF6633;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:#FF6633}.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;-ms-user-select:none;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;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{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%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.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:#FF6633;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:#FF6633}.el-date-table td.current:not(.disabled) span{color:#FFF;background-color:#FF6633}.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:#FF6633}.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:#FF6633;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:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-month-table td.today .cell{color:#FF6633;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#FFF}.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{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#FF6633}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#F2F6FC}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#FFF}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#FFF;background-color:#FF6633}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#FF6633}.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.today .cell{color:#FF6633;font-weight:700}.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{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#FF6633}.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 .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:#FF6633}.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:#FF6633;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--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.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{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:#FF6633}.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;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:#FF6633}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#FF6633}.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:#FF6633}.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);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:#FF6633}.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;-webkit-box-sizing:content-box;box-sizing:content-box}.el-slider__button,.el-slider__button-wrapper{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.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:#FF6633}.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;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.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:#FF6633}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;-webkit-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);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);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#FF6633;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--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-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;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__content .el-input-group{vertical-align:top}.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-wrap>.el-form-item__label:before,.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--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:#FF6633;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-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);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;transition:all .15s}.el-collapse-item__arrow,.el-tabs__nav{-webkit-transition:-webkit-transform .3s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8,.8);transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#FF6633}.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;transition:-webkit-transform .3s;transition: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 #FF6633 inset;box-shadow:0 0 2px 2px #FF6633 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);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-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:#FF6633}.el-tabs__item:hover{color:#FF6633;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-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%;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);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);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#FF6633;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:#FF6633}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#C0C4CC}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.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__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .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);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;text-align:left}.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-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}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.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-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%);transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#FF6633}.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:#FF6633;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>label.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);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition: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);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;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#C0C4CC}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#FFF}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67C23A}.el-alert--success.is-light .el-alert__description{color:#67C23A}.el-alert--success.is-dark{background-color:#67C23A;color:#FFF}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#FFF}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#E6A23C}.el-alert--warning.is-light .el-alert__description{color:#E6A23C}.el-alert--warning.is-dark{background-color:#E6A23C;color:#FFF}.el-alert--error.is-light{background-color:#fef0f0;color:#F56C6C}.el-alert--error.is-light .el-alert__description{color:#F56C6C}.el-alert--error.is-dark{background-color:#F56C6C;color:#FFF}.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;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;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;margin-right:8px}.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%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-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:#FF6633}.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:#FF6633}.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);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);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);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);transform:scale(1);cursor:not-allowed}.el-slider__button-wrapper,.el-slider__stop{-webkit-transform:translateX(-50%);position:absolute}.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:#FF6633;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;z-index:1001;top:-15px;transform:translateX(-50%);background-color:transparent;text-align:center;user-select:none;line-height:normal}.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 #FF6633;background-color:#FFF;border-radius:50%;-webkit-transition:.2s;transition:.2s;user-select:none}.el-image-viewer__btn,.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-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{height:6px;width:6px;border-radius:100%;background-color:#FFF;transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.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%);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{-webkit-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);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:#FF6633}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.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;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:#FF6633;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:#FF6633;stroke-linecap:round}.el-loading-spinner i{color:#FF6633}@-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-top{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.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;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:#FF6633;color:#FF6633}.el-upload:focus .el-upload-dragger{border-color:#FF6633}.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:#FF6633;font-style:normal}.el-upload-dragger:hover{border-color:#FF6633}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #FF6633}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-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:#FF6633}.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:#FF6633;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;-webkit-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:#FF6633}.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);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);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;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%);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;background-color:#FFF}.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);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);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);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);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);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;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);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,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .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-warning .el-progress-bar__inner{background-color:#E6A23C}.el-progress.is-warning .el-progress__text{color:#E6A23C}.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:#FF6633;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-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%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,transform .4s,top .4s;transition:opacity .3s,transform .4s,top .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%);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%);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%);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:#FF6633}.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;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;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-webkit-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: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:#FF6633;border-color:#FF6633}.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;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;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.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);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;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:#FF6633}.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:#FF6633}.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: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);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);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.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;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%);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;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-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;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{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.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;transition:.3s}.el-carousel__item,.el-carousel__mask{height:100%;top:0;left:0;position:absolute}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-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);transform:translateY(-50%) translateX(10px);opacity:0}.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;transition: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;transition: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%;background-color:#FFF;opacity:.24;-webkit-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;transition:opacity .2s linear}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-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);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);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);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-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);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;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-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);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;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-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);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);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;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-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;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;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;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-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.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.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;background-color:#FFF;color:#303133;cursor:pointer;border-bottom:1px solid #EBEEF5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#FF6633}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#FFF;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #EBEEF5}.el-cascader__tags,.el-tag{-webkit-box-sizing:border-box}.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-tag{background-color:#ecf5ff;border-color:#d9ecff;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#FF6633;border-width:1px;border-style:solid;border-radius:4px;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#FF6633}.el-tag .el-tag__close{color:#FF6633}.el-tag .el-tag__close:hover{color:#FFF;background-color:#FF6633}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67C23A}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.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;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#FF6633;border-color:#FF6633;color:#fff}.el-tag--dark.is-hit{border-color:#FF6633}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#FFF;background-color:#66b1ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67C23A}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d8ff;color:#FF6633}.el-tag--plain.is-hit{border-color:#FF6633}.el-tag--plain .el-tag__close{color:#FF6633}.el-tag--plain .el-tag__close:hover{color:#FFF;background-color:#FF6633}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67C23A}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-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);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);transform:scale(.7)}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#C0C4CC}.el-cascader .el-input .el-input__inner:focus,.el-cascader .el-input.is-focus .el-input__inner{border-color:#FF6633}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.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__dropdown{margin:5px 0;font-size:14px;background:#FFF;border:1px solid #E4E7ED;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-cascader__tags{position:absolute;left:0;right:30px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{-webkit-box-flex:0;-ms-flex:none;flex:none;background-color:#C0C4CC;color:#FFF}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#F5F7FA}.el-cascader__suggestion-item.is-checked{color:#FF6633;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#C0C4CC}.el-cascader__search-input{-webkit-box-flex:1;-ms-flex:1;flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__search-input::-webkit-input-placeholder{color:#C0C4CC}.el-cascader__search-input:-ms-input-placeholder{color:#C0C4CC}.el-cascader__search-input::-ms-input-placeholder{color:#C0C4CC}.el-cascader__search-input::placeholder{color:#C0C4CC}.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 #FF6633;box-shadow:0 0 3px 2px #FF6633}.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: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: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: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(rgba(0,0,0,0)));background:linear-gradient(to top,#000,rgba(0,0,0,0))}.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);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: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: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:#FF6633;border-color:#FF6633}.el-color-dropdown__link-btn{cursor:pointer;color:#FF6633;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#FF6633,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{position:relative;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);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:#FF6633}.el-textarea .el-input__count{color:#909399;background:#FFF;position:absolute;font-size:12px;bottom:5px;right:10px}.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-textarea.is-exceed .el-textarea__inner{border-color:#F56C6C}.el-textarea.is-exceed .el-input__count{color:#F56C6C}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.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;cursor:pointer;-webkit-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 .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#FFF;line-height:initial;display:inline-block;padding:0 5px}.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);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::-ms-reveal{display:none}.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:#FF6633;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;-webkit-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-link,.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-input.is-exceed .el-input__inner{border-color:#F56C6C}.el-input.is-exceed .el-input__suffix .el-input__count{color:#F56C6C}.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-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:#FF6633;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!important}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#FF6633}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;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 .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-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-divider__text,.el-link{font-weight:500;font-size:14px}.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-container,.el-timeline-item__node{display:-webkit-box;display:-ms-flexbox}.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: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,.el-drawer,.el-empty{-webkit-box-orient:vertical;-webkit-box-direction:normal}.el-aside,.el-header{-webkit-box-sizing:border-box}.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{overflow:auto;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-footer,.el-main{-webkit-box-sizing:border-box}.el-main{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;box-sizing:border-box;padding:20px}.el-footer{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-timeline{margin:0;font-size:14px;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #E4E7ED}.el-timeline-item__icon{color:#FFF;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#E4E7ED;border-radius:50%;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-image__error,.el-timeline-item__dot{display:-webkit-box;display:-ms-flexbox}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#FF6633}.el-timeline-item__node--success{background-color:#67C23A}.el-timeline-item__node--warning{background-color:#E6A23C}.el-timeline-item__node--danger{background-color:#F56C6C}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;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-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;padding:0}.el-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #FF6633}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#FF6633}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#FF6633}.el-link.el-link--default.is-disabled{color:#C0C4CC}.el-link.el-link--primary{color:#FF6633}.el-link.el-link--primary:hover{color:#66b1ff}.el-link.el-link--primary.is-disabled{color:#a0cfff}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#F56C6C}.el-link.el-link--danger{color:#F56C6C}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67C23A}.el-link.el-link--success{color:#67C23A}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#E6A23C}.el-link.el-link--warning{color:#E6A23C}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-divider{background-color:#DCDFE6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#FFF;padding:0 20px;color:#303133}.el-image__error,.el-image__placeholder{background:#F5F7FA}.el-divider__text.is-left{left:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-divider__text.is-center{left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block}.el-image__error{display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;color:#C0C4CC;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index: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;border-radius:50%;opacity:.8;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;user-select:none}.el-button,.el-checkbox{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:24px;color:#fff;background-color:#606266}.el-image-viewer__canvas{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-image-viewer__actions{left:50%;bottom:30px;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{top:50%;width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff}.el-image-viewer__prev{-webkit-transform:translateY(-50%);transform:translateY(-50%);left:40px}.el-image-viewer__next{-webkit-transform:translateY(-50%);transform:translateY(-50%);right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{-webkit-animation:viewer-fade-in .3s;animation:viewer-fade-in .3s}.viewer-fade-leave-active{-webkit-animation:viewer-fade-out .3s;animation:viewer-fade-out .3s}@-webkit-keyframes viewer-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 viewer-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 viewer-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 viewer-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-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;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:#FF6633;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:#FF6633;color:#FF6633}.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:#FF6633;border-color:#FF6633}.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:#FF6633;background:#ecf5ff;border-color:#b3d8ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#FF6633;border-color:#FF6633;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:#FF6633;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-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.is-disabled{z-index:1}.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-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.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-calendar{background-color:#fff}.el-calendar__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #EBEEF5}.el-backtop,.el-page-header{display:-webkit-box;display:-ms-flexbox}.el-calendar__title{color:#000;-ms-flex-item-align:center;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#C0C4CC}.el-backtop,.el-calendar-table td.is-today{color:#FF6633}.el-calendar-table td{border-bottom:1px solid #EBEEF5;border-right:1px solid #EBEEF5;vertical-align:top;-webkit-transition:background-color .2s ease;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#F2F8FE}.el-calendar-table tr:first-child td{border-top:1px solid #EBEEF5}.el-calendar-table tr td:first-child{border-left:1px solid #EBEEF5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#F2F8FE}.el-backtop{position:fixed;background-color:#FFF;width:40px;height:40px;border-radius:50%;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:20px;-webkit-box-shadow:0 0 6px rgba(0,0,0,.12);box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#F2F6FC}.el-page-header{display:flex;line-height:24px}.el-page-header__left{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left::after{content:"";position:absolute;width:1px;height:16px;right:-20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#DCDFE6}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-weight:500;font-size:14px;cursor:pointer;user-select:none;margin-right:30px}.el-checkbox-button__inner,.el-empty__image img,.el-radio{-webkit-user-select:none;-moz-user-select:none;-ms-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:#FF6633}.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:#FF6633;border-color:#FF6633}.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);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#FF6633}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#FF6633}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#FFF;height:2px;-webkit-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);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:#FF6633}.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);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-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{display:inline-block;position:relative}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.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);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#FF6633}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-radio,.el-radio__input{line-height:1;white-space:nowrap;outline:0}.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-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#FFF;background-color:#FF6633;border-color:#FF6633;-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:#FF6633}.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:#FF6633}.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-radio,.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio{color:#606266;font-weight:500;cursor:pointer;margin-right:30px}.el-cascader-node>.el-radio,.el-radio:last-child{margin-right: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:#FF6633}.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__input{cursor:pointer;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:#FF6633;background:#FF6633}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#FF6633}.el-radio__input.is-focus .el-radio__inner{border-color:#FF6633}.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__inner:hover{border-color:#FF6633}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#FFF;content:"";position:absolute;left:50%;top:50%;-webkit-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;transition: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:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #FF6633;box-shadow:0 0 2px 2px #FF6633}.el-radio__label{font-size:14px;padding-left:10px}.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;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.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;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-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-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:4px;font-size:14px}.el-cascader-panel.is-bordered{border:1px solid #E4E7ED;border-radius:4px}.el-cascader-menu{min-width:180px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;border-right:solid 1px #E4E7ED}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;color:#C0C4CC}.el-cascader-node{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#FF6633;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#F5F7FA}.el-cascader-node.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden;color:#fff;background:#C0C4CC;width:40px;height:40px;line-height:40px;font-size:14px}.el-drawer,.el-drawer__body>*{-webkit-box-sizing:border-box}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-drawer,.el-drawer__header{display:-webkit-box;display:-ms-flexbox}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}.el-drawer.ltr,.el-drawer.rtl,.el-drawer__container{top:0;bottom:0;height:100%}@-webkit-keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@-webkit-keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@-webkit-keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@-webkit-keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}@keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}.el-drawer{position:absolute;box-sizing:border-box;background-color:#FFF;display:flex;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);overflow:hidden;outline:0}.el-drawer.rtl{-webkit-animation:rtl-drawer-out .3s;animation:rtl-drawer-out .3s;right:0}.el-drawer__open .el-drawer.rtl{-webkit-animation:rtl-drawer-in .3s 1ms;animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{-webkit-animation:ltr-drawer-out .3s;animation:ltr-drawer-out .3s;left:0}.el-drawer__open .el-drawer.ltr{-webkit-animation:ltr-drawer-in .3s 1ms;animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{-webkit-animation:ttb-drawer-out .3s;animation:ttb-drawer-out .3s;top:0}.el-drawer__open .el-drawer.ttb{-webkit-animation:ttb-drawer-in .3s 1ms;animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{-webkit-animation:btt-drawer-out .3s;animation:btt-drawer-out .3s;bottom:0}.el-drawer__open .el-drawer.btt{-webkit-animation:btt-drawer-in .3s 1ms;animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:20px 20px 0}.el-drawer__header>:first-child{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__title{margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto}.el-drawer__body>*{box-sizing:border-box}.el-drawer.btt,.el-drawer.ttb{width:100%;left:0;right:0}.el-drawer__container{position:relative;left:0;right:0;width:100%}.el-drawer-fade-enter-active{-webkit-animation:el-drawer-fade-in .3s;animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-popconfirm__main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0}@-webkit-keyframes el-skeleton-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}@keyframes el-skeleton-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{height:16px;margin-top:16px;background:#f2f2f2}.el-skeleton.is-animated .el-skeleton__item{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#f2f2f2),color-stop(37%,#e6e6e6),color-stop(63%,#f2f2f2));background:linear-gradient(90deg,#f2f2f2 25%,#e6e6e6 37%,#f2f2f2 63%);background-size:400% 100%;-webkit-animation:el-skeleton-loading 1.4s ease infinite;animation:el-skeleton-loading 1.4s ease infinite}.el-skeleton__item{background:#f2f2f2;display:inline-block;height:16px;border-radius:4px;width:100%}.el-skeleton__circle{border-radius:50%;width:36px;height:36px;line-height:36px}.el-skeleton__circle--lg{width:40px;height:40px;line-height:40px}.el-skeleton__circle--md{width:28px;height:28px;line-height:28px}.el-skeleton__button{height:40px;width:64px;border-radius:4px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:13px}.el-skeleton__caption{height:12px}.el-skeleton__h1{height:20px}.el-skeleton__h3{height:18px}.el-skeleton__h5{height:16px}.el-skeleton__image{width:unset;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;border-radius:0}.el-skeleton__image svg{fill:#DCDDE0;width:22%;height:22%}.el-empty{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;-ms-flex-direction:column;flex-direction:column;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;padding:40px 0}.el-empty__image{width:160px}.el-empty__image img,.el-empty__image svg{width:100%;height:100%;vertical-align:top}.el-empty__image img{user-select:none;-o-object-fit:contain;object-fit:contain}.el-empty__image svg{fill:#DCDDE0}.el-empty__description{margin-top:20px}.el-empty__description p{margin:0;font-size:14px;color:#909399}.el-empty__bottom{margin-top:20px} \ No newline at end of file diff --git a/nginx-1.18.0/html/hmdp/css/fonts/element-icons.ttf b/nginx-1.18.0/html/hmdp/css/fonts/element-icons.ttf new file mode 100644 index 0000000..91b74de Binary files /dev/null and b/nginx-1.18.0/html/hmdp/css/fonts/element-icons.ttf differ diff --git a/nginx-1.18.0/html/hmdp/css/fonts/element-icons.woff b/nginx-1.18.0/html/hmdp/css/fonts/element-icons.woff new file mode 100644 index 0000000..02b9a25 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/css/fonts/element-icons.woff differ diff --git a/nginx-1.18.0/html/hmdp/css/index.css b/nginx-1.18.0/html/hmdp/css/index.css new file mode 100644 index 0000000..2f4a07b --- /dev/null +++ b/nginx-1.18.0/html/hmdp/css/index.css @@ -0,0 +1,92 @@ +/*搜索框*/ +.search-bar{ + background-color: #ff6633; + color: white; + display: flex; + justify-content: space-around; + height: 7%; + align-items: center; + padding: 0 8px; +} +.header-icon{ + /*width: 2%;*/ + font-size: 14px; +} +.search-input{ + width: 70%; +} +.type-list { + height: 25%; + display: flex; + flex-wrap: wrap; + justify-content: space-around; + box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3); +} +.type-box{ + width: 17%; + text-align: center; +} +.type-box img { + width: 100%; +} +.type-text{ + color: #111; + font-size: 10px; + margin-top: -8px; + margin-bottom: 10px; +} + +/*达人探店列表*/ +.blog-list { + background-color: #eee; + width: 100%; + display: flex; + flex-wrap: wrap; + justify-content: space-around; + height: 60%; + overflow-y: auto; +} +.blog-box{ + width: 48%; + background-color: #fff; + margin: 5px 0; + box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); + border-radius: 3px; +} +.blog-img img{ + width: 100%; + border-radius: 3px; +} +.blog-title { + padding: 2px 10px; + height: 36px; + width: 92%; + overflow: hidden; +} +.blog-foot { + display: flex; + justify-content: space-between; + margin: 10px 0 5px 0; + padding: 0 10px; +} +.blog-user-icon { + width: 10%; + margin-right: 3px; +} +.blog-user-name { + width: 65%; + overflow: hidden; +} +.blog-user-icon img{ + width: 100%; +} +.blog-liked { + width: 25%; + display: flex; + justify-content: flex-end; +} +.blog-liked img{ + width: 30%; + height: 75%; + margin-right: 2px; +} diff --git a/nginx-1.18.0/html/hmdp/css/info.css b/nginx-1.18.0/html/hmdp/css/info.css new file mode 100644 index 0000000..cbea3c3 --- /dev/null +++ b/nginx-1.18.0/html/hmdp/css/info.css @@ -0,0 +1,232 @@ +.header{ + width: 100%; + line-height: 40px; + height: 6%; + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 2px solid #ff6633; +} +.header-back-btn{ + width: 10%; + color: #ff6633; + font-size: 22px; +} +.header-title { + width: 90%; + text-align: center; + font-size: 18px; + font-family: Hiragino Sans GB,Arial,Helvetica,"\5B8B\4F53",sans-serif; +} +.basic{ + height: 15%; + display: flex; + justify-content: space-between; + padding: 15px 15px 5px 15px; +} +.basic-icon { + width: 80px; + height: 80px; + padding: 1px; + background-color: #fff; + border-radius: 50%; + box-shadow: 0 0 3px 2px rgba(0, 0, 0, 0.07); +} +.basic-icon img { + border-radius: 50%; + width: 100%; + height: 100%; +} + +.basic-info { + width: 54%; + padding: 8px; +} +.basic-info .name{ + overflow: hidden; + font-weight: bold; + font-size: 14px; +} +.basic-info span{ + display: inline-block; + padding: 0 10px; + background-color: #eeeded; + margin: 5px 0 10px; + border-radius: 2px; + } + +.edit-btn{ + width: 90%; + line-height: 20px; + border-radius: 12px; + text-align: center; + border: #eeeded 1px solid; + box-shadow: 0 1px 2px 1px rgba(0, 0, 0, 0.04); +} +.logout-btn{ + width: 18%; + margin-top: 8px; + height: 20px; + line-height: 20px; + color: white; + padding: 0 2px; + border-radius: 3px; + background-color: #f63; + box-shadow: 0 1px 2px 1px rgba(0, 0, 0, 0.04); +} + +.introduce{ + padding: 0 15px; +} +.content { + height: 61%; +} + +.edit-container{ + background-color: #f4f4f4; +} +.divider { + height: 1px; + background-color: #e4e4e4; +} +.info-box { + margin-bottom: 10px; + padding: 5px 15px; + background-color: #fff; +} +.info-item{ + display: flex; + justify-content: space-between; + line-height: 40px; +} +.info-btn{ + display: flex; +} +.info-btn div { + margin-left: 5px; +} + +.blog-item { + display: flex; + padding: 10px; + height: 90px; + width: 90%; + box-shadow: 1px 1px 4px 1px rgba(0,0,0,0.1); + margin-bottom: 10px; +} +.blog-img { + width: 70px; + height: 90px; + margin-right: 10px; +} +.blog-img img { + width: 100%; + height: 100%; +} +.blog-info { + width: 50%; + flex-grow: 1; +} +.blog-title { + line-height: 20px; +} +.blog-liked { + line-height: 16px; + align-items: center; +} +.blog-liked img { + width: 16px; + height: 16px; +} +.blog-comments i { + font-size: 16px; +} + + +.follow-info{ + display: flex; + justify-content: space-between; + padding: 15px 10px 5px 10px; + align-items: center; +} +.follow-info-icon { + width: 15%; + padding: 1px; + background-color: #fff; + border-radius: 50%; + box-shadow: 0 0 3px 2px rgba(0, 0, 0, 0.07); +} +.follow-info-icon img { + border-radius: 50%; + width: 100%; + height: 100%; +} +.follow-info-name{ + width: 56%; + padding: 8px; + font-size: 14px; +} +.follow-info-btn{ + width: 30%; + font-size: 10px; + line-height: 20px; + height: 20px; + border: #ff6633 1px solid; + color: #ff6633; + border-radius: 5px; + text-align: center; +} + +/*达人探店列表*/ +.blog-list { + height: 100%; + width: 100%; + display: flex; + flex-wrap: wrap; + justify-content: space-around; + overflow-y: auto; +} +.blog-box{ + width: 90%; + background-color: #fff; + margin: 5px 0; + box-shadow: 0 3px 4px 1px rgba(0, 0, 0, 0.1); + border-radius: 3px; +} +.blog-img2 img{ + width: 100%; + border-radius: 3px; +} +.blog-title { + padding: 2px 10px; + line-height: 24px; + width: 92%; + overflow: hidden; +} +.blog-foot { + display: flex; + justify-content: space-between; + margin: 10px 0 5px 0; + padding: 0 10px; +} +.blog-user-icon { + width: 10%; + margin-right: 3px; +} +.blog-user-name { + width: 65%; + overflow: hidden; +} +.blog-user-icon img{ + width: 100%; +} +.blog-liked { + width: 25%; + display: flex; + justify-content: flex-end; +} +.blog-liked img{ + width: 30%; + height: 75%; + margin-right: 2px; +} diff --git a/nginx-1.18.0/html/hmdp/css/login.css b/nginx-1.18.0/html/hmdp/css/login.css new file mode 100644 index 0000000..1e2a63d --- /dev/null +++ b/nginx-1.18.0/html/hmdp/css/login.css @@ -0,0 +1,63 @@ +.login-container{ + height: 100%; +} +.header{ + width: 100%; + height: 7%; + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 2px solid #ff6633; +} +.header-back-btn{ + width: 10%; + color: #ff6633; + font-size: 22px; +} +.header-title { + width: 90%; + text-align: center; + font-size: 18px; + font-family: Hiragino Sans GB,Arial,Helvetica,"\5B8B\4F53",sans-serif; +} + +.content{ + height: 93%; + background-color: #f7f5f5; + padding: 10px; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.login-form { + height: 85%; +} +.login-radio { + height: 15%; + width: 100%; + display: flex; + align-items: start; +} +input[type="radio"] + label::before { + content: "\a0"; /*不换行空格*/ + display: inline-block; + vertical-align: middle; + font-size: 12px; + width: 0.7em; + height: 0.7em; + margin-right: .4em; + border-radius: 50%; + border: 2px solid #F63; + text-indent: .15em; + line-height: 1; + padding: .2em; +} +input[type="radio"]:checked + label::before { + background-color: #F63; + background-clip: content-box; + padding: .2em; +} +input[type="radio"] { + opacity: 0; +} \ No newline at end of file diff --git a/nginx-1.18.0/html/hmdp/css/main.css b/nginx-1.18.0/html/hmdp/css/main.css new file mode 100644 index 0000000..f506997 --- /dev/null +++ b/nginx-1.18.0/html/hmdp/css/main.css @@ -0,0 +1,59 @@ +html { + font-size: 12px; + width: 100%; +} +body{ + margin: 0; +} +html,body,#app{ + height: 100%; +} + +.el-tabs__item { + font-size: 14px; + font-weight: bold; +} +.el-tabs__active-bar { + height: 4px; + background-image: linear-gradient(to right, #F63, #f5b9a2); +} +.foot { + width: 100%; + height: 8%; + display: flex; + justify-content: center; + align-items: center; + box-shadow: 0 -1px 2px 1px rgba(0, 0, 0, 0.1); + position: absolute; + bottom: 0; +} +.foot .add-btn { + width: 38px; + height: 38px; + box-shadow: 0 0 3px 2px rgba(0, 0, 0, 0.1); + border-radius: 18px; +} +.foot-box{ + width: 20%; + color: #82848a; + text-align: center; +} +.foot-view { + font-size: 26px; +} +.foot-text{ + font-size: 8px; + margin-top: -4px; +} +.foot-text, .foot-view{ + text-align: center; +} +.active{ + color: #ff6633; +} + +/*element-ui的评价星星间隙*/ +.el-rate__icon { + margin-right: 0; +} + diff --git a/nginx-1.18.0/html/hmdp/css/shop-detail.css b/nginx-1.18.0/html/hmdp/css/shop-detail.css new file mode 100644 index 0000000..794a08b --- /dev/null +++ b/nginx-1.18.0/html/hmdp/css/shop-detail.css @@ -0,0 +1,320 @@ + +.header { + background-color: #fff; +} + +.top-bar { + height: 60px; +} + +.header { + width: 100%; + line-height: 40px; + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 2px solid #ff6633; + position: fixed; + top: 0; + z-index: 500; +} + +.header-back-btn { + width: 10%; + color: #ff6633; + font-size: 24px; + font-weight: bold; +} + +.header-title { + width: 80%; + text-align: center; + font-size: 18px; + font-family: Hiragino Sans GB, Arial, Helvetica, "\5B8B\4F53", sans-serif; +} + +.header-share { + width: 10%; + text-align: center; + font-size: 18px; + color: #82848a; + font-weight: bold; + font-family: Hiragino Sans GB, Arial, Helvetica, "\5B8B\4F53", sans-serif; +} + +.shop-title { + font-size: 20px; + font-weight: bold; + margin: 5px 0; +} + +.shop-rate { + margin: 5px 0; + display: flex; + justify-content: space-between; +} + +.shop-rate-info { + margin: 5px 0; + color: #82848a; +} + +.shop-info-box { + padding: 0 10px; +} + +.shop-rank { + margin: 5px 0; + display: flex; + width: 100%; +} + +.shop-rank span { + color: #B15E2C; + font-size: 11px; + background: linear-gradient( + -248deg, #FFEBCF 2%, #FFECDD 61%); + border-radius: 1px; + height: 20px; + line-height: 20px; + padding: 0 6px; +} + +.shop-rank div { + color: #5a5b5b; + font-size: 14px; + width: 45%; + text-align: end; +} + +.shop-images { + display: flex; + overflow-x: scroll; + padding: 5px 0; +} + +.shop-images img { + height: 106px; + width: 145px; + margin-right: 3px; + display: inline-block; + border-radius: 7px; + border: 1px solid #e1e1e1; +} + +.shop-address { + font-size: 14px; + color: #82848a; + height: 42px; + display: flex; + align-items: center; + padding: 5px 0; +} + +.shop-divider { + height: 10px; + background-color: #f3f1f1; +} + +.shop-open-time { + display: flex; + padding: 10px; + font-size: 14px; +} + +.shop-open-time div { + margin-right: 10px; +} + +.line-right { + width: 40px; + flex-grow: 1; + color: #82848a; + font-size: 12px; + text-align: right; +} + +.shop-voucher { + padding: 10px; +} + +.voucher-icon { + display: inline-block; + line-height: 16px; + background-color: #f5a966; + color: white; + padding: 0 4px 2px 4px; +} + +.voucher-box { + background-color: #fff1f1; + border-radius: 5px; + display: flex; + justify-content: space-between; + align-items: center; + padding: 5px; + margin: 10px 0; +} + +.voucher-circle { + display: flex; + flex-direction: column; + justify-content: space-around; + height: 80px; +} + +.voucher-b{ + height: 10px; + width: 10px; + background-color: #fff; + border-radius: 50%; +} + +.voucher-left { + flex-grow: 1; + margin-left: 15px; +} + +.voucher-right { + margin-right: 15px; +} + +.voucher-title, .voucher-subtitle, .voucher-price { + padding: 5px 0; +} + +.voucher-title { + font-weight: bold; +} + +.voucher-subtitle { + color: #82848a; +} + +.voucher-price { + color: #F63; + display: flex; + align-items: center; +} + +.voucher-price div { + font-weight: bold; + font-size: 14px; +} + +.voucher-price span { + margin-left: 10px; + font-size: 10px; + padding: 0 5px; + line-height: 10px; + background-color: #fce5e5; +} + +.voucher-btn { + background-color: #ff6633; + color: white; + font-size: 14px; + line-height: 30px; + width: 65px; + text-align: center; + border-radius: 15px; +} +.seckill-box{ + display: flex; + flex-direction: column; + align-items: flex-end; + font-size: 12px; + padding: 15px 0 0 0; +} +.seckill-box div{ + font-size: 12px; +} +.disable-btn{ + background-color: #adacab; +} +.seckill-time{ + color: #F63; +} +.seckill-stock { + color: #adacab; +} +.seckill-stock span{ + background-color: #fce5e5; + color: rgb(240, 51, 51); +} +.copyright { + color: #d1d1d1; + margin-top: 20px; + text-shadow: 0 1px 1px #fff; + text-align: center; +} +.shop-comments { + padding: 10px; +} +.comments-head { + display: flex; + justify-content: space-between; + font-size: 14px; + font-weight: bold; +} +.comments-head span { + font-size: 12px; + font-weight: normal; + color: #82848a; +} +.comment-tags { + display: flex; + flex-wrap: wrap; + justify-content: space-between; +} +.comment-tags div { + width: 25%; + border: 1px solid #427fc4; + border-radius: 5px; + text-align: center; + color: #427fc4; + padding: 5px 10px; + margin-top: 7px; +} +.comment-list { + margin-top: 15px; +} +.comment-box { + display: flex; + justify-content: space-between; + margin-bottom: 15px; +} +.comment-icon { + width: 55px; +} +.comment-icon img{ + width: 48px; + height: 48px; + border-radius: 50%; +} +.comment-info { + width: 80%; + flex-grow: 1; +} +.comment-user { + font-size: 14px; +} +.comment-user span { + font-size: 10px; + padding: 0 10px; + border-radius: 8px; + background-color: #f7b253; + color: white; +} +.comment-images { + display: flex; + width: 100%; + overflow-x: scroll; + padding: 10px 0; +} +.comment-images img { + height: 94px; + width: 92px; + border-radius: 5px; + margin-right: 5px; +} \ No newline at end of file diff --git a/nginx-1.18.0/html/hmdp/css/shop-list.css b/nginx-1.18.0/html/hmdp/css/shop-list.css new file mode 100644 index 0000000..d87f870 --- /dev/null +++ b/nginx-1.18.0/html/hmdp/css/shop-list.css @@ -0,0 +1,102 @@ + +.header,.sort-bar,.shop-list { + background-color: #fff; +} +#app{ + background-color: #f1f1f1; +} +.header{ + width: 100%; + height: 7%; + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 2px solid #ff6633; +} +.header-back-btn{ + width: 10%; + color: #ff6633; + font-size: 24px; + font-weight: bold; +} +.header-title { + width: 80%; + text-align: center; + font-size: 18px; + font-family: Hiragino Sans GB,Arial,Helvetica,"\5B8B\4F53",sans-serif; +} +.header-search { + width: 10%; + text-align: center; + font-size: 18px; + color: #ff6633; +} +.el-dropdown,.el-dropdown-menu__item { + font-size: 12px; + line-height: 20px; +} +.sort-bar { + display: flex; + justify-content: space-around; + height: 6%; + align-items: center; + margin-bottom: 5px; +} +.sort-item { + width: 20%; + text-align: center; + font-size: 12px; +} +.shop-list{ + height: 87%; + background-color: #f1f1f1; + overflow-y: auto; +} +.shop-box { + display: flex; + padding: 10px; + margin-bottom: 5px; + border-radius: 3px; + background-color: #fff; +} +.shop-img { + text-align: center; + padding: 5px; +} +.shop-img img{ + width: 95px; + height: 95px; + border-radius: 5px; +} +.shop-info { + width: 65%; +} +.shop-title { + font-weight: bold; + font-size: 14px; +} +.shop-rate { + display: flex; + justify-content: space-between; +} + +.shop-area { + color: #6f6f71; + display: flex; + justify-content: space-between; +} +.shop-item { + line-height: 20px; + align-items: center; +} +.shop-address{ + display: flex; +} +.shop-address i{ + color: #6c6767; +} +.shop-address span{ + height: 20px; + line-height: 20px; + overflow: hidden; +} \ No newline at end of file diff --git a/nginx-1.18.0/html/hmdp/favicon.ico b/nginx-1.18.0/html/hmdp/favicon.ico new file mode 100644 index 0000000..5afd549 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/favicon.ico differ diff --git a/nginx-1.18.0/html/hmdp/imgs/add.png b/nginx-1.18.0/html/hmdp/imgs/add.png new file mode 100644 index 0000000..dbf6db5 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/add.png differ diff --git a/nginx-1.18.0/html/hmdp/imgs/bd.png b/nginx-1.18.0/html/hmdp/imgs/bd.png new file mode 100644 index 0000000..d5fc81a Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/bd.png differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/0/0/feb2a83e-5646-46c0-a982-5e43fed31b22.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/0/0/feb2a83e-5646-46c0-a982-5e43fed31b22.jpg new file mode 100644 index 0000000..0e17ea3 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/0/0/feb2a83e-5646-46c0-a982-5e43fed31b22.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/0/5/e3e7c9e7-6654-4065-b47a-b86eb4541c33.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/0/5/e3e7c9e7-6654-4065-b47a-b86eb4541c33.jpg new file mode 100644 index 0000000..2ab732d Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/0/5/e3e7c9e7-6654-4065-b47a-b86eb4541c33.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/1/12/ab329e30-b4e1-446e-993b-b00be783f142.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/1/12/ab329e30-b4e1-446e-993b-b00be783f142.jpg new file mode 100644 index 0000000..0e17ea3 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/1/12/ab329e30-b4e1-446e-993b-b00be783f142.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/1/2/38f7e67d-7b26-41fd-bcf5-eebf71914230.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/1/2/38f7e67d-7b26-41fd-bcf5-eebf71914230.jpg new file mode 100644 index 0000000..0e17ea3 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/1/2/38f7e67d-7b26-41fd-bcf5-eebf71914230.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/1/2/4a7b496b-2a08-4af7-aa95-df2c3bd0ef97.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/1/2/4a7b496b-2a08-4af7-aa95-df2c3bd0ef97.jpg new file mode 100644 index 0000000..d28fc77 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/1/2/4a7b496b-2a08-4af7-aa95-df2c3bd0ef97.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/1/2/f052df92-fc05-41a6-866e-d6da63b27645.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/1/2/f052df92-fc05-41a6-866e-d6da63b27645.jpg new file mode 100644 index 0000000..aa4636c Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/1/2/f052df92-fc05-41a6-866e-d6da63b27645.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/10/7/7e97f47d-eb49-4dc9-a583-95faa7aed287.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/10/7/7e97f47d-eb49-4dc9-a583-95faa7aed287.jpg new file mode 100644 index 0000000..f95ddf9 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/10/7/7e97f47d-eb49-4dc9-a583-95faa7aed287.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/11/12/8b37d208-9414-4e78-b065-9199647bb3e3.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/11/12/8b37d208-9414-4e78-b065-9199647bb3e3.jpg new file mode 100644 index 0000000..f80a0c9 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/11/12/8b37d208-9414-4e78-b065-9199647bb3e3.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/11/4/fbfe0547-bd5d-454c-98c4-411e2e0dce65.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/11/4/fbfe0547-bd5d-454c-98c4-411e2e0dce65.jpg new file mode 100644 index 0000000..aa4636c Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/11/4/fbfe0547-bd5d-454c-98c4-411e2e0dce65.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/11/8/ca9ba6e6-068a-4a09-8b12-5719f86d270c.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/11/8/ca9ba6e6-068a-4a09-8b12-5719f86d270c.jpg new file mode 100644 index 0000000..0e17ea3 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/11/8/ca9ba6e6-068a-4a09-8b12-5719f86d270c.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/12/1/1afd01e5-0e16-43c2-b655-4bf733f95cfc.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/12/1/1afd01e5-0e16-43c2-b655-4bf733f95cfc.jpg new file mode 100644 index 0000000..6d4164c Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/12/1/1afd01e5-0e16-43c2-b655-4bf733f95cfc.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/12/9/aab78497-ec7a-46da-820a-0ee0bbe103a3.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/12/9/aab78497-ec7a-46da-820a-0ee0bbe103a3.jpg new file mode 100644 index 0000000..aa4636c Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/12/9/aab78497-ec7a-46da-820a-0ee0bbe103a3.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/13/1/6b091b4c-7870-4df8-9b21-5db9852db005.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/13/1/6b091b4c-7870-4df8-9b21-5db9852db005.jpg new file mode 100644 index 0000000..c97c610 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/13/1/6b091b4c-7870-4df8-9b21-5db9852db005.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/13/4/1bb3d189-a34a-4809-b062-323cda7d19a9.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/13/4/1bb3d189-a34a-4809-b062-323cda7d19a9.jpg new file mode 100644 index 0000000..aa4636c Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/13/4/1bb3d189-a34a-4809-b062-323cda7d19a9.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/14/13/2ec4622e-de82-4bb3-9acf-33b589850cd2.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/14/13/2ec4622e-de82-4bb3-9acf-33b589850cd2.jpg new file mode 100644 index 0000000..6d4164c Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/14/13/2ec4622e-de82-4bb3-9acf-33b589850cd2.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/14/13/31bc9613-3637-4a36-9082-e37ce0909cbd.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/14/13/31bc9613-3637-4a36-9082-e37ce0909cbd.jpg new file mode 100644 index 0000000..6d4164c Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/14/13/31bc9613-3637-4a36-9082-e37ce0909cbd.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/14/3/52b290eb-8b5d-403b-8373-ba0bb856d18e.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/14/3/52b290eb-8b5d-403b-8373-ba0bb856d18e.jpg new file mode 100644 index 0000000..0b778ed Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/14/3/52b290eb-8b5d-403b-8373-ba0bb856d18e.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/15/0/b61bf453-28fc-4824-84c8-783803464c4f.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/15/0/b61bf453-28fc-4824-84c8-783803464c4f.jpg new file mode 100644 index 0000000..c97c610 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/15/0/b61bf453-28fc-4824-84c8-783803464c4f.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/15/3/fd5802b1-d4a5-4e45-badd-05cbc46c8c3d.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/15/3/fd5802b1-d4a5-4e45-badd-05cbc46c8c3d.jpg new file mode 100644 index 0000000..c97c610 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/15/3/fd5802b1-d4a5-4e45-badd-05cbc46c8c3d.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/15/9/cea51d9b-ac15-49f6-b9f1-9cf81e9b9c85.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/15/9/cea51d9b-ac15-49f6-b9f1-9cf81e9b9c85.jpg new file mode 100644 index 0000000..2f657be Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/15/9/cea51d9b-ac15-49f6-b9f1-9cf81e9b9c85.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/2/1/7b31a5da-4ee3-4c9e-a38a-2dbc8de0345a.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/2/1/7b31a5da-4ee3-4c9e-a38a-2dbc8de0345a.jpg new file mode 100644 index 0000000..c97c610 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/2/1/7b31a5da-4ee3-4c9e-a38a-2dbc8de0345a.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/2/2/852f49b7-432c-4d01-b7b1-8e152854f2a9.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/2/2/852f49b7-432c-4d01-b7b1-8e152854f2a9.jpg new file mode 100644 index 0000000..c97c610 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/2/2/852f49b7-432c-4d01-b7b1-8e152854f2a9.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/2/3/39d65be4-af94-458d-b6de-bc8ca20735bb.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/2/3/39d65be4-af94-458d-b6de-bc8ca20735bb.jpg new file mode 100644 index 0000000..add3d1a Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/2/3/39d65be4-af94-458d-b6de-bc8ca20735bb.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/2/4/7ed91c85-975a-40dd-9f36-abb2e87a1155.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/2/4/7ed91c85-975a-40dd-9f36-abb2e87a1155.jpg new file mode 100644 index 0000000..add3d1a Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/2/4/7ed91c85-975a-40dd-9f36-abb2e87a1155.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/2/6/b0756279-65da-4f2d-b62a-33f74b06454a.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/2/6/b0756279-65da-4f2d-b62a-33f74b06454a.jpg new file mode 100644 index 0000000..8c6b0d5 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/2/6/b0756279-65da-4f2d-b62a-33f74b06454a.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/3/12/9b19dd28-1eb1-4b70-bdc2-95544eecfeb2.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/3/12/9b19dd28-1eb1-4b70-bdc2-95544eecfeb2.jpg new file mode 100644 index 0000000..67f62bb Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/3/12/9b19dd28-1eb1-4b70-bdc2-95544eecfeb2.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/3/14/a6b9ec21-6708-4d6d-8f77-ed31c856e5b2.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/3/14/a6b9ec21-6708-4d6d-8f77-ed31c856e5b2.jpg new file mode 100644 index 0000000..ed78392 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/3/14/a6b9ec21-6708-4d6d-8f77-ed31c856e5b2.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/3/15/af0db3fa-5cf9-4eeb-a9fe-938de64bddc6.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/3/15/af0db3fa-5cf9-4eeb-a9fe-938de64bddc6.jpg new file mode 100644 index 0000000..37ac491 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/3/15/af0db3fa-5cf9-4eeb-a9fe-938de64bddc6.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/4/0/26a7cd7e-6320-432c-a0b4-1b7418f45ec7.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/4/0/26a7cd7e-6320-432c-a0b4-1b7418f45ec7.jpg new file mode 100644 index 0000000..57557b9 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/4/0/26a7cd7e-6320-432c-a0b4-1b7418f45ec7.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/4/1/fa74a6d6-3026-4cb7-b0b6-35abb1e52d11.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/4/1/fa74a6d6-3026-4cb7-b0b6-35abb1e52d11.jpg new file mode 100644 index 0000000..81a0aea Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/4/1/fa74a6d6-3026-4cb7-b0b6-35abb1e52d11.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/4/10/2f07e3c9-ddce-482d-9ea7-c21450f8d7cd.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/4/10/2f07e3c9-ddce-482d-9ea7-c21450f8d7cd.jpg new file mode 100644 index 0000000..d141ca8 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/4/10/2f07e3c9-ddce-482d-9ea7-c21450f8d7cd.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/4/7/863cc302-d150-420d-a596-b16e9232a1a6.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/4/7/863cc302-d150-420d-a596-b16e9232a1a6.jpg new file mode 100644 index 0000000..bc1ac95 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/4/7/863cc302-d150-420d-a596-b16e9232a1a6.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/5/2/fdc6cbb0-ddc5-4525-884a-9e88f07cf2d8.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/5/2/fdc6cbb0-ddc5-4525-884a-9e88f07cf2d8.jpg new file mode 100644 index 0000000..c97c610 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/5/2/fdc6cbb0-ddc5-4525-884a-9e88f07cf2d8.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/6/0/081b4b46-b2c0-47b1-8e2a-8f620d0307fb.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/6/0/081b4b46-b2c0-47b1-8e2a-8f620d0307fb.jpg new file mode 100644 index 0000000..add3d1a Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/6/0/081b4b46-b2c0-47b1-8e2a-8f620d0307fb.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/6/8/5593ee62-04e1-410a-b6a7-4c1d50d2aee2.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/6/8/5593ee62-04e1-410a-b6a7-4c1d50d2aee2.jpg new file mode 100644 index 0000000..aa4636c Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/6/8/5593ee62-04e1-410a-b6a7-4c1d50d2aee2.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/7/1/6f4c2442-1d3b-436f-8d49-cc704f9f0bf8.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/7/1/6f4c2442-1d3b-436f-8d49-cc704f9f0bf8.jpg new file mode 100644 index 0000000..37ac491 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/7/1/6f4c2442-1d3b-436f-8d49-cc704f9f0bf8.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/7/14/4771fefb-1a87-4252-816c-9f7ec41ffa4a.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/7/14/4771fefb-1a87-4252-816c-9f7ec41ffa4a.jpg new file mode 100644 index 0000000..ed78392 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/7/14/4771fefb-1a87-4252-816c-9f7ec41ffa4a.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/7/3/2f6769c9-21de-42f8-adc0-77873273997f.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/7/3/2f6769c9-21de-42f8-adc0-77873273997f.jpg new file mode 100644 index 0000000..add3d1a Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/7/3/2f6769c9-21de-42f8-adc0-77873273997f.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/9/12/ac2ce2fb-0605-4f14-82cc-c962b8c86688.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/9/12/ac2ce2fb-0605-4f14-82cc-c962b8c86688.jpg new file mode 100644 index 0000000..56d439c Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/9/12/ac2ce2fb-0605-4f14-82cc-c962b8c86688.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/blogs/blog1.jpg b/nginx-1.18.0/html/hmdp/imgs/blogs/blog1.jpg new file mode 100644 index 0000000..9ebacf8 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/blogs/blog1.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/icons/default-icon.png b/nginx-1.18.0/html/hmdp/imgs/icons/default-icon.png new file mode 100644 index 0000000..b233df8 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/icons/default-icon.png differ diff --git a/nginx-1.18.0/html/hmdp/imgs/icons/icon1.jpg b/nginx-1.18.0/html/hmdp/imgs/icons/icon1.jpg new file mode 100644 index 0000000..445502d Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/icons/icon1.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/icons/kkjtbcr.jpg b/nginx-1.18.0/html/hmdp/imgs/icons/kkjtbcr.jpg new file mode 100644 index 0000000..99842e3 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/icons/kkjtbcr.jpg differ diff --git a/nginx-1.18.0/html/hmdp/imgs/icons/user5-icon.png b/nginx-1.18.0/html/hmdp/imgs/icons/user5-icon.png new file mode 100644 index 0000000..68fdade Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/icons/user5-icon.png differ diff --git a/nginx-1.18.0/html/hmdp/imgs/thumbup.png b/nginx-1.18.0/html/hmdp/imgs/thumbup.png new file mode 100644 index 0000000..61d0296 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/thumbup.png differ diff --git a/nginx-1.18.0/html/hmdp/imgs/types/KTV.png b/nginx-1.18.0/html/hmdp/imgs/types/KTV.png new file mode 100644 index 0000000..d40242b Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/types/KTV.png differ diff --git a/nginx-1.18.0/html/hmdp/imgs/types/amzl.png b/nginx-1.18.0/html/hmdp/imgs/types/amzl.png new file mode 100644 index 0000000..0ffa9ea Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/types/amzl.png differ diff --git a/nginx-1.18.0/html/hmdp/imgs/types/hpg.png b/nginx-1.18.0/html/hmdp/imgs/types/hpg.png new file mode 100644 index 0000000..6c0193a Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/types/hpg.png differ diff --git a/nginx-1.18.0/html/hmdp/imgs/types/jiuba.png b/nginx-1.18.0/html/hmdp/imgs/types/jiuba.png new file mode 100644 index 0000000..e63de13 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/types/jiuba.png differ diff --git a/nginx-1.18.0/html/hmdp/imgs/types/jsyd.png b/nginx-1.18.0/html/hmdp/imgs/types/jsyd.png new file mode 100644 index 0000000..a792ee0 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/types/jsyd.png differ diff --git a/nginx-1.18.0/html/hmdp/imgs/types/lrmf.png b/nginx-1.18.0/html/hmdp/imgs/types/lrmf.png new file mode 100644 index 0000000..2197c38 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/types/lrmf.png differ diff --git a/nginx-1.18.0/html/hmdp/imgs/types/mjmj.png b/nginx-1.18.0/html/hmdp/imgs/types/mjmj.png new file mode 100644 index 0000000..07125fb Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/types/mjmj.png differ diff --git a/nginx-1.18.0/html/hmdp/imgs/types/ms.png b/nginx-1.18.0/html/hmdp/imgs/types/ms.png new file mode 100644 index 0000000..079ff05 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/types/ms.png differ diff --git a/nginx-1.18.0/html/hmdp/imgs/types/qzyl.png b/nginx-1.18.0/html/hmdp/imgs/types/qzyl.png new file mode 100644 index 0000000..2bca451 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/types/qzyl.png differ diff --git a/nginx-1.18.0/html/hmdp/imgs/types/spa.png b/nginx-1.18.0/html/hmdp/imgs/types/spa.png new file mode 100644 index 0000000..cf19f50 Binary files /dev/null and b/nginx-1.18.0/html/hmdp/imgs/types/spa.png differ diff --git a/nginx-1.18.0/html/hmdp/index.html b/nginx-1.18.0/html/hmdp/index.html new file mode 100644 index 0000000..ca7c3a0 --- /dev/null +++ b/nginx-1.18.0/html/hmdp/index.html @@ -0,0 +1,139 @@ + + + + + + 黑马点评 + + + + + + + + + +
+ +
+
+
+
{{t.name}}
+
+
+
+
+
+
{{b.title}}
+
+
+
{{b.name}}
+
+ + + + {{b.liked}} +
+
+
+
+ +
+ + + + + + + + + \ No newline at end of file diff --git a/nginx-1.18.0/html/hmdp/info-edit.html b/nginx-1.18.0/html/hmdp/info-edit.html new file mode 100644 index 0000000..b0f67f7 --- /dev/null +++ b/nginx-1.18.0/html/hmdp/info-edit.html @@ -0,0 +1,136 @@ + + + + + + 黑马点评 + + + + + + + + +
+
+
+
资料编辑   
+
+
+
+
+
头像
+
+ +
+
+
+
+
+
昵称
+
+
{{user.nickName}}
+
+ +
+
+
+
+
+
个人介绍
+
+
{{info.introduce || '介绍一下自己'}}
+
+ +
+
+
+
+
+
+
性别
+
+
{{info.gender || '选择'}}
+
+
+
+
+
+
城市
+
+
{{info.city || '选择'}}
+
+
+
+
+
+
生日
+
+
{{info.birthday || '添加'}}
+
+
+
+
+ +
+
+
我的积分
+
+
查看积分
+
+
+
+
+
+
会员等级
+ +
+
+
+ +
+ + + + + + + + + \ No newline at end of file diff --git a/nginx-1.18.0/html/hmdp/info.html b/nginx-1.18.0/html/hmdp/info.html new file mode 100644 index 0000000..f613e72 --- /dev/null +++ b/nginx-1.18.0/html/hmdp/info.html @@ -0,0 +1,243 @@ + + + + + + + 黑马点评 + + + + + + + + + + +
+
+
+
个人主页   
+
+
+
+ +
+
+
{{user.nickName}}
+ 杭州 +
+ 编辑资料 +
+
+
+ 退出登录 +
+
+
+ + 添加个人简介,让大家更好的认识你 +
+
+ + +
+
+
+
{{b.title}}
+
{{b.liked}}
+
{{b.comments}}
+
+
+
+ 评价 + 粉丝(0) + +
+
+
+
{{b.title}}
+
+
+
{{b.name}}
+
+ + + + {{b.liked}} +
+
+
+
+
+
+
+ +
+ + + + + + + + + + \ No newline at end of file diff --git a/nginx-1.18.0/html/hmdp/js/axios.min.js b/nginx-1.18.0/html/hmdp/js/axios.min.js new file mode 100644 index 0000000..58892d3 --- /dev/null +++ b/nginx-1.18.0/html/hmdp/js/axios.min.js @@ -0,0 +1,9 @@ +/* axios v0.18.0 | (c) 2018 by Matt Zabriskie */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.axios=t():e.axios=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function r(e){var t=new s(e),n=i(s.prototype.request,t);return o.extend(n,s.prototype,t),o.extend(n,t),n}var o=n(2),i=n(3),s=n(5),u=n(6),a=r(u);a.Axios=s,a.create=function(e){return r(o.merge(u,e))},a.Cancel=n(23),a.CancelToken=n(24),a.isCancel=n(20),a.all=function(e){return Promise.all(e)},a.spread=n(25),e.exports=a,e.exports.default=a},function(e,t,n){"use strict";function r(e){return"[object Array]"===R.call(e)}function o(e){return"[object ArrayBuffer]"===R.call(e)}function i(e){return"undefined"!=typeof FormData&&e instanceof FormData}function s(e){var t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function u(e){return"string"==typeof e}function a(e){return"number"==typeof e}function c(e){return"undefined"==typeof e}function f(e){return null!==e&&"object"==typeof e}function p(e){return"[object Date]"===R.call(e)}function d(e){return"[object File]"===R.call(e)}function l(e){return"[object Blob]"===R.call(e)}function h(e){return"[object Function]"===R.call(e)}function m(e){return f(e)&&h(e.pipe)}function y(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams}function w(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function g(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function v(e,t){if(null!==e&&"undefined"!=typeof e)if("object"!=typeof e&&(e=[e]),r(e))for(var n=0,o=e.length;n + * @license MIT + */ + e.exports=function(e){return null!=e&&(n(e)||r(e)||!!e._isBuffer)}},function(e,t,n){"use strict";function r(e){this.defaults=e,this.interceptors={request:new s,response:new s}}var o=n(6),i=n(2),s=n(17),u=n(18);r.prototype.request=function(e){"string"==typeof e&&(e=i.merge({url:arguments[0]},arguments[1])),e=i.merge(o,{method:"get"},this.defaults,e),e.method=e.method.toLowerCase();var t=[u,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},i.forEach(["delete","get","head","options"],function(e){r.prototype[e]=function(t,n){return this.request(i.merge(n||{},{method:e,url:t}))}}),i.forEach(["post","put","patch"],function(e){r.prototype[e]=function(t,n,r){return this.request(i.merge(r||{},{method:e,url:t,data:n}))}}),e.exports=r},function(e,t,n){"use strict";function r(e,t){!i.isUndefined(e)&&i.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function o(){var e;return"undefined"!=typeof XMLHttpRequest?e=n(8):"undefined"!=typeof process&&(e=n(8)),e}var i=n(2),s=n(7),u={"Content-Type":"application/x-www-form-urlencoded"},a={adapter:o(),transformRequest:[function(e,t){return s(t,"Content-Type"),i.isFormData(e)||i.isArrayBuffer(e)||i.isBuffer(e)||i.isStream(e)||i.isFile(e)||i.isBlob(e)?e:i.isArrayBufferView(e)?e.buffer:i.isURLSearchParams(e)?(r(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):i.isObject(e)?(r(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300}};a.headers={common:{Accept:"application/json, text/plain, */*"}},i.forEach(["delete","get","head"],function(e){a.headers[e]={}}),i.forEach(["post","put","patch"],function(e){a.headers[e]=i.merge(u)}),e.exports=a},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){"use strict";var r=n(2),o=n(9),i=n(12),s=n(13),u=n(14),a=n(10),c="undefined"!=typeof window&&window.btoa&&window.btoa.bind(window)||n(15);e.exports=function(e){return new Promise(function(t,f){var p=e.data,d=e.headers;r.isFormData(p)&&delete d["Content-Type"];var l=new XMLHttpRequest,h="onreadystatechange",m=!1;if("undefined"==typeof window||!window.XDomainRequest||"withCredentials"in l||u(e.url)||(l=new window.XDomainRequest,h="onload",m=!0,l.onprogress=function(){},l.ontimeout=function(){}),e.auth){var y=e.auth.username||"",w=e.auth.password||"";d.Authorization="Basic "+c(y+":"+w)}if(l.open(e.method.toUpperCase(),i(e.url,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,l[h]=function(){if(l&&(4===l.readyState||m)&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in l?s(l.getAllResponseHeaders()):null,r=e.responseType&&"text"!==e.responseType?l.response:l.responseText,i={data:r,status:1223===l.status?204:l.status,statusText:1223===l.status?"No Content":l.statusText,headers:n,config:e,request:l};o(t,f,i),l=null}},l.onerror=function(){f(a("Network Error",e,null,l)),l=null},l.ontimeout=function(){f(a("timeout of "+e.timeout+"ms exceeded",e,"ECONNABORTED",l)),l=null},r.isStandardBrowserEnv()){var g=n(16),v=(e.withCredentials||u(e.url))&&e.xsrfCookieName?g.read(e.xsrfCookieName):void 0;v&&(d[e.xsrfHeaderName]=v)}if("setRequestHeader"in l&&r.forEach(d,function(e,t){"undefined"==typeof p&&"content-type"===t.toLowerCase()?delete d[t]:l.setRequestHeader(t,e)}),e.withCredentials&&(l.withCredentials=!0),e.responseType)try{l.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then(function(e){l&&(l.abort(),f(e),l=null)}),void 0===p&&(p=null),l.send(p)})}},function(e,t,n){"use strict";var r=n(10);e.exports=function(e,t,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},function(e,t,n){"use strict";var r=n(11);e.exports=function(e,t,n,o,i){var s=new Error(e);return r(s,t,n,o,i)}},function(e,t){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e}},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var o=n(2);e.exports=function(e,t,n){if(!t)return e;var i;if(n)i=n(t);else if(o.isURLSearchParams(t))i=t.toString();else{var s=[];o.forEach(t,function(e,t){null!==e&&"undefined"!=typeof e&&(o.isArray(e)?t+="[]":e=[e],o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),s.push(r(t)+"="+r(e))}))}),i=s.join("&")}return i&&(e+=(e.indexOf("?")===-1?"?":"&")+i),e}},function(e,t,n){"use strict";var r=n(2),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,i,s={};return e?(r.forEach(e.split("\n"),function(e){if(i=e.indexOf(":"),t=r.trim(e.substr(0,i)).toLowerCase(),n=r.trim(e.substr(i+1)),t){if(s[t]&&o.indexOf(t)>=0)return;"set-cookie"===t?s[t]=(s[t]?s[t]:[]).concat([n]):s[t]=s[t]?s[t]+", "+n:n}}),s):s}},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},function(e,t){"use strict";function n(){this.message="String contains an invalid character"}function r(e){for(var t,r,i=String(e),s="",u=0,a=o;i.charAt(0|u)||(a="=",u%1);s+=a.charAt(63&t>>8-u%1*8)){if(r=i.charCodeAt(u+=.75),r>255)throw new n;t=t<<8|r}return s}var o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";n.prototype=new Error,n.prototype.code=5,n.prototype.name="InvalidCharacterError",e.exports=r},function(e,t,n){"use strict";var r=n(2);e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,i,s){var u=[];u.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&u.push("expires="+new Date(n).toGMTString()),r.isString(o)&&u.push("path="+o),r.isString(i)&&u.push("domain="+i),s===!0&&u.push("secure"),document.cookie=u.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},function(e,t,n){"use strict";function r(){this.handlers=[]}var o=n(2);r.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){o.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=r},function(e,t,n){"use strict";function r(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var o=n(2),i=n(19),s=n(20),u=n(6),a=n(21),c=n(22);e.exports=function(e){r(e),e.baseURL&&!a(e.url)&&(e.url=c(e.baseURL,e.url)),e.headers=e.headers||{},e.data=i(e.data,e.headers,e.transformRequest),e.headers=o.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),o.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]});var t=e.adapter||u.adapter;return t(e).then(function(t){return r(e),t.data=i(t.data,t.headers,e.transformResponse),t},function(t){return s(t)||(r(e),t&&t.response&&(t.response.data=i(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},function(e,t){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t){"use strict";function n(e){this.message=e}n.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},n.prototype.__CANCEL__=!0,e.exports=n},function(e,t,n){"use strict";function r(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new o(e),t(n.reason))})}var o=n(23);r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var e,t=new r(function(t){e=t});return{token:t,cancel:e}},e.exports=r},function(e,t){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}}])}); +//# sourceMappingURL=axios.min.map \ No newline at end of file diff --git a/nginx-1.18.0/html/hmdp/js/common.js b/nginx-1.18.0/html/hmdp/js/common.js new file mode 100644 index 0000000..8513d80 --- /dev/null +++ b/nginx-1.18.0/html/hmdp/js/common.js @@ -0,0 +1,105 @@ +// let commonURL = "http://192.168.50.115:8081"; +let commonURL = "/api"; +// 设置后台服务地址 +axios.defaults.baseURL = commonURL; +axios.defaults.timeout = 2000; +// request拦截器,将用户token放入头中 +let token = sessionStorage.getItem("token"); +axios.interceptors.request.use( + config => { + if(token) config.headers['authorization'] = token + return config + }, + error => { + console.log(error) + return Promise.reject(error) + } +) +axios.interceptors.response.use(function (response) { + // 判断执行结果 + if (!response.data.success) { + return Promise.reject(response.data.errorMsg) + } + return response.data; +}, function (error) { + // 一般是服务端异常或者网络异常 + console.log(error) + if(error.response.status == 401){ + // 未登录,跳转 + setTimeout(() => { + location.href = "/login.html" + }, 200); + return Promise.reject("请先登录"); + } + return Promise.reject("服务器异常"); +}); +axios.defaults.paramsSerializer = function(params) { + let p = ""; + Object.keys(params).forEach(k => { + if(params[k]){ + p = p + "&" + k + "=" + params[k] + } + }) + return p; +} +const util = { + commonURL, + getUrlParam(name) { + let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); + let r = window.location.search.substr(1).match(reg); + if (r != null) { + return decodeURI(r[2]); + } + return ""; + }, + formatPrice(val) { + if (typeof val === 'string') { + if (isNaN(val)) { + return null; + } + // 价格转为整数 + const index = val.lastIndexOf("."); + let p = ""; + if (index < 0) { + // 无小数 + p = val + "00"; + } else if (index === p.length - 2) { + // 1位小数 + p = val.replace("\.", "") + "0"; + } else { + // 2位小数 + p = val.replace("\.", "") + } + return parseInt(p); + } else if (typeof val === 'number') { + if (!val) { + return null; + } + const s = val + ''; + if (s.length === 0) { + return "0.00"; + } + if (s.length === 1) { + return "0.0" + val; + } + if (s.length === 2) { + return "0." + val; + } + const i = s.indexOf("."); + if (i < 0) { + return s.substring(0, s.length - 2) + "." + s.substring(s.length - 2) + } + const num = s.substring(0, i) + s.substring(i + 1); + if (i === 1) { + // 1位整数 + return "0.0" + num; + } + if (i === 2) { + return "0." + num; + } + if (i > 2) { + return num.substring(0, i - 2) + "." + num.substring(i - 2) + } + } + } +} diff --git a/nginx-1.18.0/html/hmdp/js/element.js b/nginx-1.18.0/html/hmdp/js/element.js new file mode 100644 index 0000000..fed4769 --- /dev/null +++ b/nginx-1.18.0/html/hmdp/js/element.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("vue")):"function"==typeof define&&define.amd?define("ELEMENT",["vue"],t):"object"==typeof exports?exports.ELEMENT=t(require("vue")):e.ELEMENT=t(e.Vue)}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i(i.s=49)}([function(t,i){t.exports=e},function(e,t,i){var n=i(4);e.exports=function(e,t,i){return void 0===i?n(e,t,!1):n(e,i,!1!==t)}},function(e,t,i){var n;!function(r){"use strict";var s={},a=/d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,o="[^\\s]+",l=/\[([^]*?)\]/gm,u=function(){};function c(e,t){for(var i=[],n=0,r=e.length;n3?0:(e-e%10!=10)*e%10]}};var g={D:function(e){return e.getDay()},DD:function(e){return d(e.getDay())},Do:function(e,t){return t.DoFn(e.getDate())},d:function(e){return e.getDate()},dd:function(e){return d(e.getDate())},ddd:function(e,t){return t.dayNamesShort[e.getDay()]},dddd:function(e,t){return t.dayNames[e.getDay()]},M:function(e){return e.getMonth()+1},MM:function(e){return d(e.getMonth()+1)},MMM:function(e,t){return t.monthNamesShort[e.getMonth()]},MMMM:function(e,t){return t.monthNames[e.getMonth()]},yy:function(e){return d(String(e.getFullYear()),4).substr(2)},yyyy:function(e){return d(e.getFullYear(),4)},h:function(e){return e.getHours()%12||12},hh:function(e){return d(e.getHours()%12||12)},H:function(e){return e.getHours()},HH:function(e){return d(e.getHours())},m:function(e){return e.getMinutes()},mm:function(e){return d(e.getMinutes())},s:function(e){return e.getSeconds()},ss:function(e){return d(e.getSeconds())},S:function(e){return Math.round(e.getMilliseconds()/100)},SS:function(e){return d(Math.round(e.getMilliseconds()/10),2)},SSS:function(e){return d(e.getMilliseconds(),3)},a:function(e,t){return e.getHours()<12?t.amPm[0]:t.amPm[1]},A:function(e,t){return e.getHours()<12?t.amPm[0].toUpperCase():t.amPm[1].toUpperCase()},ZZ:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+d(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)}},y={d:["\\d\\d?",function(e,t){e.day=t}],Do:["\\d\\d?"+o,function(e,t){e.day=parseInt(t,10)}],M:["\\d\\d?",function(e,t){e.month=t-1}],yy:["\\d\\d?",function(e,t){var i=+(""+(new Date).getFullYear()).substr(0,2);e.year=""+(t>68?i-1:i)+t}],h:["\\d\\d?",function(e,t){e.hour=t}],m:["\\d\\d?",function(e,t){e.minute=t}],s:["\\d\\d?",function(e,t){e.second=t}],yyyy:["\\d{4}",function(e,t){e.year=t}],S:["\\d",function(e,t){e.millisecond=100*t}],SS:["\\d{2}",function(e,t){e.millisecond=10*t}],SSS:["\\d{3}",function(e,t){e.millisecond=t}],D:["\\d\\d?",u],ddd:[o,u],MMM:[o,h("monthNamesShort")],MMMM:[o,h("monthNames")],a:[o,function(e,t,i){var n=t.toLowerCase();n===i.amPm[0]?e.isPm=!1:n===i.amPm[1]&&(e.isPm=!0)}],ZZ:["[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z",function(e,t){var i,n=(t+"").match(/([+-]|\d\d)/gi);n&&(i=60*n[1]+parseInt(n[2],10),e.timezoneOffset="+"===n[0]?i:-i)}]};y.dd=y.d,y.dddd=y.ddd,y.DD=y.D,y.mm=y.m,y.hh=y.H=y.HH=y.h,y.MM=y.M,y.ss=y.s,y.A=y.a,s.masks={default:"ddd MMM dd yyyy HH:mm:ss",shortDate:"M/D/yy",mediumDate:"MMM d, yyyy",longDate:"MMMM d, yyyy",fullDate:"dddd, MMMM d, yyyy",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},s.format=function(e,t,i){var n=i||s.i18n;if("number"==typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error("Invalid Date in fecha.format");t=s.masks[t]||t||s.masks.default;var r=[];return(t=(t=t.replace(l,function(e,t){return r.push(t),"@@@"})).replace(a,function(t){return t in g?g[t](e,n):t.slice(1,t.length-1)})).replace(/@@@/g,function(){return r.shift()})},s.parse=function(e,t,i){var n=i||s.i18n;if("string"!=typeof t)throw new Error("Invalid format in fecha.parse");if(t=s.masks[t]||t,e.length>1e3)return null;var r={},o=[],u=[];t=t.replace(l,function(e,t){return u.push(t),"@@@"});var c,h=(c=t,c.replace(/[|\\{()[^$+*?.-]/g,"\\$&")).replace(a,function(e){if(y[e]){var t=y[e];return o.push(t[1]),"("+t[0]+")"}return e});h=h.replace(/@@@/g,function(){return u.shift()});var d=e.match(new RegExp(h,"i"));if(!d)return null;for(var p=1;pe?u():!0!==t&&(r=setTimeout(n?function(){r=void 0}:u,void 0===n?e-o:e))}}},function(e,t){var i=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=i)},function(e,t){var i=/^(attrs|props|on|nativeOn|class|style|hook)$/;function n(e,t){return function(){e&&e.apply(this,arguments),t&&t.apply(this,arguments)}}e.exports=function(e){return e.reduce(function(e,t){var r,s,a,o,l;for(a in t)if(r=e[a],s=t[a],r&&i.test(a))if("class"===a&&("string"==typeof r&&(l=r,e[a]=r={},r[l]=!0),"string"==typeof s&&(l=s,t[a]=s={},s[l]=!0)),"on"===a||"nativeOn"===a||"hook"===a)for(o in s)r[o]=n(r[o],s[o]);else if(Array.isArray(r))e[a]=r.concat(s);else if(Array.isArray(s))e[a]=[r].concat(s);else for(o in s)r[o]=s[o];else e[a]=t[a];return e},{})}},function(e,t){var i={}.hasOwnProperty;e.exports=function(e,t){return i.call(e,t)}},function(e,t,i){"use strict";t.__esModule=!0;var n,r=i(56),s=(n=r)&&n.__esModule?n:{default:n};t.default=s.default||function(e){for(var t=1;t0?n:i)(e)}},function(e,t,i){var n=i(28)("keys"),r=i(21);e.exports=function(e){return n[e]||(n[e]=r(e))}},function(e,t,i){var n=i(14),r=i(5),s=r["__core-js_shared__"]||(r["__core-js_shared__"]={});(e.exports=function(e,t){return s[e]||(s[e]=void 0!==t?t:{})})("versions",[]).push({version:n.version,mode:i(20)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t){e.exports={}},function(e,t,i){var n=i(10).f,r=i(7),s=i(13)("toStringTag");e.exports=function(e,t,i){e&&!r(e=i?e:e.prototype,s)&&n(e,s,{configurable:!0,value:t})}},function(e,t,i){t.f=i(13)},function(e,t,i){var n=i(5),r=i(14),s=i(20),a=i(33),o=i(10).f;e.exports=function(e){var t=r.Symbol||(r.Symbol=s?{}:n.Symbol||{});"_"==e.charAt(0)||e in t||o(t,e,{value:a.f(e)})}},function(e,t,i){var n=i(4),r=i(1);e.exports={throttle:n,debounce:r}},function(e,t,i){e.exports=!i(11)&&!i(16)(function(){return 7!=Object.defineProperty(i(37)("div"),"a",{get:function(){return 7}}).a})},function(e,t,i){var n=i(15),r=i(5).document,s=n(r)&&n(r.createElement);e.exports=function(e){return s?r.createElement(e):{}}},function(e,t,i){var n=i(7),r=i(12),s=i(62)(!1),a=i(27)("IE_PROTO");e.exports=function(e,t){var i,o=r(e),l=0,u=[];for(i in o)i!=a&&n(o,i)&&u.push(i);for(;t.length>l;)n(o,i=t[l++])&&(~s(u,i)||u.push(i));return u}},function(e,t,i){var n=i(40);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==n(e)?e.split(""):Object(e)}},function(e,t){var i={}.toString;e.exports=function(e){return i.call(e).slice(8,-1)}},function(e,t,i){var n=i(25);e.exports=function(e){return Object(n(e))}},function(e,t,i){"use strict";var n=i(20),r=i(23),s=i(43),a=i(9),o=i(31),l=i(69),u=i(32),c=i(72),h=i(13)("iterator"),d=!([].keys&&"next"in[].keys()),p=function(){return this};e.exports=function(e,t,i,f,m,v,g){l(i,t,f);var y,b,w,_=function(e){if(!d&&e in S)return S[e];switch(e){case"keys":case"values":return function(){return new i(this,e)}}return function(){return new i(this,e)}},x=t+" Iterator",C="values"==m,k=!1,S=e.prototype,D=S[h]||S["@@iterator"]||m&&S[m],$=D||_(m),E=m?C?_("entries"):$:void 0,T="Array"==t&&S.entries||D;if(T&&(w=c(T.call(new e)))!==Object.prototype&&w.next&&(u(w,x,!0),n||"function"==typeof w[h]||a(w,h,p)),C&&D&&"values"!==D.name&&(k=!0,$=function(){return D.call(this)}),n&&!g||!d&&!k&&S[h]||a(S,h,$),o[t]=$,o[x]=p,m)if(y={values:C?$:_("values"),keys:v?$:_("keys"),entries:E},g)for(b in y)b in S||s(S,b,y[b]);else r(r.P+r.F*(d||k),t,y);return y}},function(e,t,i){e.exports=i(9)},function(e,t,i){var n=i(17),r=i(70),s=i(29),a=i(27)("IE_PROTO"),o=function(){},l=function(){var e,t=i(37)("iframe"),n=s.length;for(t.style.display="none",i(71).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write(" + + + + + + + + \ No newline at end of file diff --git a/nginx-1.18.0/html/hmdp/login2.html b/nginx-1.18.0/html/hmdp/login2.html new file mode 100644 index 0000000..a125344 --- /dev/null +++ b/nginx-1.18.0/html/hmdp/login2.html @@ -0,0 +1,92 @@ + + + + + + 黑马点评 + + + + + + + +
+ +
+ + + + + + + + \ No newline at end of file diff --git a/nginx-1.18.0/html/hmdp/other-info.html b/nginx-1.18.0/html/hmdp/other-info.html new file mode 100644 index 0000000..de4783b --- /dev/null +++ b/nginx-1.18.0/html/hmdp/other-info.html @@ -0,0 +1,190 @@ + + + + + + + 黑马点评 + + + + + + + + + + +
+
+
+
   
+
+
+
+ +
+
+
{{user.nickName}}
+ 杭州 +
+
+ {{followed ? "取消关注" : "关注"}} +
+
+
+ + 这个人很懒,什么都没有留下 +
+
+ + +
+
+
+
+
{{b.liked}}
+
{{b.comments}}
+
+
+
+ +
你们都关注了:
+ +
+
+
+ +
+ + + + + + + + + + \ No newline at end of file diff --git a/nginx-1.18.0/html/hmdp/shop-detail.html b/nginx-1.18.0/html/hmdp/shop-detail.html new file mode 100644 index 0000000..c3c9d16 --- /dev/null +++ b/nginx-1.18.0/html/hmdp/shop-detail.html @@ -0,0 +1,234 @@ + + + + + + 黑马点评 + + + + + + + + + +
+
+
+
+
...
+
+
+
+
{{shop.name}}
+
+ + {{shop.comments}}条 +
+
口味:4.9 环境:4.8 服务:4.7
+
+ + 拱墅区好评榜第3名 +
+
+
+
+ +
+
+
+
+ {{shop.address}} +
|
+
+
+
+
+
+
+ +
营业时间
+
{{shop.openHours}}
+ 查看详情 +
+
+
+
+ + 代金券 +
+
+
+
+
+
+
+
+
{{v.title}}
+
{{v.subTitle}}
+
¥ {{util.formatPrice(v.payValue)}}
{{(v.payValue*10)/v.actualValue}}折
+
+
+
+
限时抢购
+
剩余 {{v.stock}}
+
{{formatTime(v)}}
+
+
抢购
+
+
+
+
+
+
+
网友评价 (119)
+
+
+
+
味道赞(19)
+
牛肉赞(16)
+
菜品不错(11)
+
回头客(4)
+
分量足(4)
+
停车方便(3)
+
海鲜棒(3)
+
饮品赞(3)
+
朋友聚餐(6)
+
+
+
+
+ +
+
+
叶小乙 Lv5
+
+ 打分 + +
+
+ 某平台上买的券,价格可以当工作餐吃,虽然价格便宜,但是这家店一点都没有... +
+
+ + + + +
+
+ 浏览641     评论5 +
+
+
+
+
查看全部119条评价
+
+
+
+
+
+ +
+ + + + + + + + \ No newline at end of file diff --git a/nginx-1.18.0/html/hmdp/shop-list.html b/nginx-1.18.0/html/hmdp/shop-list.html new file mode 100644 index 0000000..30b2970 --- /dev/null +++ b/nginx-1.18.0/html/hmdp/shop-list.html @@ -0,0 +1,164 @@ + + + + + + 黑马点评 + + + + + + + + + +
+
+
+
{{typeName}}
+ +
+
+
+ + + {{typeName}} + + + + {{t.name}} + + + +
+
+ 距离 +
+
+ 人气 +
+
+ 评分 +
+
+
+
+
+
+
{{s.name}}
+
+ + {{s.comments}}条 +
+
+ {{s.area}} + {{s.distance < 1000 ? s.distance.toFixed(1) + 'm' : (s.distance/1000).toFixed(1) + 'km'}} +
+
¥{{s.avgPrice}}/人
+
+ + {{s.address}} +
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/nginx-1.18.0/html/index.html b/nginx-1.18.0/html/index.html new file mode 100644 index 0000000..2ca3b95 --- /dev/null +++ b/nginx-1.18.0/html/index.html @@ -0,0 +1,25 @@ + + + +Welcome to nginx! + + + +

Welcome to nginx!

+

If you see this page, the nginx web server is successfully installed and +working. Further configuration is required.

+ +

For online documentation and support please refer to +nginx.org.
+Commercial support is available at +nginx.com.

+ +

Thank you for using nginx.

+ + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..6f85c2a --- /dev/null +++ b/pom.xml @@ -0,0 +1,90 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.3.12.RELEASE + + + com.hmdp + hm-dianping + 0.0.1-SNAPSHOT + hm-dianping + Demo project for Spring Boot + + 1.8 + + + + org.springframework.boot + spring-boot-starter-data-redis + + + org.apache.commons + commons-pool2 + + + org.springframework.boot + spring-boot-starter-web + + + + mysql + mysql-connector-java + runtime + 5.1.47 + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + com.baomidou + mybatis-plus-boot-starter + 3.4.3 + + + + cn.hutool + hutool-all + 5.7.17 + + + + org.aspectj + aspectjweaver + 1.9.7 + + + org.redisson + redisson + 3.22.1 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + + diff --git a/src/main/java/com/hmdp/HmDianPingApplication.java b/src/main/java/com/hmdp/HmDianPingApplication.java new file mode 100644 index 0000000..5e9d293 --- /dev/null +++ b/src/main/java/com/hmdp/HmDianPingApplication.java @@ -0,0 +1,18 @@ +package com.hmdp; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.EnableAspectJAutoProxy; + +// 让对象代理生效 +@EnableAspectJAutoProxy(exposeProxy = true) +@MapperScan("com.hmdp.mapper") +@SpringBootApplication +public class HmDianPingApplication { + + public static void main(String[] args) { + SpringApplication.run(HmDianPingApplication.class, args); + } + +} diff --git a/src/main/java/com/hmdp/config/MvcConfig.java b/src/main/java/com/hmdp/config/MvcConfig.java new file mode 100644 index 0000000..856ab05 --- /dev/null +++ b/src/main/java/com/hmdp/config/MvcConfig.java @@ -0,0 +1,32 @@ +package com.hmdp.config; + +import com.hmdp.utils.LoginInterceptor; +import com.hmdp.utils.RefreshTokenInterceptor; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import javax.annotation.Resource; + +@Configuration +public class MvcConfig implements WebMvcConfigurer { + @Resource + private StringRedisTemplate stringRedisTemplate; + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(new LoginInterceptor()) + .excludePathPatterns( + "/shop/**", + "/voucher/**", + "/shop-type/**", + "/upload/**", + "/blog/hot", + "/user/code", + "/user/login" + ).order(1); + registry.addInterceptor(new RefreshTokenInterceptor(stringRedisTemplate)) + .addPathPatterns("/**") + .order(0); + } +} diff --git a/src/main/java/com/hmdp/config/MybatisConfig.java b/src/main/java/com/hmdp/config/MybatisConfig.java new file mode 100644 index 0000000..ffd08c4 --- /dev/null +++ b/src/main/java/com/hmdp/config/MybatisConfig.java @@ -0,0 +1,17 @@ +package com.hmdp.config; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class MybatisConfig { + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); + return interceptor; + } +} diff --git a/src/main/java/com/hmdp/config/RedissonConfig.java b/src/main/java/com/hmdp/config/RedissonConfig.java new file mode 100644 index 0000000..e5b274f --- /dev/null +++ b/src/main/java/com/hmdp/config/RedissonConfig.java @@ -0,0 +1,19 @@ +package com.hmdp.config; + +import org.redisson.Redisson; +import org.redisson.api.RedissonClient; +import org.redisson.config.Config; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class RedissonConfig { + @Bean + public RedissonClient redissonClient() { + //1.创建配置 + Config config = new Config(); + config.useSingleServer().setAddress("redis://192.168.56.10:6379").setPassword("123456"); + //2.根据 Config 创建出 RedissonClient 实例 + return Redisson.create(config); + } +} diff --git a/src/main/java/com/hmdp/config/WebExceptionAdvice.java b/src/main/java/com/hmdp/config/WebExceptionAdvice.java new file mode 100644 index 0000000..ae0da66 --- /dev/null +++ b/src/main/java/com/hmdp/config/WebExceptionAdvice.java @@ -0,0 +1,17 @@ +package com.hmdp.config; + +import com.hmdp.dto.Result; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +@Slf4j +@RestControllerAdvice +public class WebExceptionAdvice { + + @ExceptionHandler(RuntimeException.class) + public Result handleRuntimeException(RuntimeException e) { + log.error(e.toString(), e); + return Result.fail("服务器异常"); + } +} diff --git a/src/main/java/com/hmdp/controller/BlogCommentsController.java b/src/main/java/com/hmdp/controller/BlogCommentsController.java new file mode 100644 index 0000000..3408b71 --- /dev/null +++ b/src/main/java/com/hmdp/controller/BlogCommentsController.java @@ -0,0 +1,20 @@ +package com.hmdp.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 前端控制器 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@RestController +@RequestMapping("/blog-comments") +public class BlogCommentsController { + +} diff --git a/src/main/java/com/hmdp/controller/BlogController.java b/src/main/java/com/hmdp/controller/BlogController.java new file mode 100644 index 0000000..0a2fa6c --- /dev/null +++ b/src/main/java/com/hmdp/controller/BlogController.java @@ -0,0 +1,83 @@ +package com.hmdp.controller; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.hmdp.dto.Result; +import com.hmdp.dto.UserDTO; +import com.hmdp.entity.Blog; +import com.hmdp.entity.User; +import com.hmdp.service.IBlogService; +import com.hmdp.service.IUserService; +import com.hmdp.utils.SystemConstants; +import com.hmdp.utils.UserHolder; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 前端控制器 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@RestController +@RequestMapping("/blog") +public class BlogController { + + @Resource + private IBlogService blogService; + @Resource + private IUserService userService; + + @PostMapping + public Result saveBlog(@RequestBody Blog blog) { + // 获取登录用户 + UserDTO user = UserHolder.getUser(); + blog.setUserId(user.getId()); + // 保存探店博文 + blogService.save(blog); + // 返回id + return Result.ok(blog.getId()); + } + + @PutMapping("/like/{id}") + public Result likeBlog(@PathVariable("id") Long id) { + // 修改点赞数量 + blogService.update() + .setSql("liked = liked + 1").eq("id", id).update(); + return Result.ok(); + } + + @GetMapping("/of/me") + public Result queryMyBlog(@RequestParam(value = "current", defaultValue = "1") Integer current) { + // 获取登录用户 + UserDTO user = UserHolder.getUser(); + // 根据用户查询 + Page page = blogService.query() + .eq("user_id", user.getId()).page(new Page<>(current, SystemConstants.MAX_PAGE_SIZE)); + // 获取当前页数据 + List records = page.getRecords(); + return Result.ok(records); + } + + @GetMapping("/hot") + public Result queryHotBlog(@RequestParam(value = "current", defaultValue = "1") Integer current) { + // 根据用户查询 + Page page = blogService.query() + .orderByDesc("liked") + .page(new Page<>(current, SystemConstants.MAX_PAGE_SIZE)); + // 获取当前页数据 + List records = page.getRecords(); + // 查询用户 + records.forEach(blog ->{ + Long userId = blog.getUserId(); + User user = userService.getById(userId); + blog.setName(user.getNickName()); + blog.setIcon(user.getIcon()); + }); + return Result.ok(records); + } +} diff --git a/src/main/java/com/hmdp/controller/FollowController.java b/src/main/java/com/hmdp/controller/FollowController.java new file mode 100644 index 0000000..b4d67f3 --- /dev/null +++ b/src/main/java/com/hmdp/controller/FollowController.java @@ -0,0 +1,20 @@ +package com.hmdp.controller; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 前端控制器 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@RestController +@RequestMapping("/follow") +public class FollowController { + +} diff --git a/src/main/java/com/hmdp/controller/ShopController.java b/src/main/java/com/hmdp/controller/ShopController.java new file mode 100644 index 0000000..4a4158f --- /dev/null +++ b/src/main/java/com/hmdp/controller/ShopController.java @@ -0,0 +1,102 @@ +package com.hmdp.controller; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.hmdp.dto.Result; +import com.hmdp.entity.Shop; +import com.hmdp.service.IShopService; +import com.hmdp.utils.SystemConstants; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + *

+ * 前端控制器 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@RestController +@RequestMapping("/shop") +public class ShopController { + + @Resource + public IShopService shopService; + + /** + * 根据id查询商铺信息 + * @param id 商铺id + * @return 商铺详情数据 + */ + @GetMapping("/{id}") + public Result queryShopById(@PathVariable("id") Long id) { +// return Result.ok(shopService.getById(id)); + return shopService.queryById(id); + } + + /** + * 新增商铺信息 + * @param shop 商铺数据 + * @return 商铺id + */ + @PostMapping + public Result saveShop(@RequestBody Shop shop) { + // 写入数据库 + shopService.save(shop); + // 返回店铺id + return Result.ok(shop.getId()); + } + + /** + * 更新商铺信息 + * @param shop 商铺数据 + * @return 无 + */ + @PutMapping + public Result updateShop(@RequestBody Shop shop) { + // 写入数据库 + + return shopService.updateShopById(shop); + } + + /** + * 根据商铺类型分页查询商铺信息 + * @param typeId 商铺类型 + * @param current 页码 + * @return 商铺列表 + */ + @GetMapping("/of/type") + public Result queryShopByType( + @RequestParam("typeId") Integer typeId, + @RequestParam(value = "current", defaultValue = "1") Integer current + ) { + // 根据类型分页查询 + Page page = shopService.query() + .eq("type_id", typeId) + .page(new Page<>(current, SystemConstants.DEFAULT_PAGE_SIZE)); + // 返回数据 + return Result.ok(page.getRecords()); + } + + /** + * 根据商铺名称关键字分页查询商铺信息 + * @param name 商铺名称关键字 + * @param current 页码 + * @return 商铺列表 + */ + @GetMapping("/of/name") + public Result queryShopByName( + @RequestParam(value = "name", required = false) String name, + @RequestParam(value = "current", defaultValue = "1") Integer current + ) { + // 根据类型分页查询 + Page page = shopService.query() + .like(StrUtil.isNotBlank(name), "name", name) + .page(new Page<>(current, SystemConstants.MAX_PAGE_SIZE)); + // 返回数据 + return Result.ok(page.getRecords()); + } +} diff --git a/src/main/java/com/hmdp/controller/ShopTypeController.java b/src/main/java/com/hmdp/controller/ShopTypeController.java new file mode 100644 index 0000000..7addf13 --- /dev/null +++ b/src/main/java/com/hmdp/controller/ShopTypeController.java @@ -0,0 +1,35 @@ +package com.hmdp.controller; + + +import com.hmdp.dto.Result; +import com.hmdp.entity.ShopType; +import com.hmdp.service.IShopTypeService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 前端控制器 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@RestController +@RequestMapping("/shop-type") +public class ShopTypeController { + @Resource + private IShopTypeService typeService; + + @GetMapping("list") + public Result queryTypeList() { +// List typeList = typeService +// .query().orderByAsc("sort").list(); +// return Result.ok(typeList); + return typeService.queryTypeList(); + } +} diff --git a/src/main/java/com/hmdp/controller/UploadController.java b/src/main/java/com/hmdp/controller/UploadController.java new file mode 100644 index 0000000..56d32e4 --- /dev/null +++ b/src/main/java/com/hmdp/controller/UploadController.java @@ -0,0 +1,63 @@ +package com.hmdp.controller; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.StrUtil; +import com.hmdp.dto.Result; +import com.hmdp.utils.SystemConstants; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; +import java.util.UUID; + +@Slf4j +@RestController +@RequestMapping("upload") +public class UploadController { + + @PostMapping("blog") + public Result uploadImage(@RequestParam("file") MultipartFile image) { + try { + // 获取原始文件名称 + String originalFilename = image.getOriginalFilename(); + // 生成新文件名 + String fileName = createNewFileName(originalFilename); + // 保存文件 + image.transferTo(new File(SystemConstants.IMAGE_UPLOAD_DIR, fileName)); + // 返回结果 + log.debug("文件上传成功,{}", fileName); + return Result.ok(fileName); + } catch (IOException e) { + throw new RuntimeException("文件上传失败", e); + } + } + + @GetMapping("/blog/delete") + public Result deleteBlogImg(@RequestParam("name") String filename) { + File file = new File(SystemConstants.IMAGE_UPLOAD_DIR, filename); + if (file.isDirectory()) { + return Result.fail("错误的文件名称"); + } + FileUtil.del(file); + return Result.ok(); + } + + private String createNewFileName(String originalFilename) { + // 获取后缀 + String suffix = StrUtil.subAfter(originalFilename, ".", true); + // 生成目录 + String name = UUID.randomUUID().toString(); + int hash = name.hashCode(); + int d1 = hash & 0xF; + int d2 = (hash >> 4) & 0xF; + // 判断目录是否存在 + File dir = new File(SystemConstants.IMAGE_UPLOAD_DIR, StrUtil.format("/blogs/{}/{}", d1, d2)); + if (!dir.exists()) { + dir.mkdirs(); + } + // 生成文件名 + return StrUtil.format("/blogs/{}/{}/{}.{}", d1, d2, name, suffix); + } +} diff --git a/src/main/java/com/hmdp/controller/UserController.java b/src/main/java/com/hmdp/controller/UserController.java new file mode 100644 index 0000000..2a0faf5 --- /dev/null +++ b/src/main/java/com/hmdp/controller/UserController.java @@ -0,0 +1,86 @@ +package com.hmdp.controller; + + +import cn.hutool.core.util.RandomUtil; +import com.hmdp.dto.LoginFormDTO; +import com.hmdp.dto.Result; +import com.hmdp.dto.UserDTO; +import com.hmdp.entity.User; +import com.hmdp.entity.UserInfo; +import com.hmdp.service.IUserInfoService; +import com.hmdp.service.IUserService; +import com.hmdp.utils.RegexUtils; +import com.hmdp.utils.UserHolder; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpSession; + +/** + *

+ * 前端控制器 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@Slf4j +@RestController +@RequestMapping("/user") +public class UserController { + + @Resource + private IUserService userService; + + @Resource + private IUserInfoService userInfoService; + + /** + * 发送手机验证码 + */ + @PostMapping("code") + public Result sendCode(@RequestParam("phone") String phone, HttpSession session) { + return userService.sendCode(phone, session); + } + + /** + * 登录功能 + * @param loginForm 登录参数,包含手机号、验证码;或者手机号、密码 + */ + @PostMapping("/login") + public Result login(@RequestBody LoginFormDTO loginForm, HttpSession session){ + return userService.login(loginForm, session); + } + + /** + * 登出功能 + * @return 无 + */ + @PostMapping("/logout") + public Result logout(){ + // TODO 实现登出功能 + return Result.fail("功能未完成"); + } + + @GetMapping("/me") + public Result me(){ + //获取当前登录的用户并返回 + UserDTO user = UserHolder.getUser(); + return Result.ok(user); + } + + @GetMapping("/info/{id}") + public Result info(@PathVariable("id") Long userId){ + // 查询详情 + UserInfo info = userInfoService.getById(userId); + if (info == null) { + // 没有详情,应该是第一次查看详情 + return Result.ok(); + } + info.setCreateTime(null); + info.setUpdateTime(null); + // 返回 + return Result.ok(info); + } +} diff --git a/src/main/java/com/hmdp/controller/VoucherController.java b/src/main/java/com/hmdp/controller/VoucherController.java new file mode 100644 index 0000000..328a0e6 --- /dev/null +++ b/src/main/java/com/hmdp/controller/VoucherController.java @@ -0,0 +1,57 @@ +package com.hmdp.controller; + + +import com.hmdp.dto.Result; +import com.hmdp.entity.Voucher; +import com.hmdp.service.IVoucherService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + *

+ * 前端控制器 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@RestController +@RequestMapping("/voucher") +public class VoucherController { + + @Resource + private IVoucherService voucherService; + + /** + * 新增普通券 + * @param voucher 优惠券信息 + * @return 优惠券id + */ + @PostMapping + public Result addVoucher(@RequestBody Voucher voucher) { + voucherService.save(voucher); + return Result.ok(voucher.getId()); + } + + /** + * 新增秒杀券 + * @param voucher 优惠券信息,包含秒杀信息 + * @return 优惠券id + */ + @PostMapping("seckill") + public Result addSeckillVoucher(@RequestBody Voucher voucher) { + voucherService.addSeckillVoucher(voucher); + return Result.ok(voucher.getId()); + } + + /** + * 查询店铺的优惠券列表 + * @param shopId 店铺id + * @return 优惠券列表 + */ + @GetMapping("/list/{shopId}") + public Result queryVoucherOfShop(@PathVariable("shopId") Long shopId) { + return voucherService.queryVoucherOfShop(shopId); + } +} diff --git a/src/main/java/com/hmdp/controller/VoucherOrderController.java b/src/main/java/com/hmdp/controller/VoucherOrderController.java new file mode 100644 index 0000000..0ddf4f8 --- /dev/null +++ b/src/main/java/com/hmdp/controller/VoucherOrderController.java @@ -0,0 +1,32 @@ +package com.hmdp.controller; + + +import com.hmdp.dto.Result; +import com.hmdp.service.impl.VoucherOrderServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 前端控制器 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@RestController +@RequestMapping("/voucher-order") +public class VoucherOrderController { + + @Autowired + private VoucherOrderServiceImpl voucherOrderService; + + @PostMapping("seckill/{id}") + public Result seckillVoucher(@PathVariable("id") Long voucherId) { +// System.out.println(voucherId); + return voucherOrderService.seckillVoucher(voucherId); + } +} diff --git a/src/main/java/com/hmdp/dto/LoginFormDTO.java b/src/main/java/com/hmdp/dto/LoginFormDTO.java new file mode 100644 index 0000000..f8f4016 --- /dev/null +++ b/src/main/java/com/hmdp/dto/LoginFormDTO.java @@ -0,0 +1,10 @@ +package com.hmdp.dto; + +import lombok.Data; + +@Data +public class LoginFormDTO { + private String phone; + private String code; + private String password; +} diff --git a/src/main/java/com/hmdp/dto/Result.java b/src/main/java/com/hmdp/dto/Result.java new file mode 100644 index 0000000..cc098e6 --- /dev/null +++ b/src/main/java/com/hmdp/dto/Result.java @@ -0,0 +1,30 @@ +package com.hmdp.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class Result { + private Boolean success; + private String errorMsg; + private Object data; + private Long total; + + public static Result ok(){ + return new Result(true, null, null, null); + } + public static Result ok(Object data){ + return new Result(true, null, data, null); + } + public static Result ok(List data, Long total){ + return new Result(true, null, data, total); + } + public static Result fail(String errorMsg){ + return new Result(false, errorMsg, null, null); + } +} diff --git a/src/main/java/com/hmdp/dto/ScrollResult.java b/src/main/java/com/hmdp/dto/ScrollResult.java new file mode 100644 index 0000000..530fcac --- /dev/null +++ b/src/main/java/com/hmdp/dto/ScrollResult.java @@ -0,0 +1,12 @@ +package com.hmdp.dto; + +import lombok.Data; + +import java.util.List; + +@Data +public class ScrollResult { + private List list; + private Long minTime; + private Integer offset; +} diff --git a/src/main/java/com/hmdp/dto/UserDTO.java b/src/main/java/com/hmdp/dto/UserDTO.java new file mode 100644 index 0000000..4dd1802 --- /dev/null +++ b/src/main/java/com/hmdp/dto/UserDTO.java @@ -0,0 +1,10 @@ +package com.hmdp.dto; + +import lombok.Data; + +@Data +public class UserDTO { + private Long id; + private String nickName; + private String icon; +} diff --git a/src/main/java/com/hmdp/entity/Blog.java b/src/main/java/com/hmdp/entity/Blog.java new file mode 100644 index 0000000..f5c8872 --- /dev/null +++ b/src/main/java/com/hmdp/entity/Blog.java @@ -0,0 +1,95 @@ +package com.hmdp.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("tb_blog") +public class Blog implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + /** + * 商户id + */ + private Long shopId; + /** + * 用户id + */ + private Long userId; + /** + * 用户图标 + */ + @TableField(exist = false) + private String icon; + /** + * 用户姓名 + */ + @TableField(exist = false) + private String name; + /** + * 是否点赞过了 + */ + @TableField(exist = false) + private Boolean isLike; + + /** + * 标题 + */ + private String title; + + /** + * 探店的照片,最多9张,多张以","隔开 + */ + private String images; + + /** + * 探店的文字描述 + */ + private String content; + + /** + * 点赞数量 + */ + private Integer liked; + + /** + * 评论数量 + */ + private Integer comments; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + +} diff --git a/src/main/java/com/hmdp/entity/BlogComments.java b/src/main/java/com/hmdp/entity/BlogComments.java new file mode 100644 index 0000000..086f356 --- /dev/null +++ b/src/main/java/com/hmdp/entity/BlogComments.java @@ -0,0 +1,81 @@ +package com.hmdp.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("tb_blog_comments") +public class BlogComments implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * 探店id + */ + private Long blogId; + + /** + * 关联的1级评论id,如果是一级评论,则值为0 + */ + private Long parentId; + + /** + * 回复的评论id + */ + private Long answerId; + + /** + * 回复的内容 + */ + private String content; + + /** + * 点赞数 + */ + private Integer liked; + + /** + * 状态,0:正常,1:被举报,2:禁止查看 + */ + private Boolean status; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + +} diff --git a/src/main/java/com/hmdp/entity/Follow.java b/src/main/java/com/hmdp/entity/Follow.java new file mode 100644 index 0000000..4c8fd3b --- /dev/null +++ b/src/main/java/com/hmdp/entity/Follow.java @@ -0,0 +1,51 @@ +package com.hmdp.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("tb_follow") +public class Follow implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 用户id + */ + private Long userId; + + /** + * 关联的用户id + */ + private Long followUserId; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + +} diff --git a/src/main/java/com/hmdp/entity/SeckillVoucher.java b/src/main/java/com/hmdp/entity/SeckillVoucher.java new file mode 100644 index 0000000..a2d25ee --- /dev/null +++ b/src/main/java/com/hmdp/entity/SeckillVoucher.java @@ -0,0 +1,61 @@ +package com.hmdp.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * 秒杀优惠券表,与优惠券是一对一关系 + *

+ * + * @author 虎哥 + * @since 2022-01-04 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("tb_seckill_voucher") +public class SeckillVoucher implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 关联的优惠券的id + */ + @TableId(value = "voucher_id", type = IdType.INPUT) + private Long voucherId; + + /** + * 库存 + */ + private Integer stock; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 生效时间 + */ + private LocalDateTime beginTime; + + /** + * 失效时间 + */ + private LocalDateTime endTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + +} diff --git a/src/main/java/com/hmdp/entity/Shop.java b/src/main/java/com/hmdp/entity/Shop.java new file mode 100644 index 0000000..2a3a626 --- /dev/null +++ b/src/main/java/com/hmdp/entity/Shop.java @@ -0,0 +1,109 @@ +package com.hmdp.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("tb_shop") +public class Shop implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 商铺名称 + */ + private String name; + + /** + * 商铺类型的id + */ + private Long typeId; + + /** + * 商铺图片,多个图片以','隔开 + */ + private String images; + + /** + * 商圈,例如陆家嘴 + */ + private String area; + + /** + * 地址 + */ + private String address; + + /** + * 经度 + */ + private Double x; + + /** + * 维度 + */ + private Double y; + + /** + * 均价,取整数 + */ + private Long avgPrice; + + /** + * 销量 + */ + private Integer sold; + + /** + * 评论数量 + */ + private Integer comments; + + /** + * 评分,1~5分,乘10保存,避免小数 + */ + private Integer score; + + /** + * 营业时间,例如 10:00-22:00 + */ + private String openHours; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + + @TableField(exist = false) + private Double distance; +} diff --git a/src/main/java/com/hmdp/entity/ShopType.java b/src/main/java/com/hmdp/entity/ShopType.java new file mode 100644 index 0000000..5d4f259 --- /dev/null +++ b/src/main/java/com/hmdp/entity/ShopType.java @@ -0,0 +1,64 @@ +package com.hmdp.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("tb_shop_type") +public class ShopType implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 类型名称 + */ + private String name; + + /** + * 图标 + */ + private String icon; + + /** + * 顺序 + */ + private Integer sort; + + /** + * 创建时间 + */ + @JsonIgnore + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @JsonIgnore + private LocalDateTime updateTime; + + +} diff --git a/src/main/java/com/hmdp/entity/User.java b/src/main/java/com/hmdp/entity/User.java new file mode 100644 index 0000000..29f0de7 --- /dev/null +++ b/src/main/java/com/hmdp/entity/User.java @@ -0,0 +1,66 @@ +package com.hmdp.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("tb_user") +public class User implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 手机号码 + */ + private String phone; + + /** + * 密码,加密存储 + */ + private String password; + + /** + * 昵称,默认是随机字符 + */ + private String nickName; + + /** + * 用户头像 + */ + private String icon = ""; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + +} diff --git a/src/main/java/com/hmdp/entity/UserInfo.java b/src/main/java/com/hmdp/entity/UserInfo.java new file mode 100644 index 0000000..428be15 --- /dev/null +++ b/src/main/java/com/hmdp/entity/UserInfo.java @@ -0,0 +1,87 @@ +package com.hmdp.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author 虎哥 + * @since 2021-12-24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("tb_user_info") +public class UserInfo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键,用户id + */ + @TableId(value = "user_id", type = IdType.AUTO) + private Long userId; + + /** + * 城市名称 + */ + private String city; + + /** + * 个人介绍,不要超过128个字符 + */ + private String introduce; + + /** + * 粉丝数量 + */ + private Integer fans; + + /** + * 关注的人的数量 + */ + private Integer followee; + + /** + * 性别,0:男,1:女 + */ + private Boolean gender; + + /** + * 生日 + */ + private LocalDate birthday; + + /** + * 积分 + */ + private Integer credits; + + /** + * 会员级别,0~9级,0代表未开通会员 + */ + private Boolean level; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + +} diff --git a/src/main/java/com/hmdp/entity/Voucher.java b/src/main/java/com/hmdp/entity/Voucher.java new file mode 100644 index 0000000..daffdee --- /dev/null +++ b/src/main/java/com/hmdp/entity/Voucher.java @@ -0,0 +1,105 @@ +package com.hmdp.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("tb_voucher") +public class Voucher implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 商铺id + */ + private Long shopId; + + /** + * 代金券标题 + */ + private String title; + + /** + * 副标题 + */ + private String subTitle; + + /** + * 使用规则 + */ + private String rules; + + /** + * 支付金额 + */ + private Long payValue; + + /** + * 抵扣金额 + */ + private Long actualValue; + + /** + * 优惠券类型 + */ + private Integer type; + + /** + * 优惠券类型 + */ + private Integer status; + /** + * 库存 + */ + @TableField(exist = false) + private Integer stock; + + /** + * 生效时间 + */ + @TableField(exist = false) + private LocalDateTime beginTime; + + /** + * 失效时间 + */ + @TableField(exist = false) + private LocalDateTime endTime; + + /** + * 创建时间 + */ + private LocalDateTime createTime; + + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + +} diff --git a/src/main/java/com/hmdp/entity/VoucherOrder.java b/src/main/java/com/hmdp/entity/VoucherOrder.java new file mode 100644 index 0000000..1e5f673 --- /dev/null +++ b/src/main/java/com/hmdp/entity/VoucherOrder.java @@ -0,0 +1,81 @@ +package com.hmdp.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("tb_voucher_order") +public class VoucherOrder implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.INPUT) + private Long id; + + /** + * 下单的用户id + */ + private Long userId; + + /** + * 购买的代金券id + */ + private Long voucherId; + + /** + * 支付方式 1:余额支付;2:支付宝;3:微信 + */ + private Integer payType; + + /** + * 订单状态,1:未支付;2:已支付;3:已核销;4:已取消;5:退款中;6:已退款 + */ + private Integer status; + + /** + * 下单时间 + */ + private LocalDateTime createTime; + + /** + * 支付时间 + */ + private LocalDateTime payTime; + + /** + * 核销时间 + */ + private LocalDateTime useTime; + + /** + * 退款时间 + */ + private LocalDateTime refundTime; + + /** + * 更新时间 + */ + private LocalDateTime updateTime; + + +} diff --git a/src/main/java/com/hmdp/mapper/BlogCommentsMapper.java b/src/main/java/com/hmdp/mapper/BlogCommentsMapper.java new file mode 100644 index 0000000..6d40ad0 --- /dev/null +++ b/src/main/java/com/hmdp/mapper/BlogCommentsMapper.java @@ -0,0 +1,16 @@ +package com.hmdp.mapper; + +import com.hmdp.entity.BlogComments; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +public interface BlogCommentsMapper extends BaseMapper { + +} diff --git a/src/main/java/com/hmdp/mapper/BlogMapper.java b/src/main/java/com/hmdp/mapper/BlogMapper.java new file mode 100644 index 0000000..ec3b62e --- /dev/null +++ b/src/main/java/com/hmdp/mapper/BlogMapper.java @@ -0,0 +1,16 @@ +package com.hmdp.mapper; + +import com.hmdp.entity.Blog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +public interface BlogMapper extends BaseMapper { + +} diff --git a/src/main/java/com/hmdp/mapper/FollowMapper.java b/src/main/java/com/hmdp/mapper/FollowMapper.java new file mode 100644 index 0000000..926308a --- /dev/null +++ b/src/main/java/com/hmdp/mapper/FollowMapper.java @@ -0,0 +1,16 @@ +package com.hmdp.mapper; + +import com.hmdp.entity.Follow; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +public interface FollowMapper extends BaseMapper { + +} diff --git a/src/main/java/com/hmdp/mapper/SeckillVoucherMapper.java b/src/main/java/com/hmdp/mapper/SeckillVoucherMapper.java new file mode 100644 index 0000000..3cf4af8 --- /dev/null +++ b/src/main/java/com/hmdp/mapper/SeckillVoucherMapper.java @@ -0,0 +1,16 @@ +package com.hmdp.mapper; + +import com.hmdp.entity.SeckillVoucher; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 秒杀优惠券表,与优惠券是一对一关系 Mapper 接口 + *

+ * + * @author 虎哥 + * @since 2022-01-04 + */ +public interface SeckillVoucherMapper extends BaseMapper { + +} diff --git a/src/main/java/com/hmdp/mapper/ShopMapper.java b/src/main/java/com/hmdp/mapper/ShopMapper.java new file mode 100644 index 0000000..d5694d4 --- /dev/null +++ b/src/main/java/com/hmdp/mapper/ShopMapper.java @@ -0,0 +1,16 @@ +package com.hmdp.mapper; + +import com.hmdp.entity.Shop; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +public interface ShopMapper extends BaseMapper { + +} diff --git a/src/main/java/com/hmdp/mapper/ShopTypeMapper.java b/src/main/java/com/hmdp/mapper/ShopTypeMapper.java new file mode 100644 index 0000000..b09890b --- /dev/null +++ b/src/main/java/com/hmdp/mapper/ShopTypeMapper.java @@ -0,0 +1,16 @@ +package com.hmdp.mapper; + +import com.hmdp.entity.ShopType; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +public interface ShopTypeMapper extends BaseMapper { + +} diff --git a/src/main/java/com/hmdp/mapper/UserInfoMapper.java b/src/main/java/com/hmdp/mapper/UserInfoMapper.java new file mode 100644 index 0000000..77b9250 --- /dev/null +++ b/src/main/java/com/hmdp/mapper/UserInfoMapper.java @@ -0,0 +1,16 @@ +package com.hmdp.mapper; + +import com.hmdp.entity.UserInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 虎哥 + * @since 2021-12-24 + */ +public interface UserInfoMapper extends BaseMapper { + +} diff --git a/src/main/java/com/hmdp/mapper/UserMapper.java b/src/main/java/com/hmdp/mapper/UserMapper.java new file mode 100644 index 0000000..adcebe3 --- /dev/null +++ b/src/main/java/com/hmdp/mapper/UserMapper.java @@ -0,0 +1,16 @@ +package com.hmdp.mapper; + +import com.hmdp.entity.User; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +public interface UserMapper extends BaseMapper { + +} diff --git a/src/main/java/com/hmdp/mapper/VoucherMapper.java b/src/main/java/com/hmdp/mapper/VoucherMapper.java new file mode 100644 index 0000000..2db21ed --- /dev/null +++ b/src/main/java/com/hmdp/mapper/VoucherMapper.java @@ -0,0 +1,20 @@ +package com.hmdp.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.hmdp.entity.Voucher; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +public interface VoucherMapper extends BaseMapper { + + List queryVoucherOfShop(@Param("shopId") Long shopId); +} diff --git a/src/main/java/com/hmdp/mapper/VoucherOrderMapper.java b/src/main/java/com/hmdp/mapper/VoucherOrderMapper.java new file mode 100644 index 0000000..e0cd90a --- /dev/null +++ b/src/main/java/com/hmdp/mapper/VoucherOrderMapper.java @@ -0,0 +1,16 @@ +package com.hmdp.mapper; + +import com.hmdp.entity.VoucherOrder; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +public interface VoucherOrderMapper extends BaseMapper { + +} diff --git a/src/main/java/com/hmdp/service/IBlogCommentsService.java b/src/main/java/com/hmdp/service/IBlogCommentsService.java new file mode 100644 index 0000000..12dbee0 --- /dev/null +++ b/src/main/java/com/hmdp/service/IBlogCommentsService.java @@ -0,0 +1,16 @@ +package com.hmdp.service; + +import com.hmdp.entity.BlogComments; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +public interface IBlogCommentsService extends IService { + +} diff --git a/src/main/java/com/hmdp/service/IBlogService.java b/src/main/java/com/hmdp/service/IBlogService.java new file mode 100644 index 0000000..33ffd0e --- /dev/null +++ b/src/main/java/com/hmdp/service/IBlogService.java @@ -0,0 +1,16 @@ +package com.hmdp.service; + +import com.hmdp.entity.Blog; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +public interface IBlogService extends IService { + +} diff --git a/src/main/java/com/hmdp/service/IFollowService.java b/src/main/java/com/hmdp/service/IFollowService.java new file mode 100644 index 0000000..767c12d --- /dev/null +++ b/src/main/java/com/hmdp/service/IFollowService.java @@ -0,0 +1,16 @@ +package com.hmdp.service; + +import com.hmdp.entity.Follow; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +public interface IFollowService extends IService { + +} diff --git a/src/main/java/com/hmdp/service/ISeckillVoucherService.java b/src/main/java/com/hmdp/service/ISeckillVoucherService.java new file mode 100644 index 0000000..fb6642b --- /dev/null +++ b/src/main/java/com/hmdp/service/ISeckillVoucherService.java @@ -0,0 +1,16 @@ +package com.hmdp.service; + +import com.hmdp.entity.SeckillVoucher; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 秒杀优惠券表,与优惠券是一对一关系 服务类 + *

+ * + * @author 虎哥 + * @since 2022-01-04 + */ +public interface ISeckillVoucherService extends IService { + +} diff --git a/src/main/java/com/hmdp/service/IShopService.java b/src/main/java/com/hmdp/service/IShopService.java new file mode 100644 index 0000000..6dd6bb7 --- /dev/null +++ b/src/main/java/com/hmdp/service/IShopService.java @@ -0,0 +1,20 @@ +package com.hmdp.service; + +import com.hmdp.dto.Result; +import com.hmdp.entity.Shop; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +public interface IShopService extends IService { + + Result queryById(Long id); + + Result updateShopById(Shop shop); +} diff --git a/src/main/java/com/hmdp/service/IShopTypeService.java b/src/main/java/com/hmdp/service/IShopTypeService.java new file mode 100644 index 0000000..a4e5183 --- /dev/null +++ b/src/main/java/com/hmdp/service/IShopTypeService.java @@ -0,0 +1,18 @@ +package com.hmdp.service; + +import com.hmdp.dto.Result; +import com.hmdp.entity.ShopType; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +public interface IShopTypeService extends IService { + + Result queryTypeList(); +} diff --git a/src/main/java/com/hmdp/service/IUserInfoService.java b/src/main/java/com/hmdp/service/IUserInfoService.java new file mode 100644 index 0000000..e8df101 --- /dev/null +++ b/src/main/java/com/hmdp/service/IUserInfoService.java @@ -0,0 +1,16 @@ +package com.hmdp.service; + +import com.hmdp.entity.UserInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 虎哥 + * @since 2021-12-24 + */ +public interface IUserInfoService extends IService { + +} diff --git a/src/main/java/com/hmdp/service/IUserService.java b/src/main/java/com/hmdp/service/IUserService.java new file mode 100644 index 0000000..ed5685c --- /dev/null +++ b/src/main/java/com/hmdp/service/IUserService.java @@ -0,0 +1,23 @@ +package com.hmdp.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.hmdp.dto.LoginFormDTO; +import com.hmdp.dto.Result; +import com.hmdp.entity.User; + +import javax.servlet.http.HttpSession; + +/** + *

+ * 服务类 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +public interface IUserService extends IService { + + Result sendCode(String phone, HttpSession session); + + Result login(LoginFormDTO loginForm, HttpSession session); +} diff --git a/src/main/java/com/hmdp/service/IVoucherOrderService.java b/src/main/java/com/hmdp/service/IVoucherOrderService.java new file mode 100644 index 0000000..91f8fa4 --- /dev/null +++ b/src/main/java/com/hmdp/service/IVoucherOrderService.java @@ -0,0 +1,20 @@ +package com.hmdp.service; + +import com.hmdp.dto.Result; +import com.hmdp.entity.VoucherOrder; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +public interface IVoucherOrderService extends IService { + + Result seckillVoucher(Long voucherId); + + Result creatVoucheOrder(Long voucherId); +} diff --git a/src/main/java/com/hmdp/service/IVoucherService.java b/src/main/java/com/hmdp/service/IVoucherService.java new file mode 100644 index 0000000..bac7ad2 --- /dev/null +++ b/src/main/java/com/hmdp/service/IVoucherService.java @@ -0,0 +1,21 @@ +package com.hmdp.service; + +import com.hmdp.dto.Result; +import com.hmdp.entity.Voucher; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +public interface IVoucherService extends IService { + + Result queryVoucherOfShop(Long shopId); + + void addSeckillVoucher(Voucher voucher); + +} diff --git a/src/main/java/com/hmdp/service/impl/BlogCommentsServiceImpl.java b/src/main/java/com/hmdp/service/impl/BlogCommentsServiceImpl.java new file mode 100644 index 0000000..4224ff9 --- /dev/null +++ b/src/main/java/com/hmdp/service/impl/BlogCommentsServiceImpl.java @@ -0,0 +1,20 @@ +package com.hmdp.service.impl; + +import com.hmdp.entity.BlogComments; +import com.hmdp.mapper.BlogCommentsMapper; +import com.hmdp.service.IBlogCommentsService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@Service +public class BlogCommentsServiceImpl extends ServiceImpl implements IBlogCommentsService { + +} diff --git a/src/main/java/com/hmdp/service/impl/BlogServiceImpl.java b/src/main/java/com/hmdp/service/impl/BlogServiceImpl.java new file mode 100644 index 0000000..dc85c57 --- /dev/null +++ b/src/main/java/com/hmdp/service/impl/BlogServiceImpl.java @@ -0,0 +1,20 @@ +package com.hmdp.service.impl; + +import com.hmdp.entity.Blog; +import com.hmdp.mapper.BlogMapper; +import com.hmdp.service.IBlogService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@Service +public class BlogServiceImpl extends ServiceImpl implements IBlogService { + +} diff --git a/src/main/java/com/hmdp/service/impl/FollowServiceImpl.java b/src/main/java/com/hmdp/service/impl/FollowServiceImpl.java new file mode 100644 index 0000000..c044b79 --- /dev/null +++ b/src/main/java/com/hmdp/service/impl/FollowServiceImpl.java @@ -0,0 +1,20 @@ +package com.hmdp.service.impl; + +import com.hmdp.entity.Follow; +import com.hmdp.mapper.FollowMapper; +import com.hmdp.service.IFollowService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@Service +public class FollowServiceImpl extends ServiceImpl implements IFollowService { + +} diff --git a/src/main/java/com/hmdp/service/impl/SeckillVoucherServiceImpl.java b/src/main/java/com/hmdp/service/impl/SeckillVoucherServiceImpl.java new file mode 100644 index 0000000..485860f --- /dev/null +++ b/src/main/java/com/hmdp/service/impl/SeckillVoucherServiceImpl.java @@ -0,0 +1,20 @@ +package com.hmdp.service.impl; + +import com.hmdp.entity.SeckillVoucher; +import com.hmdp.mapper.SeckillVoucherMapper; +import com.hmdp.service.ISeckillVoucherService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 秒杀优惠券表,与优惠券是一对一关系 服务实现类 + *

+ * + * @author 虎哥 + * @since 2022-01-04 + */ +@Service +public class SeckillVoucherServiceImpl extends ServiceImpl implements ISeckillVoucherService { + +} diff --git a/src/main/java/com/hmdp/service/impl/ShopServiceImpl.java b/src/main/java/com/hmdp/service/impl/ShopServiceImpl.java new file mode 100644 index 0000000..3d17787 --- /dev/null +++ b/src/main/java/com/hmdp/service/impl/ShopServiceImpl.java @@ -0,0 +1,135 @@ +package com.hmdp.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.BooleanUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.hmdp.dto.Result; +import com.hmdp.entity.Shop; +import com.hmdp.mapper.ShopMapper; +import com.hmdp.service.IShopService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +import java.util.concurrent.TimeUnit; + +import static com.hmdp.utils.RedisConstants.CACHE_SHOP_KEY; +import static com.hmdp.utils.RedisConstants.CACHE_SHOP_TTL; + +/** + *

+ * 服务实现类 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@Service +public class ShopServiceImpl extends ServiceImpl implements IShopService { + @Resource + private StringRedisTemplate stringRedisTemplate; + @Override + public Result queryById(Long id) { + Shop shop = queryByIdWithMutex(id); + if (shop == null){ + return Result.fail("店铺不存在"); + } + return Result.ok(shop); + } + + public Shop queryByIdWithRedis(Long id) { + // 使用redis缓存 + // 查询缓存 + String cacheShop = stringRedisTemplate.opsForValue().get(CACHE_SHOP_KEY + id); + // 判断是否存在 + Shop shop = new Shop(); + if(StrUtil.isNotBlank(cacheShop)){ + // 存在直接返回 + shop = JSONUtil.toBean(cacheShop, Shop.class); + return shop; + } + // 不存在,查询数据库 + shop = getById(id); + if(shop == null){ + // 数据库不存在,返回错误 + return null; + // 解决缓存穿透的话,就在这往redis存一个null + } + stringRedisTemplate.opsForValue().set(CACHE_SHOP_KEY + id, JSONUtil.toJsonStr(shop),CACHE_SHOP_TTL, TimeUnit.MINUTES); + return shop; + } + + public Shop queryByIdWithMutex(Long id) { + String key = CACHE_SHOP_KEY + id; + // 使用redis缓存 + // 查询缓存 + String cacheShop = stringRedisTemplate.opsForValue().get(key); + // 判断是否存在 + Shop shop = new Shop(); + if(StrUtil.isNotBlank(cacheShop)){ + // 存在直接返回 + shop = JSONUtil.toBean(cacheShop, Shop.class); + return shop; + } + + boolean isLock = false; + try { + isLock =tryLock(id); + // 不存在,尝试获取互斥锁 + if(isLock){ + // 获取到互斥锁,查询数据库 + shop = getById(id); + Thread.sleep(200); //模拟重建时的延迟 + if(shop == null){ + // 解决缓存穿透的话,就在这往redis存一个null + stringRedisTemplate.opsForValue().set(key, "",CACHE_SHOP_TTL, TimeUnit.MINUTES); + // 数据库不存在,返回错误 + return null; + } + // 存入缓存 + stringRedisTemplate.opsForValue().set(CACHE_SHOP_KEY + id, JSONUtil.toJsonStr(shop),CACHE_SHOP_TTL, TimeUnit.MINUTES); + } + // 没有获取到互斥锁 + // 休眠后重新执行 + Thread.sleep(50); + return queryByIdWithMutex (id); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } finally { + // 释放互斥锁 + if (isLock) { + delectLock(id); + } + + } + } + + private boolean tryLock(Long id) { + // 本质就是设置一个redis缓存,key任意 + // 设置10秒过期时间防止死锁,10秒就够,因为这些请求一半都很快 + Boolean flag = stringRedisTemplate.opsForValue().setIfAbsent("lock:shop:"+id, "1",10, TimeUnit.SECONDS); + return BooleanUtil.isTrue(flag); + } + private void delectLock(Long id) { + // 本质就是删除上面key对应的缓存 + stringRedisTemplate.delete("lock:shop:"+id); + } + + @Override + @Transactional // 保证原子性 + public Result updateShopById(Shop shop) { + Long shopId = shop.getId(); + if(shopId == null){ + return Result.fail("店铺id不能为空"); + } + // 更新数据库 + updateById(shop); + // 删除缓存 + stringRedisTemplate.delete(CACHE_SHOP_KEY + shopId); + return Result.ok(); + } +} diff --git a/src/main/java/com/hmdp/service/impl/ShopTypeServiceImpl.java b/src/main/java/com/hmdp/service/impl/ShopTypeServiceImpl.java new file mode 100644 index 0000000..68628f3 --- /dev/null +++ b/src/main/java/com/hmdp/service/impl/ShopTypeServiceImpl.java @@ -0,0 +1,48 @@ +package com.hmdp.service.impl; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.hmdp.dto.Result; +import com.hmdp.entity.ShopType; +import com.hmdp.mapper.ShopTypeMapper; +import com.hmdp.service.IShopTypeService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hmdp.utils.RedisConstants; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.concurrent.TimeUnit; + +import static com.hmdp.utils.RedisConstants.CACHE_SHOP_TTL; + +/** + *

+ * 服务实现类 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@Service +public class ShopTypeServiceImpl extends ServiceImpl implements IShopTypeService { + @Resource + private StringRedisTemplate stringRedisTemplate; + @Override + public Result queryTypeList() { + // list类型的数据怎么处理 + String cacheShop = stringRedisTemplate.opsForValue().get(RedisConstants.CACHE_SHOP_KEY + "list"); + if(StrUtil.isNotBlank(cacheShop)){ + // 将string转成list + return Result.ok(JSONUtil.toList(cacheShop, ShopType.class)); + } + // 如果为空去数据库查 + List sortShop = query().orderByAsc("sort").list(); + if(sortShop == null){ + return Result.fail("查询失败"); + } + stringRedisTemplate.opsForValue().set(RedisConstants.CACHE_SHOP_KEY + "list", JSONUtil.toJsonStr(sortShop),CACHE_SHOP_TTL, TimeUnit.MINUTES); + return Result.ok(sortShop); + } +} diff --git a/src/main/java/com/hmdp/service/impl/UserInfoServiceImpl.java b/src/main/java/com/hmdp/service/impl/UserInfoServiceImpl.java new file mode 100644 index 0000000..402977f --- /dev/null +++ b/src/main/java/com/hmdp/service/impl/UserInfoServiceImpl.java @@ -0,0 +1,20 @@ +package com.hmdp.service.impl; + +import com.hmdp.entity.UserInfo; +import com.hmdp.mapper.UserInfoMapper; +import com.hmdp.service.IUserInfoService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 虎哥 + * @since 2021-12-24 + */ +@Service +public class UserInfoServiceImpl extends ServiceImpl implements IUserInfoService { + +} diff --git a/src/main/java/com/hmdp/service/impl/UserServiceImpl.java b/src/main/java/com/hmdp/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..ea63632 --- /dev/null +++ b/src/main/java/com/hmdp/service/impl/UserServiceImpl.java @@ -0,0 +1,102 @@ +package com.hmdp.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; +import cn.hutool.core.lang.UUID; +import cn.hutool.core.util.RandomUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hmdp.dto.LoginFormDTO; +import com.hmdp.dto.Result; +import com.hmdp.dto.UserDTO; +import com.hmdp.entity.User; +import com.hmdp.mapper.UserMapper; +import com.hmdp.service.IUserService; +import com.hmdp.utils.RegexUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpSession; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import static com.hmdp.utils.RedisConstants.*; +import static com.hmdp.utils.SystemConstants.USER_NICK_NAME_PREFIX; + +/** + *

+ * 服务实现类 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@Slf4j +@Service +public class UserServiceImpl extends ServiceImpl implements IUserService { + @Resource + private StringRedisTemplate stringRedisTemplate; + @Override + public Result sendCode(String phone, HttpSession session) { + // 校验手机号是否合格 + if(RegexUtils.isPhoneInvalid(phone)){ + return Result.fail("手机号格式错误"); + } + // 合格生成验证码 + String code = RandomUtil.randomNumbers(6); +// // 保存到session +// session.setAttribute("code",code); + // 保存到redis,并且两分钟失效 + stringRedisTemplate.opsForValue().set(LOGIN_CODE_KEY+phone,code,LOGIN_CODE_TTL, TimeUnit.MINUTES); + // 发送验证码 + log.debug("发送验证码成功,验证码为:{}",code); + return Result.ok(); + } + + @Override + public Result login(LoginFormDTO loginForm, HttpSession session) { + // 校验手机号是否合格 + String phone = loginForm.getPhone(); + if(RegexUtils.isPhoneInvalid(phone)){ + return Result.fail("手机号格式错误"); + } + // 获取loginForm中的code对比session中的 + String code = loginForm.getCode(); +// if(code == null || !code.equals(session.getAttribute("code"))){ +// return Result.fail("验证码错误"); +// } + String cacheCode = stringRedisTemplate.opsForValue().get(LOGIN_CODE_KEY+phone); + if(code == null || !code.equals(cacheCode)){ + return Result.fail("验证码错误"); + } + // 判断用户是否存在,存在存到session,不存在创建用户 + User user = query().eq("phone", phone).one(); + if (user == null){ + user = saveUserByPhone(phone); + save(user); + } +// session.setAttribute("user",user); + // 保存用户信息到 redis中 + // 随机生成token,作为登录令牌 + String token = UUID.randomUUID().toString(true); + // 将user对象转成hashMap + UserDTO userDTO = BeanUtil.copyProperties(user, UserDTO.class); + Map userMap = BeanUtil.beanToMap(userDTO, new HashMap<>(), + CopyOptions.create() + .setIgnoreNullValue(true) + .setFieldValueEditor((fieldName, fieldValue) -> fieldValue.toString())); + stringRedisTemplate.opsForHash().putAll(LOGIN_USER_KEY+token,userMap); + stringRedisTemplate.expire(LOGIN_USER_KEY+token,LOGIN_USER_TTL,TimeUnit.MINUTES); + return Result.ok(token); + } + + private User saveUserByPhone(String phone) { + User user = new User(); + user.setPhone(phone); + user.setNickName(USER_NICK_NAME_PREFIX+RandomUtil.randomString(10)); + return user; + } +} diff --git a/src/main/java/com/hmdp/service/impl/VoucherOrderServiceImpl.java b/src/main/java/com/hmdp/service/impl/VoucherOrderServiceImpl.java new file mode 100644 index 0000000..76cf478 --- /dev/null +++ b/src/main/java/com/hmdp/service/impl/VoucherOrderServiceImpl.java @@ -0,0 +1,120 @@ +package com.hmdp.service.impl; + +import cn.hutool.db.handler.RsHandler; +import com.hmdp.config.RedissonConfig; +import com.hmdp.dto.Result; +import com.hmdp.entity.SeckillVoucher; +import com.hmdp.entity.Voucher; +import com.hmdp.entity.VoucherOrder; +import com.hmdp.mapper.VoucherOrderMapper; +import com.hmdp.service.ISeckillVoucherService; +import com.hmdp.service.IVoucherOrderService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hmdp.service.IVoucherService; +import com.hmdp.utils.RedisIdWorker; +import com.hmdp.utils.SimpleRedisLock; +import com.hmdp.utils.UserHolder; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; +import org.springframework.aop.framework.AopContext; +import org.springframework.aop.framework.AopProxy; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.time.LocalDateTime; + +/** + *

+ * 服务实现类 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@Service +public class VoucherOrderServiceImpl extends ServiceImpl implements IVoucherOrderService { + @Autowired + private ISeckillVoucherService iSeckillVoucherService; + @Autowired + private RedisIdWorker redisIdWorker; + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource + private RedissonClient redissonClient; + @Override + public Result seckillVoucher(Long voucherId) { + + // 根据vorcherId查询优惠券 + SeckillVoucher seckillVoucher = iSeckillVoucherService.getById(voucherId); + // 判断秒杀功能是否已经开始或结束 + if (seckillVoucher.getBeginTime().isAfter(LocalDateTime.now())) { + return Result.fail("秒杀功能还未开始"); + } else if (seckillVoucher.getEndTime().isBefore(LocalDateTime.now())) { + return Result.fail("秒杀功能已经结束"); + } + // 判断库存是否充足 + if(seckillVoucher.getStock()<1){ + return Result.fail("库存不足"); + } + Long userID = UserHolder.getUser().getId(); + +// // 基于悲观锁,但是这个在集群环境下还是会导致线程不安全 +// synchronized(userID.toString().intern()) { +// // 获取代理对象,才能让事务生效 +// IVoucherOrderService proxy = (IVoucherOrderService) AopContext.currentProxy(); +// return proxy.creatVoucheOrder(voucherId); +// } + // 不再用自己实现的分布式锁了,因为它存在不可重入,不可重试,超时释放,主从一致的问题 +// SimpleRedisLock simpleRedisLock = new SimpleRedisLock("oreder:" + userID, stringRedisTemplate); +// boolean isLock = simpleRedisLock.tryLock(1200L); + // 利用redission 的分布式锁可以解决上述问题 + RLock lock = redissonClient.getLock("lock:oreder:" + userID); + boolean isLock = lock.tryLock(); + if(!isLock){ + return Result.fail("请勿重复下单"); + } + // 获取代理对象,才能让事务生效 + try { + IVoucherOrderService proxy = (IVoucherOrderService) AopContext.currentProxy(); + return proxy.creatVoucheOrder(voucherId); + } finally { + // 释放锁 + lock.unlock(); + } + + } + @Transactional + public Result creatVoucheOrder(Long voucherId) { + Long userID = UserHolder.getUser().getId(); + + // 判断当前用户是否已经抢过订单了 + Integer count = query().eq("user_id", userID).eq("voucher_id", voucherId).count(); + + if(count>0){ + return Result.fail("您已经抢过该优惠券了"); + } + // 扣减库存,乐观锁,CAS法 + // boolean succed = iSeckillVoucherService.update().setSql("stock = stock-1"). + // eq("voucher_id",voucherId).eq("stock",seckillVoucher.getStock()).update(); 这种情况会导致即使有很多余额也会说库存不足 + boolean succed = iSeckillVoucherService.update().setSql("stock = stock-1"). + eq("voucher_id",voucherId).gt("stock",0).update(); + if(!succed){ + System.out.println("失败"); + return Result.fail("库存不足"); + } + // 创建一个新的voucherOrder订单 + VoucherOrder voucherOrder = new VoucherOrder(); + long orderId = redisIdWorker.nextId("order"); + voucherOrder.setId(orderId); + + voucherOrder.setUserId(userID); + voucherOrder.setVoucherId(voucherId); + save(voucherOrder); + // 返回订单id + return Result.ok(orderId); + + } +} diff --git a/src/main/java/com/hmdp/service/impl/VoucherServiceImpl.java b/src/main/java/com/hmdp/service/impl/VoucherServiceImpl.java new file mode 100644 index 0000000..8a8a3f6 --- /dev/null +++ b/src/main/java/com/hmdp/service/impl/VoucherServiceImpl.java @@ -0,0 +1,51 @@ +package com.hmdp.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.hmdp.config.RedissonConfig; +import com.hmdp.dto.Result; +import com.hmdp.entity.Voucher; +import com.hmdp.mapper.VoucherMapper; +import com.hmdp.entity.SeckillVoucher; +import com.hmdp.service.ISeckillVoucherService; +import com.hmdp.service.IVoucherService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; + +/** + *

+ * 服务实现类 + *

+ * + * @author 虎哥 + * @since 2021-12-22 + */ +@Service +public class VoucherServiceImpl extends ServiceImpl implements IVoucherService { + @Resource + private ISeckillVoucherService seckillVoucherService; + + @Override + public Result queryVoucherOfShop(Long shopId) { + // 查询优惠券信息 + List vouchers = getBaseMapper().queryVoucherOfShop(shopId); + // 返回结果 + return Result.ok(vouchers); + } + + @Override + @Transactional + public void addSeckillVoucher(Voucher voucher) { + // 保存优惠券 + save(voucher); + // 保存秒杀信息 + SeckillVoucher seckillVoucher = new SeckillVoucher(); + seckillVoucher.setVoucherId(voucher.getId()); + seckillVoucher.setStock(voucher.getStock()); + seckillVoucher.setBeginTime(voucher.getBeginTime()); + seckillVoucher.setEndTime(voucher.getEndTime()); + seckillVoucherService.save(seckillVoucher); + } +} diff --git a/src/main/java/com/hmdp/utils/ILock.java b/src/main/java/com/hmdp/utils/ILock.java new file mode 100644 index 0000000..b617aa5 --- /dev/null +++ b/src/main/java/com/hmdp/utils/ILock.java @@ -0,0 +1,7 @@ +package com.hmdp.utils; + +public interface ILock { + boolean tryLock(Long timeOutSec); + + void unLock(); +} diff --git a/src/main/java/com/hmdp/utils/LoginInterceptor.java b/src/main/java/com/hmdp/utils/LoginInterceptor.java new file mode 100644 index 0000000..1910098 --- /dev/null +++ b/src/main/java/com/hmdp/utils/LoginInterceptor.java @@ -0,0 +1,30 @@ +package com.hmdp.utils; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +import com.hmdp.dto.UserDTO; +import com.hmdp.entity.User; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import static com.hmdp.utils.RedisConstants.LOGIN_USER_KEY; + +public class LoginInterceptor implements HandlerInterceptor { + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + if(UserHolder.getUser() == null){ + response.setStatus(401); + return false; + } + return true; + } +} diff --git a/src/main/java/com/hmdp/utils/PasswordEncoder.java b/src/main/java/com/hmdp/utils/PasswordEncoder.java new file mode 100644 index 0000000..1360e38 --- /dev/null +++ b/src/main/java/com/hmdp/utils/PasswordEncoder.java @@ -0,0 +1,34 @@ +package com.hmdp.utils; + + +import cn.hutool.core.util.RandomUtil; +import org.springframework.util.DigestUtils; + +import java.nio.charset.StandardCharsets; + +public class PasswordEncoder { + + public static String encode(String password) { + // 生成盐 + String salt = RandomUtil.randomString(20); + // 加密 + return encode(password,salt); + } + private static String encode(String password, String salt) { + // 加密 + return salt + "@" + DigestUtils.md5DigestAsHex((password + salt).getBytes(StandardCharsets.UTF_8)); + } + public static Boolean matches(String encodedPassword, String rawPassword) { + if (encodedPassword == null || rawPassword == null) { + return false; + } + if(!encodedPassword.contains("@")){ + throw new RuntimeException("密码格式不正确!"); + } + String[] arr = encodedPassword.split("@"); + // 获取盐 + String salt = arr[0]; + // 比较 + return encodedPassword.equals(encode(rawPassword, salt)); + } +} diff --git a/src/main/java/com/hmdp/utils/RedisConstants.java b/src/main/java/com/hmdp/utils/RedisConstants.java new file mode 100644 index 0000000..c8f8c66 --- /dev/null +++ b/src/main/java/com/hmdp/utils/RedisConstants.java @@ -0,0 +1,22 @@ +package com.hmdp.utils; + +public class RedisConstants { + public static final String LOGIN_CODE_KEY = "login:code:"; + public static final Long LOGIN_CODE_TTL = 2L; + public static final String LOGIN_USER_KEY = "login:token:"; + public static final Long LOGIN_USER_TTL = 30L; + + public static final Long CACHE_NULL_TTL = 2L; + + public static final Long CACHE_SHOP_TTL = 30L; + public static final String CACHE_SHOP_KEY = "cache:shop:"; + + public static final String LOCK_SHOP_KEY = "lock:shop:"; + public static final Long LOCK_SHOP_TTL = 10L; + + public static final String SECKILL_STOCK_KEY = "seckill:stock:"; + public static final String BLOG_LIKED_KEY = "blog:liked:"; + public static final String FEED_KEY = "feed:"; + public static final String SHOP_GEO_KEY = "shop:geo:"; + public static final String USER_SIGN_KEY = "sign:"; +} diff --git a/src/main/java/com/hmdp/utils/RedisData.java b/src/main/java/com/hmdp/utils/RedisData.java new file mode 100644 index 0000000..8f777fc --- /dev/null +++ b/src/main/java/com/hmdp/utils/RedisData.java @@ -0,0 +1,11 @@ +package com.hmdp.utils; + +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class RedisData { + private LocalDateTime expireTime; + private Object data; +} diff --git a/src/main/java/com/hmdp/utils/RedisIdWorker.java b/src/main/java/com/hmdp/utils/RedisIdWorker.java new file mode 100644 index 0000000..7a4ce0a --- /dev/null +++ b/src/main/java/com/hmdp/utils/RedisIdWorker.java @@ -0,0 +1,31 @@ +package com.hmdp.utils; + +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.time.format.DateTimeFormatter; + +@Component +public class RedisIdWorker { + private static final long BEGIN_TIMESTAMP = 1640995200L; + private static final long COUNT_BITS = 32; + @Resource + private StringRedisTemplate stringRedisTemplate; + // 拼接一个时间戳,再加一个根据输入的字符串自增长的32位id + public long nextId(String prefix) { + LocalDateTime now = LocalDateTime.now(); + long GapSecond = now.toEpochSecond(ZoneOffset.UTC)-BEGIN_TIMESTAMP; + String date = now.format(DateTimeFormatter.ofPattern("yyyyMMdd")); + long count = stringRedisTemplate.opsForValue().increment("icr:" + prefix+date); + return GapSecond <<32 | count; + } + + +// public static void main(String[] args) { +// LocalDateTime localDateTime = LocalDateTime.of(2022, 1, 1, 0, 0, 0); +// System.out.println(localDateTime.toEpochSecond(ZoneOffset.UTC)); //获取这个时间的秒数 +// } +} diff --git a/src/main/java/com/hmdp/utils/RefreshTokenInterceptor.java b/src/main/java/com/hmdp/utils/RefreshTokenInterceptor.java new file mode 100644 index 0000000..c2b10dd --- /dev/null +++ b/src/main/java/com/hmdp/utils/RefreshTokenInterceptor.java @@ -0,0 +1,52 @@ +package com.hmdp.utils; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +import com.hmdp.dto.UserDTO; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import static com.hmdp.utils.RedisConstants.LOGIN_USER_KEY; + +public class RefreshTokenInterceptor implements HandlerInterceptor { + private final StringRedisTemplate stringRedisTemplate; + public RefreshTokenInterceptor(StringRedisTemplate stringRedisTemplate) { + this.stringRedisTemplate = stringRedisTemplate; + } + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + // 获取token + String token = request.getHeader("authorization"); + if (StrUtil.isBlank(token)) { + return true; + } +// HttpSession session = request.getSession(); +// User user = (User) session.getAttribute("user"); + System.out.println(stringRedisTemplate); + Map userMap = stringRedisTemplate.opsForHash().entries(LOGIN_USER_KEY + token); + + if (userMap.isEmpty()) { + return true; + } + // 将userMap转成userDto + UserDTO userdto = BeanUtil.fillBeanWithMap(userMap, new UserDTO(), false); + // 将user信息保存到线程中 + UserHolder.saveUser(userdto); + // 更新token的时间,service层的那种写法是直接三十分钟后就会失效 + // 但是实际应该是三十分钟没访问的话才失效 + stringRedisTemplate.expire(LOGIN_USER_KEY + token, RedisConstants.LOGIN_USER_TTL, TimeUnit.MINUTES); + return true; + } + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + // 移除用户 + UserHolder.removeUser(); + } +} diff --git a/src/main/java/com/hmdp/utils/RegexPatterns.java b/src/main/java/com/hmdp/utils/RegexPatterns.java new file mode 100644 index 0000000..2276859 --- /dev/null +++ b/src/main/java/com/hmdp/utils/RegexPatterns.java @@ -0,0 +1,24 @@ +package com.hmdp.utils; + +/** + * @author 虎哥 + */ +public abstract class RegexPatterns { + /** + * 手机号正则 + */ + public static final String PHONE_REGEX = "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$"; + /** + * 邮箱正则 + */ + public static final String EMAIL_REGEX = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$"; + /** + * 密码正则。4~32位的字母、数字、下划线 + */ + public static final String PASSWORD_REGEX = "^\\w{4,32}$"; + /** + * 验证码正则, 6位数字或字母 + */ + public static final String VERIFY_CODE_REGEX = "^[a-zA-Z\\d]{6}$"; + +} diff --git a/src/main/java/com/hmdp/utils/RegexUtils.java b/src/main/java/com/hmdp/utils/RegexUtils.java new file mode 100644 index 0000000..8936b56 --- /dev/null +++ b/src/main/java/com/hmdp/utils/RegexUtils.java @@ -0,0 +1,42 @@ +package com.hmdp.utils; + +import cn.hutool.core.util.StrUtil; + +/** + * @author 虎哥 + */ +public class RegexUtils { + /** + * 是否是无效手机格式 + * @param phone 要校验的手机号 + * @return true:符合,false:不符合 + */ + public static boolean isPhoneInvalid(String phone){ + return mismatch(phone, RegexPatterns.PHONE_REGEX); + } + /** + * 是否是无效邮箱格式 + * @param email 要校验的邮箱 + * @return true:符合,false:不符合 + */ + public static boolean isEmailInvalid(String email){ + return mismatch(email, RegexPatterns.EMAIL_REGEX); + } + + /** + * 是否是无效验证码格式 + * @param code 要校验的验证码 + * @return true:符合,false:不符合 + */ + public static boolean isCodeInvalid(String code){ + return mismatch(code, RegexPatterns.VERIFY_CODE_REGEX); + } + + // 校验是否不符合正则格式 + private static boolean mismatch(String str, String regex){ + if (StrUtil.isBlank(str)) { + return true; + } + return !str.matches(regex); + } +} diff --git a/src/main/java/com/hmdp/utils/SimpleRedisLock.java b/src/main/java/com/hmdp/utils/SimpleRedisLock.java new file mode 100644 index 0000000..665e95f --- /dev/null +++ b/src/main/java/com/hmdp/utils/SimpleRedisLock.java @@ -0,0 +1,61 @@ +package com.hmdp.utils; + +import cn.hutool.core.lang.UUID; +import org.springframework.core.io.ClassPathResource; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.data.redis.core.script.DefaultRedisScript; +import org.springframework.data.redis.core.script.RedisScript; + +import java.util.Collections; +import java.util.concurrent.TimeUnit; + +public class SimpleRedisLock implements ILock { + private String name; + private StringRedisTemplate stringRedisTemplate; + private static final String KEY_PREFIX = "lock:"; + private static final String ID_PREFIX = UUID.randomUUID().toString(true)+"-"; + private static final DefaultRedisScript UNLOCK_SCRIPT; + + // 通过静态代码块,在类初始化的时候就创建了lua脚本 + static { + UNLOCK_SCRIPT = new DefaultRedisScript<>(); + UNLOCK_SCRIPT.setLocation(new ClassPathResource("unlock.lua")); + UNLOCK_SCRIPT.setResultType(Long.class); + } + + + public SimpleRedisLock(String name, StringRedisTemplate stringRedisTemplate) { + this.name = name; + this.stringRedisTemplate = stringRedisTemplate; + } + + @Override + public boolean tryLock(Long timeOutSec) { + // 获取当前线程id + String threadId = ID_PREFIX+Thread.currentThread().getId(); + Boolean succed = stringRedisTemplate.opsForValue().setIfAbsent(KEY_PREFIX + name, threadId , timeOutSec, TimeUnit.SECONDS); + + return Boolean.TRUE.equals(succed); + } + + @Override +// // 这种实现方法不能保证原子性 +// public void unLock() { +// // 释放锁直接删除就好了 +// // 但是直接删除又会存在一个问题,就是有可能删除的不是自己的锁,所以需要判断 +// String threadId = ID_PREFIX+Thread.currentThread().getId(); +// String id = stringRedisTemplate.opsForValue().get(KEY_PREFIX + name); +// if(id.equals(threadId)) { +// stringRedisTemplate.delete(KEY_PREFIX + name); +// } +// } + public void unLock() { + // 调用lua脚本 + stringRedisTemplate.execute( + UNLOCK_SCRIPT, + Collections.singletonList(KEY_PREFIX+name), + ID_PREFIX+Thread.currentThread().getId() + ); + } +} diff --git a/src/main/java/com/hmdp/utils/SystemConstants.java b/src/main/java/com/hmdp/utils/SystemConstants.java new file mode 100644 index 0000000..691fb00 --- /dev/null +++ b/src/main/java/com/hmdp/utils/SystemConstants.java @@ -0,0 +1,8 @@ +package com.hmdp.utils; + +public class SystemConstants { + public static final String IMAGE_UPLOAD_DIR = "D:\\lesson\\nginx-1.18.0\\html\\hmdp\\imgs\\"; + public static final String USER_NICK_NAME_PREFIX = "user_"; + public static final int DEFAULT_PAGE_SIZE = 5; + public static final int MAX_PAGE_SIZE = 10; +} diff --git a/src/main/java/com/hmdp/utils/UserHolder.java b/src/main/java/com/hmdp/utils/UserHolder.java new file mode 100644 index 0000000..3acc718 --- /dev/null +++ b/src/main/java/com/hmdp/utils/UserHolder.java @@ -0,0 +1,21 @@ +package com.hmdp.utils; + + +import com.hmdp.dto.UserDTO; +import com.hmdp.entity.User; + +public class UserHolder { + private static final ThreadLocal tl = new ThreadLocal<>(); + + public static void saveUser(UserDTO user){ + tl.set(user); + } + + public static UserDTO getUser(){ + return tl.get(); + } + + public static void removeUser(){ + tl.remove(); + } +} diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml new file mode 100644 index 0000000..b1c3e74 --- /dev/null +++ b/src/main/resources/application.yaml @@ -0,0 +1,27 @@ +server: + port: 8081 +spring: + application: + name: hmdp + datasource: + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3307/hmdp?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC + username: root + password: 123456 + redis: + host: localhost + port: 6379 + password: ningzaichun + lettuce: + pool: + max-active: 10 + max-idle: 10 + min-idle: 1 + time-between-eviction-runs: 10s + jackson: + default-property-inclusion: non_null # JSON处理时忽略非空字段 +mybatis-plus: + type-aliases-package: com.hmdp.entity # 别名扫描包 +logging: + level: + com.hmdp: debug \ No newline at end of file diff --git a/src/main/resources/db/hmdp.sql b/src/main/resources/db/hmdp.sql new file mode 100644 index 0000000..e500b9d --- /dev/null +++ b/src/main/resources/db/hmdp.sql @@ -0,0 +1,1284 @@ +/* + Navicat Premium Data Transfer + + Source Server : local + Source Server Type : MySQL + Source Server Version : 50622 + Source Host : localhost:3306 + Source Schema : hmdp + + Target Server Type : MySQL + Target Server Version : 50622 + File Encoding : 65001 + + Date: 14/03/2022 21:38:11 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for tb_blog +-- ---------------------------- +DROP TABLE IF EXISTS `tb_blog`; +CREATE TABLE `tb_blog` ( + `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', + `shop_id` bigint(20) NOT NULL COMMENT '商户id', + `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '用户id', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '标题', + `images` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '探店的照片,最多9张,多张以\",\"隔开', + `content` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '探店的文字描述', + `liked` int(8) UNSIGNED NULL DEFAULT 0 COMMENT '点赞数量', + `comments` int(8) UNSIGNED NULL DEFAULT NULL COMMENT '评论数量', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 23 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of tb_blog +-- ---------------------------- +INSERT INTO `tb_blog` VALUES (4, 4, 2, '无尽浪漫的夜晚丨在万花丛中摇晃着红酒杯🍷品战斧牛排🥩', '/imgs/blogs/7/14/4771fefb-1a87-4252-816c-9f7ec41ffa4a.jpg,/imgs/blogs/4/10/2f07e3c9-ddce-482d-9ea7-c21450f8d7cd.jpg,/imgs/blogs/2/6/b0756279-65da-4f2d-b62a-33f74b06454a.jpg,/imgs/blogs/10/7/7e97f47d-eb49-4dc9-a583-95faa7aed287.jpg,/imgs/blogs/1/2/4a7b496b-2a08-4af7-aa95-df2c3bd0ef97.jpg,/imgs/blogs/14/3/52b290eb-8b5d-403b-8373-ba0bb856d18e.jpg', '生活就是一半烟火·一半诗意
手执烟火谋生活·心怀诗意以谋爱·
当然
\r\n男朋友给不了的浪漫要学会自己给🍒
\n无法重来的一生·尽量快乐.

🏰「小筑里·神秘浪漫花园餐厅」🏰

\n💯这是一家最最最美花园的西餐厅·到处都是花餐桌上是花前台是花 美好无处不在\n品一口葡萄酒,维亚红酒马瑟兰·微醺上头工作的疲惫消失无际·生如此多娇🍃

📍地址:延安路200号(家乐福面)

🚌交通:地铁①号线定安路B口出右转过下通道右转就到啦~

--------------🥣菜品详情🥣---------------

「战斧牛排]
\n超大一块战斧牛排经过火焰的炙烤发出阵阵香,外焦里嫩让人垂涎欲滴,切开牛排的那一刻,牛排的汁水顺势流了出来,分熟的牛排肉质软,简直细嫩到犯规,一刻都等不了要放入嘴里咀嚼~

「奶油培根意面」
太太太好吃了💯
我真的无法形容它的美妙,意面混合奶油香菇的香味真的太太太香了,我真的舔盘了,一丁点美味都不想浪费‼️


「香菜汁烤鲈鱼」
这个酱是辣的 真的绝好吃‼️
鲈鱼本身就很嫩没什么刺,烤过之后外皮酥酥的,鱼肉蘸上酱料根本停不下来啊啊啊啊
能吃辣椒的小伙伴一定要尝尝

非常可 好吃子🍽\n
--------------🍃个人感受🍃---------------

【👩🏻‍🍳服务】
小姐姐特别耐心的给我们介绍彩票
推荐特色菜品,拍照需要帮忙也是尽心尽力配合,太爱他们了

【🍃环境】
比较有格调的西餐厅 整个餐厅的布局可称得上的万花丛生 有种在人间仙境的感觉🌸
集美食美酒与鲜花为一体的风格店铺 令人向往
烟火皆是生活 人间皆是浪漫
', 1, 104, '2021-12-28 19:50:01', '2022-03-10 14:26:34'); +INSERT INTO `tb_blog` VALUES (5, 1, 2, '人均30💰杭州这家港式茶餐厅我疯狂打call‼️', '/imgs/blogs/4/7/863cc302-d150-420d-a596-b16e9232a1a6.jpg,/imgs/blogs/11/12/8b37d208-9414-4e78-b065-9199647bb3e3.jpg,/imgs/blogs/4/1/fa74a6d6-3026-4cb7-b0b6-35abb1e52d11.jpg,/imgs/blogs/9/12/ac2ce2fb-0605-4f14-82cc-c962b8c86688.jpg,/imgs/blogs/4/0/26a7cd7e-6320-432c-a0b4-1b7418f45ec7.jpg,/imgs/blogs/15/9/cea51d9b-ac15-49f6-b9f1-9cf81e9b9c85.jpg', '又吃到一家好吃的茶餐厅🍴环境是怀旧tvb港风📺边吃边拍照片📷几十种菜品均价都在20+💰可以是很平价了!
·
店名:九记冰厅(远洋店)
地址:杭州市丽水路远洋乐堤港负一楼(溜冰场旁边)
·
✔️黯然销魂饭(38💰)
这碗饭我吹爆!米饭上盖满了甜甜的叉烧 还有两颗溏心蛋🍳每一粒米饭都裹着浓郁的酱汁 光盘了
·
✔️铜锣湾漏奶华(28💰)
黄油吐司烤的脆脆的 上面洒满了可可粉🍫一刀切开 奶盖流心像瀑布一样流出来 满足
·
✔️神仙一口西多士士(16💰)
简简单单却超级好吃!西多士烤的很脆 黄油味浓郁 面包体超级柔软 上面淋了炼乳
·
✔️怀旧五柳炸蛋饭(28💰)
四个鸡蛋炸成蓬松的炸蛋!也太好吃了吧!还有大块鸡排 上淋了酸甜的酱汁 太合我胃口了!!
·
✔️烧味双拼例牌(66💰)
选了烧鹅➕叉烧 他家烧腊品质真的惊艳到我!据说是每日广州发货 到店现烧现卖的黑棕鹅 每口都是正宗的味道!肉质很嫩 皮超级超级酥脆!一口爆油!叉烧肉也一点都不柴 甜甜的很入味 搭配梅子酱很解腻 !
·
✔️红烧脆皮乳鸽(18.8💰)
乳鸽很大只 这个价格也太划算了吧, 肉质很有嚼劲 脆皮很酥 越吃越香~
·
✔️大满足小吃拼盘(25💰)
翅尖➕咖喱鱼蛋➕蝴蝶虾➕盐酥鸡
zui喜欢里面的咖喱鱼!咖喱酱香甜浓郁!鱼蛋很q弹~
·
✔️港式熊仔丝袜奶茶(19💰)
小熊🐻造型的奶茶冰也太可爱了!颜值担当 很地道的丝袜奶茶 茶味特别浓郁~
·', 1, 0, '2021-12-28 20:57:49', '2022-03-10 09:21:39'); +INSERT INTO `tb_blog` VALUES (6, 10, 1, '杭州周末好去处|💰50就可以骑马啦🐎', '/imgs/blogs/blog1.jpg', '杭州周末好去处|💰50就可以骑马啦🐎', 1, 0, '2022-01-11 16:05:47', '2022-03-10 09:21:41'); +INSERT INTO `tb_blog` VALUES (7, 10, 1, '杭州周末好去处|💰50就可以骑马啦🐎', '/imgs/blogs/blog1.jpg', '杭州周末好去处|💰50就可以骑马啦🐎', 1, 0, '2022-01-11 16:05:47', '2022-03-10 09:21:42'); + +-- ---------------------------- +-- Table structure for tb_blog_comments +-- ---------------------------- +DROP TABLE IF EXISTS `tb_blog_comments`; +CREATE TABLE `tb_blog_comments` ( + `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', + `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '用户id', + `blog_id` bigint(20) UNSIGNED NOT NULL COMMENT '探店id', + `parent_id` bigint(20) UNSIGNED NOT NULL COMMENT '关联的1级评论id,如果是一级评论,则值为0', + `answer_id` bigint(20) UNSIGNED NOT NULL COMMENT '回复的评论id', + `content` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '回复的内容', + `liked` int(8) UNSIGNED NULL DEFAULT NULL COMMENT '点赞数', + `status` tinyint(1) UNSIGNED NULL DEFAULT NULL COMMENT '状态,0:正常,1:被举报,2:禁止查看', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of tb_blog_comments +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tb_follow +-- ---------------------------- +DROP TABLE IF EXISTS `tb_follow`; +CREATE TABLE `tb_follow` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', + `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '用户id', + `follow_user_id` bigint(20) UNSIGNED NOT NULL COMMENT '关联的用户id', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of tb_follow +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tb_seckill_voucher +-- ---------------------------- +DROP TABLE IF EXISTS `tb_seckill_voucher`; +CREATE TABLE `tb_seckill_voucher` ( + `voucher_id` bigint(20) UNSIGNED NOT NULL COMMENT '关联的优惠券的id', + `stock` int(8) NOT NULL COMMENT '库存', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `begin_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '生效时间', + `end_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '失效时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`voucher_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '秒杀优惠券表,与优惠券是一对一关系' ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of tb_seckill_voucher +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tb_shop +-- ---------------------------- +DROP TABLE IF EXISTS `tb_shop`; +CREATE TABLE `tb_shop` ( + `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', + `name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '商铺名称', + `type_id` bigint(20) UNSIGNED NOT NULL COMMENT '商铺类型的id', + `images` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '商铺图片,多个图片以\',\'隔开', + `area` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '商圈,例如陆家嘴', + `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '地址', + `x` double UNSIGNED NOT NULL COMMENT '经度', + `y` double UNSIGNED NOT NULL COMMENT '维度', + `avg_price` bigint(10) UNSIGNED NULL DEFAULT NULL COMMENT '均价,取整数', + `sold` int(10) UNSIGNED ZEROFILL NOT NULL COMMENT '销量', + `comments` int(10) UNSIGNED ZEROFILL NOT NULL COMMENT '评论数量', + `score` int(2) UNSIGNED ZEROFILL NOT NULL COMMENT '评分,1~5分,乘10保存,避免小数', + `open_hours` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '营业时间,例如 10:00-22:00', + `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + INDEX `foreign_key_type`(`type_id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of tb_shop +-- ---------------------------- +INSERT INTO `tb_shop` VALUES (1, '103茶餐厅', 1, 'https://qcloud.dpfile.com/pc/jiclIsCKmOI2arxKN1Uf0Hx3PucIJH8q0QSz-Z8llzcN56-_QiKuOvyio1OOxsRtFoXqu0G3iT2T27qat3WhLVEuLYk00OmSS1IdNpm8K8sG4JN9RIm2mTKcbLtc2o2vfCF2ubeXzk49OsGrXt_KYDCngOyCwZK-s3fqawWswzk.jpg,https://qcloud.dpfile.com/pc/IOf6VX3qaBgFXFVgp75w-KKJmWZjFc8GXDU8g9bQC6YGCpAmG00QbfT4vCCBj7njuzFvxlbkWx5uwqY2qcjixFEuLYk00OmSS1IdNpm8K8sG4JN9RIm2mTKcbLtc2o2vmIU_8ZGOT1OjpJmLxG6urQ.jpg', '大关', '金华路锦昌文华苑29号', 120.149192, 30.316078, 80, 0000004215, 0000003035, 37, '10:00-22:00', '2021-12-22 18:10:39', '2022-01-13 17:32:19'); +INSERT INTO `tb_shop` VALUES (2, '蔡馬洪涛烤肉·老北京铜锅涮羊肉', 1, 'https://p0.meituan.net/bbia/c1870d570e73accbc9fee90b48faca41195272.jpg,http://p0.meituan.net/mogu/397e40c28fc87715b3d5435710a9f88d706914.jpg,https://qcloud.dpfile.com/pc/MZTdRDqCZdbPDUO0Hk6lZENRKzpKRF7kavrkEI99OxqBZTzPfIxa5E33gBfGouhFuzFvxlbkWx5uwqY2qcjixFEuLYk00OmSS1IdNpm8K8sG4JN9RIm2mTKcbLtc2o2vmIU_8ZGOT1OjpJmLxG6urQ.jpg', '拱宸桥/上塘', '上塘路1035号(中国工商银行旁)', 120.151505, 30.333422, 85, 0000002160, 0000001460, 46, '11:30-03:00', '2021-12-22 19:00:13', '2022-01-11 16:12:26'); +INSERT INTO `tb_shop` VALUES (3, '新白鹿餐厅(运河上街店)', 1, 'https://p0.meituan.net/biztone/694233_1619500156517.jpeg,https://img.meituan.net/msmerchant/876ca8983f7395556eda9ceb064e6bc51840883.png,https://img.meituan.net/msmerchant/86a76ed53c28eff709a36099aefe28b51554088.png', '运河上街', '台州路2号运河上街购物中心F5', 120.151954, 30.32497, 61, 0000012035, 0000008045, 47, '10:30-21:00', '2021-12-22 19:10:05', '2022-01-11 16:12:42'); +INSERT INTO `tb_shop` VALUES (4, 'Mamala(杭州远洋乐堤港店)', 1, 'https://img.meituan.net/msmerchant/232f8fdf09050838bd33fb24e79f30f9606056.jpg,https://qcloud.dpfile.com/pc/rDe48Xe15nQOHCcEEkmKUp5wEKWbimt-HDeqYRWsYJseXNncvMiXbuED7x1tXqN4uzFvxlbkWx5uwqY2qcjixFEuLYk00OmSS1IdNpm8K8sG4JN9RIm2mTKcbLtc2o2vmIU_8ZGOT1OjpJmLxG6urQ.jpg', '拱宸桥/上塘', '丽水路66号远洋乐堤港商城2期1层B115号', 120.146659, 30.312742, 290, 0000013519, 0000009529, 49, '11:00-22:00', '2021-12-22 19:17:15', '2022-01-11 16:12:51'); +INSERT INTO `tb_shop` VALUES (5, '海底捞火锅(水晶城购物中心店)', 1, 'https://img.meituan.net/msmerchant/054b5de0ba0b50c18a620cc37482129a45739.jpg,https://img.meituan.net/msmerchant/59b7eff9b60908d52bd4aea9ff356e6d145920.jpg,https://qcloud.dpfile.com/pc/Qe2PTEuvtJ5skpUXKKoW9OQ20qc7nIpHYEqJGBStJx0mpoyeBPQOJE4vOdYZwm9AuzFvxlbkWx5uwqY2qcjixFEuLYk00OmSS1IdNpm8K8sG4JN9RIm2mTKcbLtc2o2vmIU_8ZGOT1OjpJmLxG6urQ.jpg', '大关', '上塘路458号水晶城购物中心F6', 120.15778, 30.310633, 104, 0000004125, 0000002764, 49, '10:00-07:00', '2021-12-22 19:20:58', '2022-01-11 16:13:01'); +INSERT INTO `tb_shop` VALUES (6, '幸福里老北京涮锅(丝联店)', 1, 'https://img.meituan.net/msmerchant/e71a2d0d693b3033c15522c43e03f09198239.jpg,https://img.meituan.net/msmerchant/9f8a966d60ffba00daf35458522273ca658239.jpg,https://img.meituan.net/msmerchant/ef9ca5ef6c05d381946fe4a9aa7d9808554502.jpg', '拱宸桥/上塘', '金华南路189号丝联166号', 120.148603, 30.318618, 130, 0000009531, 0000007324, 46, '11:00-13:50,17:00-20:50', '2021-12-22 19:24:53', '2022-01-11 16:13:09'); +INSERT INTO `tb_shop` VALUES (7, '炉鱼(拱墅万达广场店)', 1, 'https://img.meituan.net/msmerchant/909434939a49b36f340523232924402166854.jpg,https://img.meituan.net/msmerchant/32fd2425f12e27db0160e837461c10303700032.jpg,https://img.meituan.net/msmerchant/f7022258ccb8dabef62a0514d3129562871160.jpg', '北部新城', '杭行路666号万达商业中心4幢2单元409室(铺位号4005)', 120.124691, 30.336819, 85, 0000002631, 0000001320, 47, '00:00-24:00', '2021-12-22 19:40:52', '2022-01-11 16:13:19'); +INSERT INTO `tb_shop` VALUES (8, '浅草屋寿司(运河上街店)', 1, 'https://img.meituan.net/msmerchant/cf3dff697bf7f6e11f4b79c4e7d989e4591290.jpg,https://img.meituan.net/msmerchant/0b463f545355c8d8f021eb2987dcd0c8567811.jpg,https://img.meituan.net/msmerchant/c3c2516939efaf36c4ccc64b0e629fad587907.jpg', '运河上街', '拱墅区金华路80号运河上街B1', 120.150526, 30.325231, 88, 0000002406, 0000001206, 46, ' 11:00-21:30', '2021-12-22 19:51:06', '2022-01-11 16:13:25'); +INSERT INTO `tb_shop` VALUES (9, '羊老三羊蝎子牛仔排北派炭火锅(运河上街店)', 1, 'https://p0.meituan.net/biztone/163160492_1624251899456.jpeg,https://img.meituan.net/msmerchant/e478eb16f7e31a7f8b29b5e3bab6de205500837.jpg,https://img.meituan.net/msmerchant/6173eb1d18b9d70ace7fdb3f2dd939662884857.jpg', '运河上街', '台州路2号运河上街购物中心F5', 120.150598, 30.325251, 101, 0000002763, 0000001363, 44, '11:00-21:30', '2021-12-22 19:53:59', '2022-01-11 16:13:34'); +INSERT INTO `tb_shop` VALUES (10, '开乐迪KTV(运河上街店)', 2, 'https://p0.meituan.net/joymerchant/a575fd4adb0b9099c5c410058148b307-674435191.jpg,https://p0.meituan.net/merchantpic/68f11bf850e25e437c5f67decfd694ab2541634.jpg,https://p0.meituan.net/dpdeal/cb3a12225860ba2875e4ea26c6d14fcc197016.jpg', '运河上街', '台州路2号运河上街购物中心F4', 120.149093, 30.324666, 67, 0000026891, 0000000902, 37, '00:00-24:00', '2021-12-22 20:25:16', '2021-12-22 20:25:16'); +INSERT INTO `tb_shop` VALUES (11, 'INLOVE KTV(水晶城店)', 2, 'https://p0.meituan.net/dpmerchantpic/53e74b200211d68988a4f02ae9912c6c1076826.jpg,https://qcloud.dpfile.com/pc/4iWtIvzLzwM2MGgyPu1PCDb4SWEaKqUeHm--YAt1EwR5tn8kypBcqNwHnjg96EvT_Gd2X_f-v9T8Yj4uLt25Gg.jpg,https://qcloud.dpfile.com/pc/WZsJWRI447x1VG2x48Ujgu7vwqksi_9WitdKI4j3jvIgX4MZOpGNaFtM93oSSizbGybIjx5eX6WNgCPvcASYAw.jpg', '水晶城', '上塘路458号水晶城购物中心6层', 120.15853, 30.310002, 75, 0000035977, 0000005684, 47, '11:30-06:00', '2021-12-22 20:29:02', '2021-12-22 20:39:00'); +INSERT INTO `tb_shop` VALUES (12, '魅(杭州远洋乐堤港店)', 2, 'https://p0.meituan.net/dpmerchantpic/63833f6ba0393e2e8722420ef33f3d40466664.jpg,https://p0.meituan.net/dpmerchantpic/ae3c94cc92c529c4b1d7f68cebed33fa105810.png,', '远洋乐堤港', '丽水路58号远洋乐堤港F4', 120.14983, 30.31211, 88, 0000006444, 0000000235, 46, '10:00-02:00', '2021-12-22 20:34:34', '2021-12-22 20:34:34'); +INSERT INTO `tb_shop` VALUES (13, '讴K拉量贩KTV(北城天地店)', 2, 'https://p1.meituan.net/merchantpic/598c83a8c0d06fe79ca01056e214d345875600.jpg,https://qcloud.dpfile.com/pc/HhvI0YyocYHRfGwJWqPQr34hRGRl4cWdvlNwn3dqghvi4WXlM2FY1te0-7pE3Wb9_Gd2X_f-v9T8Yj4uLt25Gg.jpg,https://qcloud.dpfile.com/pc/F5ZVzZaXFE27kvQzPnaL4V8O9QCpVw2nkzGrxZE8BqXgkfyTpNExfNG5CEPQX4pjGybIjx5eX6WNgCPvcASYAw.jpg', 'D32天阳购物中心', '湖州街567号北城天地5层', 120.130453, 30.327655, 58, 0000018997, 0000001857, 41, '12:00-02:00', '2021-12-22 20:38:54', '2021-12-22 20:40:04'); +INSERT INTO `tb_shop` VALUES (14, '星聚会KTV(拱墅区万达店)', 2, 'https://p0.meituan.net/dpmerchantpic/f4cd6d8d4eb1959c3ea826aa05a552c01840451.jpg,https://p0.meituan.net/dpmerchantpic/2efc07aed856a8ab0fc75c86f4b9b0061655777.jpg,https://qcloud.dpfile.com/pc/zWfzzIorCohKT0bFwsfAlHuayWjI6DBEMPHHncmz36EEMU9f48PuD9VxLLDAjdoU_Gd2X_f-v9T8Yj4uLt25Gg.jpg', '北部新城', '杭行路666号万达广场C座1-2F', 120.128958, 30.337252, 60, 0000017771, 0000000685, 47, '10:00-22:00', '2021-12-22 20:48:54', '2021-12-22 20:48:54'); + +-- ---------------------------- +-- Table structure for tb_shop_type +-- ---------------------------- +DROP TABLE IF EXISTS `tb_shop_type`; +CREATE TABLE `tb_shop_type` ( + `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', + `name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '类型名称', + `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图标', + `sort` int(3) UNSIGNED NULL DEFAULT NULL COMMENT '顺序', + `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of tb_shop_type +-- ---------------------------- +INSERT INTO `tb_shop_type` VALUES (1, '美食', '/types/ms.png', 1, '2021-12-22 20:17:47', '2021-12-23 11:24:31'); +INSERT INTO `tb_shop_type` VALUES (2, 'KTV', '/types/KTV.png', 2, '2021-12-22 20:18:27', '2021-12-23 11:24:31'); +INSERT INTO `tb_shop_type` VALUES (3, '丽人·美发', '/types/lrmf.png', 3, '2021-12-22 20:18:48', '2021-12-23 11:24:31'); +INSERT INTO `tb_shop_type` VALUES (4, '健身运动', '/types/jsyd.png', 10, '2021-12-22 20:19:04', '2021-12-23 11:24:31'); +INSERT INTO `tb_shop_type` VALUES (5, '按摩·足疗', '/types/amzl.png', 5, '2021-12-22 20:19:27', '2021-12-23 11:24:31'); +INSERT INTO `tb_shop_type` VALUES (6, '美容SPA', '/types/spa.png', 6, '2021-12-22 20:19:35', '2021-12-23 11:24:31'); +INSERT INTO `tb_shop_type` VALUES (7, '亲子游乐', '/types/qzyl.png', 7, '2021-12-22 20:19:53', '2021-12-23 11:24:31'); +INSERT INTO `tb_shop_type` VALUES (8, '酒吧', '/types/jiuba.png', 8, '2021-12-22 20:20:02', '2021-12-23 11:24:31'); +INSERT INTO `tb_shop_type` VALUES (9, '轰趴馆', '/types/hpg.png', 9, '2021-12-22 20:20:08', '2021-12-23 11:24:31'); +INSERT INTO `tb_shop_type` VALUES (10, '美睫·美甲', '/types/mjmj.png', 4, '2021-12-22 20:21:46', '2021-12-23 11:24:31'); + +-- ---------------------------- +-- Table structure for tb_sign +-- ---------------------------- +DROP TABLE IF EXISTS `tb_sign`; +CREATE TABLE `tb_sign` ( + `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', + `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '用户id', + `year` year NOT NULL COMMENT '签到的年', + `month` tinyint(2) NOT NULL COMMENT '签到的月', + `date` date NOT NULL COMMENT '签到的日期', + `is_backup` tinyint(1) UNSIGNED NULL DEFAULT NULL COMMENT '是否补签', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of tb_sign +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tb_user +-- ---------------------------- +DROP TABLE IF EXISTS `tb_user`; +CREATE TABLE `tb_user` ( + `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', + `phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '手机号码', + `password` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '密码,加密存储', + `nick_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '昵称,默认是用户id', + `icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '人物头像', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `uniqe_key_phone`(`phone`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1010 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of tb_user +-- ---------------------------- +INSERT INTO `tb_user` VALUES (1, '13686869696', '', '小鱼同学', '/imgs/blogs/blog1.jpg', '2021-12-24 10:27:19', '2022-01-11 16:04:00'); +INSERT INTO `tb_user` VALUES (2, '13838411438', '', '可可今天不吃肉', '/imgs/icons/kkjtbcr.jpg', '2021-12-24 15:14:39', '2021-12-28 19:58:04'); +INSERT INTO `tb_user` VALUES (4, '13456789011', '', 'user_slxaxy2au9f3tanffaxr', '', '2022-01-07 12:07:53', '2022-01-07 12:07:53'); +INSERT INTO `tb_user` VALUES (5, '13456789001', '', '可爱多', '/imgs/icons/user5-icon.png', '2022-01-07 16:11:33', '2022-03-11 09:09:20'); +INSERT INTO `tb_user` VALUES (6, '13456762069', '', 'user_xn5wr3hpsv', '', '2022-02-07 17:54:10', '2022-02-07 17:54:10'); +INSERT INTO `tb_user` VALUES (10, '13688668889', '', 'user_88arndojw9', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (11, '13688668890', '', 'user_qcfr2k1lmi', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (12, '13688668891', '', 'user_ffsk4hli07', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (13, '13688668892', '', 'user_r62q62ijef', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (14, '13688668893', '', 'user_f3rymyt1q5', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (15, '13688668894', '', 'user_hnyhc3mjat', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (16, '13688668895', '', 'user_2spo35f5rl', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (17, '13688668896', '', 'user_q3r70baqe1', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (18, '13688668897', '', 'user_v73ottjqxt', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (19, '13688668898', '', 'user_tmh8o4r11q', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (20, '13688668899', '', 'user_4epgb7b5u1', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (21, '13688668900', '', 'user_g474zoujxj', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (22, '13688668901', '', 'user_r3kh1g6aah', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (23, '13688668902', '', 'user_u3uuo7l5fo', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (24, '13688668903', '', 'user_9o93lbsojt', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (25, '13688668904', '', 'user_jbhmr43wpq', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (26, '13688668905', '', 'user_nevyd3c5ux', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (27, '13688668906', '', 'user_oow4frmjp3', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (28, '13688668907', '', 'user_cvmknmec74', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (29, '13688668908', '', 'user_0t2x5njbz7', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (30, '13688668909', '', 'user_y5x09783hp', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (31, '13688668910', '', 'user_owe4eyuhhh', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (32, '13688668911', '', 'user_j76auh0ggg', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (33, '13688668912', '', 'user_aal5w9rm33', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (34, '13688668913', '', 'user_a2pgu8cr21', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (35, '13688668914', '', 'user_nle60p846v', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (36, '13688668915', '', 'user_w1mck7c7yv', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (37, '13688668916', '', 'user_bnpiybumlk', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (38, '13688668917', '', 'user_4w7xeo2yyt', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (39, '13688668918', '', 'user_99u4voj7xl', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (40, '13688668919', '', 'user_g03is27pd6', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (41, '13688668920', '', 'user_3j9erfkl0p', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (42, '13688668921', '', 'user_l7rs56ah9y', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (43, '13688668922', '', 'user_p3655ctliy', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (44, '13688668923', '', 'user_qi1qze1yp1', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (45, '13688668924', '', 'user_vrd5ir0rj0', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (46, '13688668925', '', 'user_tubboh1byc', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (47, '13688668926', '', 'user_j2bdj3d2eo', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (48, '13688668927', '', 'user_ncj7r0vu1h', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (49, '13688668928', '', 'user_63rhqjqa0a', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (50, '13688668929', '', 'user_80ue5cywnk', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (51, '13688668930', '', 'user_j4q037vhpi', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (52, '13688668931', '', 'user_ms0uat5bf0', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (53, '13688668932', '', 'user_oqep16bdel', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (54, '13688668933', '', 'user_vjtvjjdqh7', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (55, '13688668934', '', 'user_0168i9hv5g', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (56, '13688668935', '', 'user_vh1j6zw1q4', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (57, '13688668936', '', 'user_rkf2nxouof', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (58, '13688668937', '', 'user_whlt2chtv3', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (59, '13688668938', '', 'user_lpqr90wbeo', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (60, '13688668939', '', 'user_h40y3ipk9k', '', '2022-02-28 10:50:47', '2022-02-28 10:50:47'); +INSERT INTO `tb_user` VALUES (61, '13688668940', '', 'user_awdqkmbkt7', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (62, '13688668941', '', 'user_1xgbg9v4r5', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (63, '13688668942', '', 'user_7vf5fgiu68', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (64, '13688668943', '', 'user_lsgiz015vf', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (65, '13688668944', '', 'user_0nqjvanruk', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (66, '13688668945', '', 'user_8alg1taath', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (67, '13688668946', '', 'user_q45ykjgpxe', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (68, '13688668947', '', 'user_4hy0o6ir0r', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (69, '13688668948', '', 'user_q6rh7e6zo9', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (70, '13688668949', '', 'user_1wp3ygfyn2', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (71, '13688668950', '', 'user_13vjvo6flp', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (72, '13688668951', '', 'user_glyshbbwin', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (73, '13688668952', '', 'user_3ewzgsnhzj', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (74, '13688668953', '', 'user_ky481zf1fs', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (75, '13688668954', '', 'user_o5yzu0epev', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (76, '13688668955', '', 'user_ycbracmsi3', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (77, '13688668956', '', 'user_974wwi1283', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (78, '13688668957', '', 'user_1y0xokmk9w', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (79, '13688668958', '', 'user_nd74cho3tu', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (80, '13688668959', '', 'user_5z7u2eysa4', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (81, '13688668960', '', 'user_yvf8hfu5yy', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (82, '13688668961', '', 'user_2poi4wvpms', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (83, '13688668962', '', 'user_v4ysxjt1yu', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (84, '13688668963', '', 'user_kbvn4gpgk6', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (85, '13688668964', '', 'user_23niik1tyg', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (86, '13688668965', '', 'user_uf2zz6ispe', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (87, '13688668966', '', 'user_5k19vf7c4o', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (88, '13688668967', '', 'user_5ahdd98xbr', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (89, '13688668968', '', 'user_a5cnfnoopx', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (90, '13688668969', '', 'user_utnmcyfg13', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (91, '13688668970', '', 'user_0k6n8ikb95', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (92, '13688668971', '', 'user_zqk5maqtmi', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (93, '13688668972', '', 'user_9i9suwd3nd', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (94, '13688668973', '', 'user_u0y0ngrdjo', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (95, '13688668974', '', 'user_stvijjwvzu', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (96, '13688668975', '', 'user_7if7tttays', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (97, '13688668976', '', 'user_f9hmz0ngdu', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (98, '13688668977', '', 'user_wuhs2nq9d0', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (99, '13688668978', '', 'user_1u3rlntd5s', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (100, '13688668979', '', 'user_ywe62vhu7u', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (101, '13688668980', '', 'user_rbfpzdt6tg', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (102, '13688668981', '', 'user_jv69l0d1kg', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (103, '13688668982', '', 'user_dg6hwl48r6', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (104, '13688668983', '', 'user_8rwl92pixr', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (105, '13688668984', '', 'user_k5dek2os3m', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (106, '13688668985', '', 'user_kw1nr2scyz', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (107, '13688668986', '', 'user_h81c5g0t7s', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (108, '13688668987', '', 'user_jar6djas5e', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (109, '13688668988', '', 'user_f9x2qm4grh', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (110, '13688668989', '', 'user_mg5h6c4bcu', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (111, '13688668990', '', 'user_hcg7ocbnus', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (112, '13688668991', '', 'user_rsbxx7g2yz', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (113, '13688668992', '', 'user_bi3fhutbd1', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (114, '13688668993', '', 'user_o4pjkkyu3q', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (115, '13688668994', '', 'user_7zfs7g5vqb', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (116, '13688668995', '', 'user_oq71inq541', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (117, '13688668996', '', 'user_u9zoiadq6l', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (118, '13688668997', '', 'user_4elguvu5pz', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (119, '13688668998', '', 'user_90dclmdv94', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (120, '13688668999', '', 'user_v2of3k1liq', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (121, '13688669000', '', 'user_bg04b99iqn', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (122, '13688669001', '', 'user_6fo9sul3q6', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (123, '13688669002', '', 'user_vl7ajjlhnn', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (124, '13688669003', '', 'user_df3kaj5zi1', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (125, '13688669004', '', 'user_yo6iohe5s2', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (126, '13688669005', '', 'user_2iss3wrcm1', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (127, '13688669006', '', 'user_7y8qm8sv4r', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (128, '13688669007', '', 'user_f825rhknpq', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (129, '13688669008', '', 'user_3bigm0aauz', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (130, '13688669009', '', 'user_ib9eo5dtgk', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (131, '13688669010', '', 'user_ci5hhnufj9', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (132, '13688669011', '', 'user_cc56u62rny', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (133, '13688669012', '', 'user_i8fg7azvnt', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (134, '13688669013', '', 'user_bw5dqkv6d9', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (135, '13688669014', '', 'user_1n1o9ri5oz', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (136, '13688669015', '', 'user_1b0zexoldy', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (137, '13688669016', '', 'user_lz9dr6wxkw', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (138, '13688669017', '', 'user_zfpfscu53e', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (139, '13688669018', '', 'user_5kldn59nn9', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (140, '13688669019', '', 'user_p0mjswjh9x', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (141, '13688669020', '', 'user_z4jcqggm11', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (142, '13688669021', '', 'user_pv9yctbxza', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (143, '13688669022', '', 'user_u702tikvol', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (144, '13688669023', '', 'user_sy4a5f3qmy', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (145, '13688669024', '', 'user_n6g293r60l', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (146, '13688669025', '', 'user_uylyp6ttqz', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (147, '13688669026', '', 'user_h2zmzefha3', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (148, '13688669027', '', 'user_5outop6hz2', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (149, '13688669028', '', 'user_vp8l74sadq', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (150, '13688669029', '', 'user_n9ww3of8fg', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (151, '13688669030', '', 'user_rfm7pfgkv8', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (152, '13688669031', '', 'user_h7298xuo0u', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (153, '13688669032', '', 'user_72s0smb2wz', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (154, '13688669033', '', 'user_twhphih9nd', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (155, '13688669034', '', 'user_vfocakn5gl', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (156, '13688669035', '', 'user_tfwe1v2x82', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (157, '13688669036', '', 'user_eyrq375qgg', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (158, '13688669037', '', 'user_rg2obilrot', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (159, '13688669038', '', 'user_rzfwln2aw2', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (160, '13688669039', '', 'user_rzfgzeshe1', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (161, '13688669040', '', 'user_c67s0sjbmv', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (162, '13688669041', '', 'user_fkyp652kkn', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (163, '13688669042', '', 'user_sv1i552okx', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (164, '13688669043', '', 'user_fsrmh6e0d3', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (165, '13688669044', '', 'user_jey7gkjesn', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (166, '13688669045', '', 'user_00xdq55r0f', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (167, '13688669046', '', 'user_wkb6tveg4e', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (168, '13688669047', '', 'user_51ong6aunx', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (169, '13688669048', '', 'user_ke4h0uxthm', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (170, '13688669049', '', 'user_oswyb9opx5', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (171, '13688669050', '', 'user_iy8itbwg6q', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (172, '13688669051', '', 'user_g1mk023p9r', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (173, '13688669052', '', 'user_2507p7kvzs', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (174, '13688669053', '', 'user_piixbanfxl', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (175, '13688669054', '', 'user_w2d2is43jc', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (176, '13688669055', '', 'user_lrk4it56lt', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (177, '13688669056', '', 'user_3273q3j2ft', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (178, '13688669057', '', 'user_ltf42q0vy4', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (179, '13688669058', '', 'user_7npp13snqp', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (180, '13688669059', '', 'user_slxftqmjp9', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (181, '13688669060', '', 'user_il4dsuvdfr', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (182, '13688669061', '', 'user_esm2d4uh7a', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (183, '13688669062', '', 'user_te4prs2y3j', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (184, '13688669063', '', 'user_dycwcufgj0', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (185, '13688669064', '', 'user_jjo4dvsgag', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (186, '13688669065', '', 'user_9opl0t1sd2', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (187, '13688669066', '', 'user_hbm1dnssq6', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (188, '13688669067', '', 'user_tx88zar5cs', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (189, '13688669068', '', 'user_1p206nyupm', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (190, '13688669069', '', 'user_8lnbd2ao5u', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (191, '13688669070', '', 'user_v4uwls1wg7', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (192, '13688669071', '', 'user_z1bkh9lnjj', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (193, '13688669072', '', 'user_r7u852ex1n', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (194, '13688669073', '', 'user_yqr54gdh8t', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (195, '13688669074', '', 'user_x4kngjjng7', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (196, '13688669075', '', 'user_xvtxjocno2', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (197, '13688669076', '', 'user_1zj77q03tf', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (198, '13688669077', '', 'user_0q8yjtlp7a', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (199, '13688669078', '', 'user_nt2ogdyl73', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (200, '13688669079', '', 'user_6w0ex6afsz', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (201, '13688669080', '', 'user_qpm2vyflc3', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (202, '13688669081', '', 'user_dzvf9xujj1', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (203, '13688669082', '', 'user_aiypeaeupd', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (204, '13688669083', '', 'user_5iznj0t5hg', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (205, '13688669084', '', 'user_4t1flvqz2h', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (206, '13688669085', '', 'user_542t36rd41', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (207, '13688669086', '', 'user_kmhowbydu6', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (208, '13688669087', '', 'user_e8nz64jbym', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (209, '13688669088', '', 'user_zjbr3zq6we', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (210, '13688669089', '', 'user_ptk6qaspna', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (211, '13688669090', '', 'user_jei7tqtu1j', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (212, '13688669091', '', 'user_8x7cyv5ey8', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (213, '13688669092', '', 'user_mx3l4tj2jq', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (214, '13688669093', '', 'user_ba6e9l6exg', '', '2022-02-28 10:50:48', '2022-02-28 10:50:48'); +INSERT INTO `tb_user` VALUES (215, '13688669094', '', 'user_vlku3rop6e', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (216, '13688669095', '', 'user_hsff9net6q', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (217, '13688669096', '', 'user_mbaficnzfe', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (218, '13688669097', '', 'user_b3wglh40dk', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (219, '13688669098', '', 'user_dvi1yllk48', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (220, '13688669099', '', 'user_cxv8smu642', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (221, '13688669100', '', 'user_ze5exti1z5', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (222, '13688669101', '', 'user_b6524nuosz', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (223, '13688669102', '', 'user_jw3xmz31ss', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (224, '13688669103', '', 'user_3fqrglyqj0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (225, '13688669104', '', 'user_uf9dy1kfmg', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (226, '13688669105', '', 'user_nn4ss4oupv', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (227, '13688669106', '', 'user_khse5vlch8', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (228, '13688669107', '', 'user_xfpqrk3hea', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (229, '13688669108', '', 'user_0sfyf9o74l', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (230, '13688669109', '', 'user_936vlojcwy', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (231, '13688669110', '', 'user_wq9m8aqmay', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (232, '13688669111', '', 'user_uqw0c5ilp5', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (233, '13688669112', '', 'user_qjucgt4ar1', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (234, '13688669113', '', 'user_sry5bqf8ev', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (235, '13688669114', '', 'user_9csdwveeh8', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (236, '13688669115', '', 'user_y9kl1yd7fk', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (237, '13688669116', '', 'user_mahwf66irm', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (238, '13688669117', '', 'user_tud2i4itlr', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (239, '13688669118', '', 'user_p1s640kfny', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (240, '13688669119', '', 'user_2tyzfj49r6', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (241, '13688669120', '', 'user_wjswilvpou', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (242, '13688669121', '', 'user_yuushg7x44', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (243, '13688669122', '', 'user_pb0fas6tob', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (244, '13688669123', '', 'user_3k4nn4dhuh', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (245, '13688669124', '', 'user_lljtt3ttml', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (246, '13688669125', '', 'user_weftqlsasg', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (247, '13688669126', '', 'user_1lo78exvpl', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (248, '13688669127', '', 'user_qzbukb32cm', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (249, '13688669128', '', 'user_k80i5kfvoj', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (250, '13688669129', '', 'user_ggx53ve2zp', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (251, '13688669130', '', 'user_yz0fmlzjxv', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (252, '13688669131', '', 'user_jh6epyjgiw', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (253, '13688669132', '', 'user_0k0ly383fy', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (254, '13688669133', '', 'user_ibc8pgs2jc', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (255, '13688669134', '', 'user_ys8yxdm6cr', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (256, '13688669135', '', 'user_7zdagyyymi', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (257, '13688669136', '', 'user_9q7fiiqwzm', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (258, '13688669137', '', 'user_64qzvesiku', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (259, '13688669138', '', 'user_5fi8fsc9e5', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (260, '13688669139', '', 'user_1wo4aktp89', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (261, '13688669140', '', 'user_5mis2rucuh', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (262, '13688669141', '', 'user_pghkcw4cog', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (263, '13688669142', '', 'user_ymh7a5t69k', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (264, '13688669143', '', 'user_58qypl26r3', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (265, '13688669144', '', 'user_oknszihfil', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (266, '13688669145', '', 'user_rx5qu0277b', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (267, '13688669146', '', 'user_4mwekx3q8z', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (268, '13688669147', '', 'user_ie9qzfwu27', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (269, '13688669148', '', 'user_l80r6phxur', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (270, '13688669149', '', 'user_np6iqqeuql', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (271, '13688669150', '', 'user_5c27qgw2o3', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (272, '13688669151', '', 'user_ujpa6juatc', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (273, '13688669152', '', 'user_van4fds7cx', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (274, '13688669153', '', 'user_ox11o9krp9', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (275, '13688669154', '', 'user_c7o3u0usf2', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (276, '13688669155', '', 'user_cq7hojlerq', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (277, '13688669156', '', 'user_kphis0ntao', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (278, '13688669157', '', 'user_nd12v2tdpj', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (279, '13688669158', '', 'user_5far04rjm0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (280, '13688669159', '', 'user_f33abomjs2', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (281, '13688669160', '', 'user_1qty1oyawt', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (282, '13688669161', '', 'user_9l463o7me2', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (283, '13688669162', '', 'user_0seyfs8ou8', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (284, '13688669163', '', 'user_7uhqt2zf11', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (285, '13688669164', '', 'user_wy2jtbkr1t', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (286, '13688669165', '', 'user_yjf1kbl6r8', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (287, '13688669166', '', 'user_r98pel35gn', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (288, '13688669167', '', 'user_u2eg1jcwvz', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (289, '13688669168', '', 'user_5z7d4fr9ye', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (290, '13688669169', '', 'user_kl0p0ku6zv', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (291, '13688669170', '', 'user_dsdocfa64r', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (292, '13688669171', '', 'user_gbygsd03kc', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (293, '13688669172', '', 'user_dj1xqos2is', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (294, '13688669173', '', 'user_il6yctz040', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (295, '13688669174', '', 'user_y4zn043gvj', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (296, '13688669175', '', 'user_oh9tjoxq8c', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (297, '13688669176', '', 'user_6xlq088asi', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (298, '13688669177', '', 'user_0sepghh66s', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (299, '13688669178', '', 'user_dzo7q333x7', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (300, '13688669179', '', 'user_n7j3j68agt', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (301, '13688669180', '', 'user_b99vc3qr3d', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (302, '13688669181', '', 'user_o2uu01ngfw', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (303, '13688669182', '', 'user_q0yy8pvku3', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (304, '13688669183', '', 'user_lipi4iyiv9', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (305, '13688669184', '', 'user_x2dq9i90ms', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (306, '13688669185', '', 'user_bz9twrcx01', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (307, '13688669186', '', 'user_iun0ocev18', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (308, '13688669187', '', 'user_uob3pxr062', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (309, '13688669188', '', 'user_nxuwi8q3n5', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (310, '13688669189', '', 'user_g6si4hwe4r', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (311, '13688669190', '', 'user_v4xud6pxnh', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (312, '13688669191', '', 'user_n3vq5a4c49', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (313, '13688669192', '', 'user_6qdfn8dkja', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (314, '13688669193', '', 'user_872mdw0ibu', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (315, '13688669194', '', 'user_s426pmlnno', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (316, '13688669195', '', 'user_n7d3fcnlqf', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (317, '13688669196', '', 'user_d1euhpgvjt', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (318, '13688669197', '', 'user_luwqlqye4n', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (319, '13688669198', '', 'user_m9khstqle0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (320, '13688669199', '', 'user_7u54hoeh5p', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (321, '13688669200', '', 'user_hndxi8iyg7', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (322, '13688669201', '', 'user_csagq8b16v', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (323, '13688669202', '', 'user_sa979r5vfr', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (324, '13688669203', '', 'user_gojbeoieko', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (325, '13688669204', '', 'user_vrxmccmk36', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (326, '13688669205', '', 'user_kwzzzxile8', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (327, '13688669206', '', 'user_8ik6wmzcs3', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (328, '13688669207', '', 'user_x9f4po6eok', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (329, '13688669208', '', 'user_vn0g3rywt0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (330, '13688669209', '', 'user_0h0hqnoqvv', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (331, '13688669210', '', 'user_ne3rvn4cim', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (332, '13688669211', '', 'user_bz20tomja0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (333, '13688669212', '', 'user_7k5d8324tm', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (334, '13688669213', '', 'user_5va74it1op', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (335, '13688669214', '', 'user_gc21xkfgph', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (336, '13688669215', '', 'user_rv1o0ousua', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (337, '13688669216', '', 'user_lkp3hk0t8q', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (338, '13688669217', '', 'user_e2kjjqo7ee', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (339, '13688669218', '', 'user_ja24gfl42z', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (340, '13688669219', '', 'user_5sxrarxxd2', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (341, '13688669220', '', 'user_lzilfx23jr', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (342, '13688669221', '', 'user_4healeh2sq', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (343, '13688669222', '', 'user_txh60qz6xe', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (344, '13688669223', '', 'user_ofie8fobtu', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (345, '13688669224', '', 'user_wxfngmqndc', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (346, '13688669225', '', 'user_n11kdqn95y', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (347, '13688669226', '', 'user_7b9etto6jl', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (348, '13688669227', '', 'user_sa23n9pacw', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (349, '13688669228', '', 'user_1lhe46upfz', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (350, '13688669229', '', 'user_jioft4gdiu', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (351, '13688669230', '', 'user_jta7ld4vty', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (352, '13688669231', '', 'user_5tkaejhk7g', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (353, '13688669232', '', 'user_fkoe771g9p', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (354, '13688669233', '', 'user_snv802ujrx', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (355, '13688669234', '', 'user_4szkwdl3hw', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (356, '13688669235', '', 'user_qq4cteo33l', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (357, '13688669236', '', 'user_hwn4ofw0dp', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (358, '13688669237', '', 'user_2r4xhcvxp2', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (359, '13688669238', '', 'user_iphgurk3nk', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (360, '13688669239', '', 'user_ih9kbl5kzb', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (361, '13688669240', '', 'user_2odlf3rqex', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (362, '13688669241', '', 'user_i9jalo3ouw', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (363, '13688669242', '', 'user_whbqd8vhr2', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (364, '13688669243', '', 'user_bzlvvy10mp', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (365, '13688669244', '', 'user_pe7y2zyii7', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (366, '13688669245', '', 'user_cnk071ghc7', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (367, '13688669246', '', 'user_21cue7tpm0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (368, '13688669247', '', 'user_nidneujm1x', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (369, '13688669248', '', 'user_tx2y3v0pb0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (370, '13688669249', '', 'user_i8ikz0nufr', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (371, '13688669250', '', 'user_omq8bsw2ij', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (372, '13688669251', '', 'user_ffpuo977gj', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (373, '13688669252', '', 'user_jcgx7mukv0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (374, '13688669253', '', 'user_gn6k43jfx8', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (375, '13688669254', '', 'user_esfv726lun', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (376, '13688669255', '', 'user_l7vh3qyhnk', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (377, '13688669256', '', 'user_aqo9nsp13v', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (378, '13688669257', '', 'user_45z1cjwo34', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (379, '13688669258', '', 'user_cukuugiquc', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (380, '13688669259', '', 'user_cmzben5ql1', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (381, '13688669260', '', 'user_fm136hckhd', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (382, '13688669261', '', 'user_4neww35d6t', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (383, '13688669262', '', 'user_p4e2t04dl0', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (384, '13688669263', '', 'user_3s22mzjlgl', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (385, '13688669264', '', 'user_kf0pbo00lp', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (386, '13688669265', '', 'user_7tan2lj2jn', '', '2022-02-28 10:50:49', '2022-02-28 10:50:49'); +INSERT INTO `tb_user` VALUES (387, '13688669266', '', 'user_w88q6nof2r', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (388, '13688669267', '', 'user_9aze983wkj', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (389, '13688669268', '', 'user_wtioxpbho1', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (390, '13688669269', '', 'user_yf70g0cjfu', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (391, '13688669270', '', 'user_i1w18vru0l', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (392, '13688669271', '', 'user_6lr3w5npe5', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (393, '13688669272', '', 'user_9n8rjbb9gp', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (394, '13688669273', '', 'user_fe3u4g7p1f', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (395, '13688669274', '', 'user_618vib46zb', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (396, '13688669275', '', 'user_mj4b8uxpu3', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (397, '13688669276', '', 'user_3jq7brld6h', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (398, '13688669277', '', 'user_8577262ob3', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (399, '13688669278', '', 'user_x63u1e3sap', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (400, '13688669279', '', 'user_o2c2l1j9zs', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (401, '13688669280', '', 'user_rtupie4qut', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (402, '13688669281', '', 'user_othsv0bkha', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (403, '13688669282', '', 'user_4wqa1vn3kw', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (404, '13688669283', '', 'user_xmhuythdnn', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (405, '13688669284', '', 'user_alzyibl549', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (406, '13688669285', '', 'user_3nhqsa0htg', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (407, '13688669286', '', 'user_vn81ys9n64', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (408, '13688669287', '', 'user_iz6t7kpxz2', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (409, '13688669288', '', 'user_7gnmjhg1rh', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (410, '13688669289', '', 'user_r2i71mq5lk', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (411, '13688669290', '', 'user_gevxv4bfda', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (412, '13688669291', '', 'user_hqneva0vaz', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (413, '13688669292', '', 'user_8fvquxjm0t', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (414, '13688669293', '', 'user_9u8dxzs9nk', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (415, '13688669294', '', 'user_8mwcrg9ez9', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (416, '13688669295', '', 'user_erzqptr80b', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (417, '13688669296', '', 'user_97xgccgwaf', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (418, '13688669297', '', 'user_5rz6s0zuoh', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (419, '13688669298', '', 'user_8o7cg6rp05', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (420, '13688669299', '', 'user_rhftetybs4', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (421, '13688669300', '', 'user_mjh9uzi92z', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (422, '13688669301', '', 'user_bvaub566b3', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (423, '13688669302', '', 'user_e97b0z12jc', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (424, '13688669303', '', 'user_mcc1pteaw5', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (425, '13688669304', '', 'user_gz1ymib0dl', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (426, '13688669305', '', 'user_owszpn6jem', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (427, '13688669306', '', 'user_nyqxiekdus', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (428, '13688669307', '', 'user_ilr27xnuxu', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (429, '13688669308', '', 'user_mhzftdfxi4', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (430, '13688669309', '', 'user_kavgc8r8f6', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (431, '13688669310', '', 'user_svztbpgr9w', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (432, '13688669311', '', 'user_fdjhoysgy8', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (433, '13688669312', '', 'user_drssks7627', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (434, '13688669313', '', 'user_53kuim78p1', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (435, '13688669314', '', 'user_tpjaw9ygl6', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (436, '13688669315', '', 'user_zlj9ao4lbw', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (437, '13688669316', '', 'user_9nsckyz0k8', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (438, '13688669317', '', 'user_rkyjx5n0k9', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (439, '13688669318', '', 'user_e47mr17jmo', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (440, '13688669319', '', 'user_gdouwxu8bm', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (441, '13688669320', '', 'user_7odu05tcri', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (442, '13688669321', '', 'user_x6dga1y84j', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (443, '13688669322', '', 'user_ubzwoytroz', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (444, '13688669323', '', 'user_brivojp5b1', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (445, '13688669324', '', 'user_q5sluitgii', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (446, '13688669325', '', 'user_bbqazzzawl', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (447, '13688669326', '', 'user_82fbd0oo0u', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (448, '13688669327', '', 'user_87ft14as7t', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (449, '13688669328', '', 'user_diabg787km', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (450, '13688669329', '', 'user_oo1gf0pxln', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (451, '13688669330', '', 'user_4fc1q8u2f3', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (452, '13688669331', '', 'user_hgny53jwpn', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (453, '13688669332', '', 'user_5m75miuy6r', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (454, '13688669333', '', 'user_qx5ohjcayd', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (455, '13688669334', '', 'user_cff2zkpu62', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (456, '13688669335', '', 'user_dsb1rk9dsr', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (457, '13688669336', '', 'user_50h3ylhjnz', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (458, '13688669337', '', 'user_i02f5rjdab', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (459, '13688669338', '', 'user_3vwdqpif1l', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (460, '13688669339', '', 'user_g6xewzg33w', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (461, '13688669340', '', 'user_63u60u6o7f', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (462, '13688669341', '', 'user_m6ikxcr92q', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (463, '13688669342', '', 'user_yzd5lmecur', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (464, '13688669343', '', 'user_m3163uc9al', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (465, '13688669344', '', 'user_1x6f94jq0v', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (466, '13688669345', '', 'user_keo0udy60g', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (467, '13688669346', '', 'user_87y52es2uw', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (468, '13688669347', '', 'user_1zkkz9j0e6', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (469, '13688669348', '', 'user_baznwk8x5q', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (470, '13688669349', '', 'user_b4hnhsmpxw', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (471, '13688669350', '', 'user_1hr6wbd939', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (472, '13688669351', '', 'user_4w7dhr290a', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (473, '13688669352', '', 'user_tkxg6jo3xa', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (474, '13688669353', '', 'user_saosjqptnq', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (475, '13688669354', '', 'user_wjge9hxzfv', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (476, '13688669355', '', 'user_8ex8ynmec4', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (477, '13688669356', '', 'user_beih06msot', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (478, '13688669357', '', 'user_e4tuso2fad', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (479, '13688669358', '', 'user_iolxs2wbfs', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (480, '13688669359', '', 'user_5trre9akf1', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (481, '13688669360', '', 'user_y3l832hamq', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (482, '13688669361', '', 'user_gs7kvt65y8', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (483, '13688669362', '', 'user_8rda39nfpx', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (484, '13688669363', '', 'user_wix6t6g14l', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (485, '13688669364', '', 'user_s2k023vtn7', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (486, '13688669365', '', 'user_qc3nhavb9f', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (487, '13688669366', '', 'user_98eoecfe9s', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (488, '13688669367', '', 'user_kknik7xw80', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (489, '13688669368', '', 'user_17d7bifhpp', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (490, '13688669369', '', 'user_04vbus432n', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (491, '13688669370', '', 'user_3e1xl0tvss', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (492, '13688669371', '', 'user_jpvv20rmfk', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (493, '13688669372', '', 'user_51jd3tfl3e', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (494, '13688669373', '', 'user_agt44szvcb', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (495, '13688669374', '', 'user_pr7icguenq', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (496, '13688669375', '', 'user_2jl0qaecm0', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (497, '13688669376', '', 'user_m1fxzx8i0u', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (498, '13688669377', '', 'user_fh7a1j0vaz', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (499, '13688669378', '', 'user_ty7afbm01v', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (500, '13688669379', '', 'user_bwazk1tt71', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (501, '13688669380', '', 'user_c1wrwmqzfi', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (502, '13688669381', '', 'user_nbfyg2pfql', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (503, '13688669382', '', 'user_h85lj9y0jy', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (504, '13688669383', '', 'user_e0r5gg439j', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (505, '13688669384', '', 'user_k0s8h8v8wt', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (506, '13688669385', '', 'user_0v423qhiz2', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (507, '13688669386', '', 'user_zgze48neoq', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (508, '13688669387', '', 'user_un4nppmh7k', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (509, '13688669388', '', 'user_knr2flv5mr', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (510, '13688669389', '', 'user_cvhg3r8aqj', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (511, '13688669390', '', 'user_92xh46mlff', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (512, '13688669391', '', 'user_vhp8pxmhk6', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (513, '13688669392', '', 'user_hc4c7z9y3k', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (514, '13688669393', '', 'user_03ikpqtn96', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (515, '13688669394', '', 'user_g0l23kj1ta', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (516, '13688669395', '', 'user_hdd1qkfbjy', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (517, '13688669396', '', 'user_vmc478haq2', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (518, '13688669397', '', 'user_g16kk9w1jp', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (519, '13688669398', '', 'user_vlviloabak', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (520, '13688669399', '', 'user_f4t9c9x0qs', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (521, '13688669400', '', 'user_uhd0vskqux', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (522, '13688669401', '', 'user_uidqqwety9', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (523, '13688669402', '', 'user_ijqz4fb077', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (524, '13688669403', '', 'user_d16wfogt38', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (525, '13688669404', '', 'user_50cj7qxejp', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (526, '13688669405', '', 'user_w0mawjfxbf', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (527, '13688669406', '', 'user_vihcs8gddy', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (528, '13688669407', '', 'user_1io84j51kb', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (529, '13688669408', '', 'user_sac23jn0ct', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (530, '13688669409', '', 'user_84saoi0eaq', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (531, '13688669410', '', 'user_bqfd0lusff', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (532, '13688669411', '', 'user_a717jzadbk', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (533, '13688669412', '', 'user_3e6nd805yp', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (534, '13688669413', '', 'user_bgkv3zjjsy', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (535, '13688669414', '', 'user_4lzfuo6hcl', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (536, '13688669415', '', 'user_y748pleoq8', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (537, '13688669416', '', 'user_ciyuki97of', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (538, '13688669417', '', 'user_kaulf89rnl', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (539, '13688669418', '', 'user_h0dan7ux0u', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (540, '13688669419', '', 'user_fvmx4u2re0', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (541, '13688669420', '', 'user_njomftlkps', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (542, '13688669421', '', 'user_2ezx5lxtc4', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (543, '13688669422', '', 'user_161mxzchbt', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (544, '13688669423', '', 'user_f8e3enit63', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (545, '13688669424', '', 'user_j1ygvb30zr', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (546, '13688669425', '', 'user_lskpl9geya', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (547, '13688669426', '', 'user_feww9njnhi', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (548, '13688669427', '', 'user_e8x6u5i9ca', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (549, '13688669428', '', 'user_17al8oqa4w', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (550, '13688669429', '', 'user_nbo1m8bazt', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (551, '13688669430', '', 'user_rqfyp2isyr', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (552, '13688669431', '', 'user_epr1i52q5x', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (553, '13688669432', '', 'user_x154dr8sch', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (554, '13688669433', '', 'user_i5lvnupsu6', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (555, '13688669434', '', 'user_qsnre265gc', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (556, '13688669435', '', 'user_7f3zwt1uso', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (557, '13688669436', '', 'user_qgkrbv1r7p', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (558, '13688669437', '', 'user_b39j58u8ql', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (559, '13688669438', '', 'user_wby0tn39v5', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (560, '13688669439', '', 'user_9vt11wm6wb', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (561, '13688669440', '', 'user_y4rokt5rzh', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (562, '13688669441', '', 'user_lyarwzepjm', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (563, '13688669442', '', 'user_er844jel5s', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (564, '13688669443', '', 'user_2gkdrbu7rd', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (565, '13688669444', '', 'user_fnks15rgap', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (566, '13688669445', '', 'user_fe79dtlbf3', '', '2022-02-28 10:50:50', '2022-02-28 10:50:50'); +INSERT INTO `tb_user` VALUES (567, '13688669446', '', 'user_jrl1kdhopy', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (568, '13688669447', '', 'user_p5h5hfw0h5', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (569, '13688669448', '', 'user_756lckggox', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (570, '13688669449', '', 'user_9w56lad204', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (571, '13688669450', '', 'user_kjfvuonq64', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (572, '13688669451', '', 'user_k1i16oya8x', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (573, '13688669452', '', 'user_z4wz2wq9oj', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (574, '13688669453', '', 'user_jotms6c1vz', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (575, '13688669454', '', 'user_29iu6j1olp', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (576, '13688669455', '', 'user_rfkqpu7bs1', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (577, '13688669456', '', 'user_yecqp8c38k', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (578, '13688669457', '', 'user_1mbkrz4rng', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (579, '13688669458', '', 'user_bx6h4wu47y', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (580, '13688669459', '', 'user_usub0nsxez', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (581, '13688669460', '', 'user_2vvxjpuwgr', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (582, '13688669461', '', 'user_9tmhy4nfm1', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (583, '13688669462', '', 'user_q1gyjoatnm', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (584, '13688669463', '', 'user_vaqe3soyoz', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (585, '13688669464', '', 'user_bz81fj51ul', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (586, '13688669465', '', 'user_pwp8w2oife', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (587, '13688669466', '', 'user_6i8a8jpc4a', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (588, '13688669467', '', 'user_e19oms872y', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (589, '13688669468', '', 'user_7jnvjujuk5', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (590, '13688669469', '', 'user_1brabvuxfp', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (591, '13688669470', '', 'user_w25xjchkmt', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (592, '13688669471', '', 'user_qc38678j1q', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (593, '13688669472', '', 'user_5wqfc087pg', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (594, '13688669473', '', 'user_l921wy6ghf', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (595, '13688669474', '', 'user_qgdwy1c8ya', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (596, '13688669475', '', 'user_2ftowbar49', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (597, '13688669476', '', 'user_e0rqhfdde9', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (598, '13688669477', '', 'user_vpswd32xps', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (599, '13688669478', '', 'user_ec479wdojq', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (600, '13688669479', '', 'user_6kz95u775k', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (601, '13688669480', '', 'user_iyyh1jdjvk', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (602, '13688669481', '', 'user_jbv97r3zcf', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (603, '13688669482', '', 'user_1t7nmmwx2g', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (604, '13688669483', '', 'user_fb8j6mb1cn', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (605, '13688669484', '', 'user_ld0b3fd8uk', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (606, '13688669485', '', 'user_sv8tt0fhb0', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (607, '13688669486', '', 'user_ovqhhaqzfs', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (608, '13688669487', '', 'user_mdybbx800t', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (609, '13688669488', '', 'user_dy1n5yoxhv', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (610, '13688669489', '', 'user_xefu4y7d2d', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (611, '13688669490', '', 'user_4aun9z96dn', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (612, '13688669491', '', 'user_guva8ofunq', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (613, '13688669492', '', 'user_6l4gzaotnf', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (614, '13688669493', '', 'user_ngbcy6a2zk', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (615, '13688669494', '', 'user_dqqj7ti3pd', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (616, '13688669495', '', 'user_5zq4rzlbik', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (617, '13688669496', '', 'user_7e0qi512hf', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (618, '13688669497', '', 'user_jpmnhzwesi', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (619, '13688669498', '', 'user_00xb9uvv0m', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (620, '13688669499', '', 'user_nxn2ldt3gl', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (621, '13688669500', '', 'user_cyd1a9zfqw', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (622, '13688669501', '', 'user_0nhklq4xie', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (623, '13688669502', '', 'user_rtf3z1wptn', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (624, '13688669503', '', 'user_ov4uix8csm', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (625, '13688669504', '', 'user_lxi5i68cdf', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (626, '13688669505', '', 'user_do1slgl1ph', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (627, '13688669506', '', 'user_qj8pbsjpl5', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (628, '13688669507', '', 'user_ygrl56l48d', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (629, '13688669508', '', 'user_maynz9h3vn', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (630, '13688669509', '', 'user_m7qnvuej5k', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (631, '13688669510', '', 'user_ceg7kezzrd', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (632, '13688669511', '', 'user_v7ky9w9v6f', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (633, '13688669512', '', 'user_kk8rzbittq', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (634, '13688669513', '', 'user_mskczihgi8', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (635, '13688669514', '', 'user_0tmadlzf1j', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (636, '13688669515', '', 'user_oeui72807w', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (637, '13688669516', '', 'user_ad49besbbs', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (638, '13688669517', '', 'user_huzzpviaax', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (639, '13688669518', '', 'user_b0p11t8qon', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (640, '13688669519', '', 'user_14k8fje63n', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (641, '13688669520', '', 'user_bl5rc085pr', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (642, '13688669521', '', 'user_938covh4nt', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (643, '13688669522', '', 'user_olt9qfefvw', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (644, '13688669523', '', 'user_bhkdwtkfdg', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (645, '13688669524', '', 'user_we6790rc8v', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (646, '13688669525', '', 'user_wqmiqbrj3a', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (647, '13688669526', '', 'user_ccdo9ncgzt', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (648, '13688669527', '', 'user_pk3l58b3cf', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (649, '13688669528', '', 'user_meqr7dxbog', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (650, '13688669529', '', 'user_x70v1uaf0g', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (651, '13688669530', '', 'user_yijawdxi8k', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (652, '13688669531', '', 'user_qlv8jnv927', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (653, '13688669532', '', 'user_2tkj1s7aex', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (654, '13688669533', '', 'user_5vbfw1gln6', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (655, '13688669534', '', 'user_zseyyi59z2', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (656, '13688669535', '', 'user_8ch1tq5bfp', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (657, '13688669536', '', 'user_gdgb5nbkqn', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (658, '13688669537', '', 'user_rr5448qo4l', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (659, '13688669538', '', 'user_e6zwifzqhw', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (660, '13688669539', '', 'user_7ytv4vd6he', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (661, '13688669540', '', 'user_pc84newj49', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (662, '13688669541', '', 'user_h4wpk3e9ht', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (663, '13688669542', '', 'user_d3vt4vqim8', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (664, '13688669543', '', 'user_eqr14mgaz2', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (665, '13688669544', '', 'user_ldd4kzq961', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (666, '13688669545', '', 'user_w4qu1bb2lk', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (667, '13688669546', '', 'user_0627bn8px3', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (668, '13688669547', '', 'user_64aj20cdf1', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (669, '13688669548', '', 'user_l7u34b3ler', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (670, '13688669549', '', 'user_2ze9tl9994', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (671, '13688669550', '', 'user_m5phoejixm', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (672, '13688669551', '', 'user_8ogdovuirm', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (673, '13688669552', '', 'user_wfk4ebck83', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (674, '13688669553', '', 'user_oupbnni466', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (675, '13688669554', '', 'user_89967wcevq', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (676, '13688669555', '', 'user_xr6g2q08cm', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (677, '13688669556', '', 'user_m313bjckeq', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (678, '13688669557', '', 'user_x25nq1ss14', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (679, '13688669558', '', 'user_jeidzxzp6y', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (680, '13688669559', '', 'user_l7dkffo3n0', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (681, '13688669560', '', 'user_pqio9ol2ln', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (682, '13688669561', '', 'user_k1cbsqi4gt', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (683, '13688669562', '', 'user_p1i9b4p4sv', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (684, '13688669563', '', 'user_07yfm6qtl1', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (685, '13688669564', '', 'user_y3mmmk1kak', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (686, '13688669565', '', 'user_lkxjnwtqa7', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (687, '13688669566', '', 'user_v5w9pm18iq', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (688, '13688669567', '', 'user_364l5poxpw', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (689, '13688669568', '', 'user_trlfkptv3g', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (690, '13688669569', '', 'user_rkheg82tnp', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (691, '13688669570', '', 'user_5zmzrjgo5o', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (692, '13688669571', '', 'user_6uacx6cqhp', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (693, '13688669572', '', 'user_wnats1phoj', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (694, '13688669573', '', 'user_dcm1w7674v', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (695, '13688669574', '', 'user_r7ik7ae272', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (696, '13688669575', '', 'user_xk77qyl4gl', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (697, '13688669576', '', 'user_989d1fsji4', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (698, '13688669577', '', 'user_macs32vcct', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (699, '13688669578', '', 'user_z5mahfpa9r', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (700, '13688669579', '', 'user_tn1bnk3zir', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (701, '13688669580', '', 'user_95ajn6osry', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (702, '13688669581', '', 'user_qff1n375uc', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (703, '13688669582', '', 'user_gdjqlq4i6n', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (704, '13688669583', '', 'user_w6tsnpzfqn', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (705, '13688669584', '', 'user_lqp4c4j2ch', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (706, '13688669585', '', 'user_1raii40ps1', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (707, '13688669586', '', 'user_0r9izz201x', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (708, '13688669587', '', 'user_vlrp22q0rk', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (709, '13688669588', '', 'user_f7kvbzb8i4', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (710, '13688669589', '', 'user_yn8nntyyur', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (711, '13688669590', '', 'user_p58nxqajou', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (712, '13688669591', '', 'user_61msspy26k', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (713, '13688669592', '', 'user_fqb0ch1hh1', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (714, '13688669593', '', 'user_oyq3nszclx', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (715, '13688669594', '', 'user_ggybvkn73t', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (716, '13688669595', '', 'user_po0gph6jgp', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (717, '13688669596', '', 'user_hlzvh6wl1y', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (718, '13688669597', '', 'user_btb024hqic', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (719, '13688669598', '', 'user_wqasvon847', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (720, '13688669599', '', 'user_rdp7fvaz3z', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (721, '13688669600', '', 'user_oh5q9kfkvc', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (722, '13688669601', '', 'user_ae21kmiles', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (723, '13688669602', '', 'user_b1ouyw3sww', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (724, '13688669603', '', 'user_9o5qz4s17l', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (725, '13688669604', '', 'user_6urs1iwti9', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (726, '13688669605', '', 'user_80pnfhyqyi', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (727, '13688669606', '', 'user_mynvmq4zcn', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (728, '13688669607', '', 'user_q09fj27oc4', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (729, '13688669608', '', 'user_v4e7hkfw63', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (730, '13688669609', '', 'user_x4sol5dj4f', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (731, '13688669610', '', 'user_v53dsicdtx', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (732, '13688669611', '', 'user_fcoezs141i', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (733, '13688669612', '', 'user_viv3l4o52c', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (734, '13688669613', '', 'user_8j4m80dj76', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (735, '13688669614', '', 'user_r65xyt3opb', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (736, '13688669615', '', 'user_moi9x442th', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (737, '13688669616', '', 'user_qxkltii6ec', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (738, '13688669617', '', 'user_72vsybd20b', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (739, '13688669618', '', 'user_eai1g9ltu9', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (740, '13688669619', '', 'user_h47ubi7f36', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (741, '13688669620', '', 'user_yxo46519hp', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (742, '13688669621', '', 'user_499diayvwn', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (743, '13688669622', '', 'user_ytomkocl3c', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (744, '13688669623', '', 'user_271mt5x5uo', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (745, '13688669624', '', 'user_h5s36mj609', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (746, '13688669625', '', 'user_sklzx3z3nq', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (747, '13688669626', '', 'user_9v2ikjkwm8', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (748, '13688669627', '', 'user_w5jjd49ipx', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (749, '13688669628', '', 'user_3rzokm18yo', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (750, '13688669629', '', 'user_vm6zz6ejs7', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (751, '13688669630', '', 'user_r494p0jlle', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (752, '13688669631', '', 'user_c50thdpyv0', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (753, '13688669632', '', 'user_hc4qi0sfo2', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (754, '13688669633', '', 'user_w8y4nebzxs', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (755, '13688669634', '', 'user_mxxqu6isy9', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (756, '13688669635', '', 'user_sd3f76mtg3', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (757, '13688669636', '', 'user_6zb026vsmm', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (758, '13688669637', '', 'user_mzya91331l', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (759, '13688669638', '', 'user_adu5gmym2g', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (760, '13688669639', '', 'user_31bidh90w5', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (761, '13688669640', '', 'user_iectlacbk7', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (762, '13688669641', '', 'user_by8vl07035', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (763, '13688669642', '', 'user_n8ii3p3b6z', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (764, '13688669643', '', 'user_eopvczuyzq', '', '2022-02-28 10:50:51', '2022-02-28 10:50:51'); +INSERT INTO `tb_user` VALUES (765, '13688669644', '', 'user_2m36qy9yht', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (766, '13688669645', '', 'user_re1q80zze2', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (767, '13688669646', '', 'user_lelhu217ad', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (768, '13688669647', '', 'user_dyv7ll1h9r', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (769, '13688669648', '', 'user_7zws9wi4cp', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (770, '13688669649', '', 'user_tvseis2smv', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (771, '13688669650', '', 'user_975ls201ra', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (772, '13688669651', '', 'user_0416smxpjc', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (773, '13688669652', '', 'user_dkdw3wuvxt', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (774, '13688669653', '', 'user_d1z5jtfh2g', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (775, '13688669654', '', 'user_yg9r3ws35z', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (776, '13688669655', '', 'user_9cos7jzgmy', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (777, '13688669656', '', 'user_679sq0b6eb', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (778, '13688669657', '', 'user_kzk5m1pgqv', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (779, '13688669658', '', 'user_28qetr02oe', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (780, '13688669659', '', 'user_peazcxx51i', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (781, '13688669660', '', 'user_roghf2lerp', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (782, '13688669661', '', 'user_sth9xhgsoj', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (783, '13688669662', '', 'user_38ejcd1npp', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (784, '13688669663', '', 'user_m0y48rqbxs', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (785, '13688669664', '', 'user_a0f919rrdw', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (786, '13688669665', '', 'user_veddhmnfa7', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (787, '13688669666', '', 'user_ltexwx6bm6', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (788, '13688669667', '', 'user_euqn9si8dg', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (789, '13688669668', '', 'user_wm4s4v0o87', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (790, '13688669669', '', 'user_mthbqaorve', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (791, '13688669670', '', 'user_k63cindeeh', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (792, '13688669671', '', 'user_kz30acb48r', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (793, '13688669672', '', 'user_1jmeyd8a28', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (794, '13688669673', '', 'user_su5oi3kpfx', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (795, '13688669674', '', 'user_4eurdp0387', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (796, '13688669675', '', 'user_orxdegd4d4', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (797, '13688669676', '', 'user_50vxeli8rd', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (798, '13688669677', '', 'user_vqsnl66ot5', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (799, '13688669678', '', 'user_en3q7qyiqb', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (800, '13688669679', '', 'user_0yyk9mnng0', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (801, '13688669680', '', 'user_l48qjtjmxl', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (802, '13688669681', '', 'user_1wvigh2hxq', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (803, '13688669682', '', 'user_gr0bhwfvhu', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (804, '13688669683', '', 'user_qpku5s9nr6', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (805, '13688669684', '', 'user_kyhepj12kd', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (806, '13688669685', '', 'user_3x99ypxvqy', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (807, '13688669686', '', 'user_np8bk7b07w', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (808, '13688669687', '', 'user_dnu8kswk6o', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (809, '13688669688', '', 'user_u01mnauofu', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (810, '13688669689', '', 'user_48sv36r3xs', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (811, '13688669690', '', 'user_6ojf6nhxch', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (812, '13688669691', '', 'user_wd32jqla7r', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (813, '13688669692', '', 'user_zsdxxcpkuq', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (814, '13688669693', '', 'user_ib97xw8nl2', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (815, '13688669694', '', 'user_b7qb56z1p0', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (816, '13688669695', '', 'user_i7jmrgmisg', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (817, '13688669696', '', 'user_5nf21zmos7', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (818, '13688669697', '', 'user_mck6nqe55g', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (819, '13688669698', '', 'user_6xnadvfus7', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (820, '13688669699', '', 'user_450u8mqe4z', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (821, '13688669700', '', 'user_hv55cq5n1w', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (822, '13688669701', '', 'user_qiy3ulbyd0', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (823, '13688669702', '', 'user_sx58542ugn', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (824, '13688669703', '', 'user_9xs0uuyds5', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (825, '13688669704', '', 'user_zveuo0azp4', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (826, '13688669705', '', 'user_qwt4x5faay', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (827, '13688669706', '', 'user_ztzuqeybvp', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (828, '13688669707', '', 'user_kh5n7wfie8', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (829, '13688669708', '', 'user_dwxkvw03b7', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (830, '13688669709', '', 'user_3tyhv91k7p', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (831, '13688669710', '', 'user_0jwdppbvdk', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (832, '13688669711', '', 'user_twx4z08vzb', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (833, '13688669712', '', 'user_lly5v9ibpk', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (834, '13688669713', '', 'user_kkho7xpu2u', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (835, '13688669714', '', 'user_l51d2os1wh', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (836, '13688669715', '', 'user_i6gkyfawkv', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (837, '13688669716', '', 'user_v2k5vdh4he', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (838, '13688669717', '', 'user_7k9ql2go9e', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (839, '13688669718', '', 'user_tnz3f99w2c', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (840, '13688669719', '', 'user_833zw6fgxz', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (841, '13688669720', '', 'user_f4hq0ga1oj', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (842, '13688669721', '', 'user_uxuxrig26t', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (843, '13688669722', '', 'user_grn37re7bg', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (844, '13688669723', '', 'user_5msjf8z2fj', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (845, '13688669724', '', 'user_53x3w7l7mv', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (846, '13688669725', '', 'user_pyolvy8m0v', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (847, '13688669726', '', 'user_12i4hpk09n', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (848, '13688669727', '', 'user_zjhyyt7zfq', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (849, '13688669728', '', 'user_avv8zgw4qk', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (850, '13688669729', '', 'user_khxmnqb6ni', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (851, '13688669730', '', 'user_i80iu0pb5k', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (852, '13688669731', '', 'user_lqkx9uurmj', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (853, '13688669732', '', 'user_ewiswre8fm', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (854, '13688669733', '', 'user_d0nwznn64y', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (855, '13688669734', '', 'user_v7wyz44u6m', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (856, '13688669735', '', 'user_ipkx0z0nno', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (857, '13688669736', '', 'user_64tnyqwxun', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (858, '13688669737', '', 'user_r9bjp3fegg', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (859, '13688669738', '', 'user_i36s8hsq72', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (860, '13688669739', '', 'user_cqe1zvq4dr', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (861, '13688669740', '', 'user_omdgisd0ls', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (862, '13688669741', '', 'user_3mgz8z636y', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (863, '13688669742', '', 'user_ts3qtzwp68', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (864, '13688669743', '', 'user_56seol3kxp', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (865, '13688669744', '', 'user_4x55muo0si', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (866, '13688669745', '', 'user_ny46fscq78', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (867, '13688669746', '', 'user_raano2keb9', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (868, '13688669747', '', 'user_31m00sj2bt', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (869, '13688669748', '', 'user_2ovmzeq4f3', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (870, '13688669749', '', 'user_dis12x5ko3', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (871, '13688669750', '', 'user_jx9defd5pu', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (872, '13688669751', '', 'user_k3u9zems0n', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (873, '13688669752', '', 'user_o84aucm31f', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (874, '13688669753', '', 'user_h4msccd8qo', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (875, '13688669754', '', 'user_6sk051bxed', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (876, '13688669755', '', 'user_1s1r4kks05', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (877, '13688669756', '', 'user_2pfvfdb27x', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (878, '13688669757', '', 'user_k5nxhuil69', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (879, '13688669758', '', 'user_6wu2vujv7x', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (880, '13688669759', '', 'user_05jr9c63o0', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (881, '13688669760', '', 'user_cc2l1lrlw5', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (882, '13688669761', '', 'user_ieeqrlof8f', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (883, '13688669762', '', 'user_6m5ermqkua', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (884, '13688669763', '', 'user_mh99rug0nh', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (885, '13688669764', '', 'user_n55ceoc392', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (886, '13688669765', '', 'user_72vzhk8py3', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (887, '13688669766', '', 'user_bthii5wt36', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (888, '13688669767', '', 'user_mut3q0vunf', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (889, '13688669768', '', 'user_symgsydmbd', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (890, '13688669769', '', 'user_7qs7kedl19', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (891, '13688669770', '', 'user_uwyx1i29m0', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (892, '13688669771', '', 'user_ls2p6sldmi', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (893, '13688669772', '', 'user_1kmmkpegso', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (894, '13688669773', '', 'user_4zp483y1e7', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (895, '13688669774', '', 'user_nr78kan9c3', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (896, '13688669775', '', 'user_0r0m7ngv6x', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (897, '13688669776', '', 'user_lknjznxmau', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (898, '13688669777', '', 'user_v9g6j6h0ah', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (899, '13688669778', '', 'user_wuyim37fx5', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (900, '13688669779', '', 'user_l0lfqjjzs0', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (901, '13688669780', '', 'user_6uyxk7pa4u', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (902, '13688669781', '', 'user_f17o0qymn9', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (903, '13688669782', '', 'user_ogpqk1b39a', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (904, '13688669783', '', 'user_9jpofrgda1', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (905, '13688669784', '', 'user_n298v8udm3', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (906, '13688669785', '', 'user_0biwjc5wwt', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (907, '13688669786', '', 'user_xbbdx6wq53', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (908, '13688669787', '', 'user_nh79qly5ir', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (909, '13688669788', '', 'user_v86oajknbs', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (910, '13688669789', '', 'user_e13odsshad', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (911, '13688669790', '', 'user_6cvwrirdtl', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (912, '13688669791', '', 'user_nqr7bpgz67', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (913, '13688669792', '', 'user_wn1ae0p6gw', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (914, '13688669793', '', 'user_te48rluimb', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (915, '13688669794', '', 'user_p2r85n4k8g', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (916, '13688669795', '', 'user_ca8fdlrbty', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (917, '13688669796', '', 'user_toque00p0i', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (918, '13688669797', '', 'user_uiti5cdbhf', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (919, '13688669798', '', 'user_8pgku7viy8', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (920, '13688669799', '', 'user_cdafki4cwc', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (921, '13688669800', '', 'user_fyyk2yfpk5', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (922, '13688669801', '', 'user_78e1meevls', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (923, '13688669802', '', 'user_qzwls7m33b', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (924, '13688669803', '', 'user_jxuw8ixefk', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (925, '13688669804', '', 'user_1xye60infx', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (926, '13688669805', '', 'user_gvccna2mni', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (927, '13688669806', '', 'user_tftvpegd2c', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (928, '13688669807', '', 'user_6ihh78vpox', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (929, '13688669808', '', 'user_46qroyojdl', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (930, '13688669809', '', 'user_wwi4i2wb77', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (931, '13688669810', '', 'user_s28l0bryil', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (932, '13688669811', '', 'user_4lgib8jvrx', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (933, '13688669812', '', 'user_fczpz5s31b', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (934, '13688669813', '', 'user_3cvkn9pv9w', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (935, '13688669814', '', 'user_wtvk7gx8ar', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (936, '13688669815', '', 'user_yrel6rbyyd', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (937, '13688669816', '', 'user_hmxjnsbnon', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (938, '13688669817', '', 'user_cuxcl0d2oo', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (939, '13688669818', '', 'user_1ax8x9zw0c', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (940, '13688669819', '', 'user_p7v98oe5nm', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (941, '13688669820', '', 'user_m90rt3bwsz', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (942, '13688669821', '', 'user_xhty5jm1hy', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (943, '13688669822', '', 'user_7h88k22eo0', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (944, '13688669823', '', 'user_5a75z9jcqa', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (945, '13688669824', '', 'user_3t0twwq0nh', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (946, '13688669825', '', 'user_861ywr4gfr', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (947, '13688669826', '', 'user_iwkz8k1zpx', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (948, '13688669827', '', 'user_vzmhyoz1ap', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (949, '13688669828', '', 'user_5tmpddukgq', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (950, '13688669829', '', 'user_h6siyam4hb', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (951, '13688669830', '', 'user_n5yqq6mgka', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (952, '13688669831', '', 'user_an9epa7f2r', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (953, '13688669832', '', 'user_5vr0cdy8sz', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (954, '13688669833', '', 'user_xpanlhqjbq', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (955, '13688669834', '', 'user_3cfykc172m', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (956, '13688669835', '', 'user_1n0jceyzim', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (957, '13688669836', '', 'user_4ixi7efxtr', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (958, '13688669837', '', 'user_5adpp336iy', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (959, '13688669838', '', 'user_mflzjd6e6b', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (960, '13688669839', '', 'user_80bwfj72p7', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (961, '13688669840', '', 'user_i3anusitco', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (962, '13688669841', '', 'user_yj4pcsrkl9', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (963, '13688669842', '', 'user_7v9x6gxjdz', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (964, '13688669843', '', 'user_2ahufmnyzp', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (965, '13688669844', '', 'user_1oel6c441t', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (966, '13688669845', '', 'user_qxzcv0ib6g', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (967, '13688669846', '', 'user_9uyh0i8ykg', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (968, '13688669847', '', 'user_tb01d4d9ql', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (969, '13688669848', '', 'user_hwpkx6ovii', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (970, '13688669849', '', 'user_pqd04q9hq2', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (971, '13688669850', '', 'user_4t7wkgkufh', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (972, '13688669851', '', 'user_834e4vzf0e', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (973, '13688669852', '', 'user_pxk4urlnmo', '', '2022-02-28 10:50:52', '2022-02-28 10:50:52'); +INSERT INTO `tb_user` VALUES (974, '13688669853', '', 'user_e3x6n0ff0d', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (975, '13688669854', '', 'user_wxnvsvb5ut', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (976, '13688669855', '', 'user_ehi7k4zpjb', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (977, '13688669856', '', 'user_om0pzyh3z1', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (978, '13688669857', '', 'user_9asdqbe7od', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (979, '13688669858', '', 'user_seuabngxt9', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (980, '13688669859', '', 'user_b0qvb27eiy', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (981, '13688669860', '', 'user_63sjue2tkh', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (982, '13688669861', '', 'user_cc3lvxfr1u', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (983, '13688669862', '', 'user_in37hfw5tk', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (984, '13688669863', '', 'user_jtg0c9tyqn', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (985, '13688669864', '', 'user_qzpipaj50w', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (986, '13688669865', '', 'user_ppnb4ljetq', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (987, '13688669866', '', 'user_zbcui7783k', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (988, '13688669867', '', 'user_ki4dxb9q9b', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (989, '13688669868', '', 'user_27b5dxktn0', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (990, '13688669869', '', 'user_fxvb2av882', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (991, '13688669870', '', 'user_6vp3uflnwm', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (992, '13688669871', '', 'user_7ix7djbg30', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (993, '13688669872', '', 'user_vx8r39tjiu', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (994, '13688669873', '', 'user_l2wdiwule0', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (995, '13688669874', '', 'user_z4qe1up5zx', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (996, '13688669875', '', 'user_bklo4b32lu', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (997, '13688669876', '', 'user_ax0y473ndh', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (998, '13688669877', '', 'user_yx2p44qww3', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (999, '13688669878', '', 'user_bnw9bzib34', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (1000, '13688669879', '', 'user_cdj4ojh4pc', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (1001, '13688669880', '', 'user_l7o3r96hn3', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (1002, '13688669881', '', 'user_zbehzrz279', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (1003, '13688669882', '', 'user_tql21zepcx', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (1004, '13688669883', '', 'user_jnxnrk8qt0', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (1005, '13688669884', '', 'user_8e5twg6q0k', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (1006, '13688669885', '', 'user_gfeusukbpp', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (1007, '13688669886', '', 'user_sveivfswhn', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (1008, '13688669887', '', 'user_qgf4t8jkx0', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); +INSERT INTO `tb_user` VALUES (1009, '13688669888', '', 'user_4qh6bofkol', '', '2022-02-28 10:50:53', '2022-02-28 10:50:53'); + +-- ---------------------------- +-- Table structure for tb_user_info +-- ---------------------------- +DROP TABLE IF EXISTS `tb_user_info`; +CREATE TABLE `tb_user_info` ( + `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '主键,用户id', + `city` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '城市名称', + `introduce` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '个人介绍,不要超过128个字符', + `fans` int(8) UNSIGNED NULL DEFAULT 0 COMMENT '粉丝数量', + `followee` int(8) UNSIGNED NULL DEFAULT 0 COMMENT '关注的人的数量', + `gender` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '性别,0:男,1:女', + `birthday` date NULL DEFAULT NULL COMMENT '生日', + `credits` int(8) UNSIGNED NULL DEFAULT 0 COMMENT '积分', + `level` tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '会员级别,0~9级,0代表未开通会员', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`user_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of tb_user_info +-- ---------------------------- + +-- ---------------------------- +-- Table structure for tb_voucher +-- ---------------------------- +DROP TABLE IF EXISTS `tb_voucher`; +CREATE TABLE `tb_voucher` ( + `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键', + `shop_id` bigint(20) UNSIGNED NULL DEFAULT NULL COMMENT '商铺id', + `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '代金券标题', + `sub_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '副标题', + `rules` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '使用规则', + `pay_value` bigint(10) UNSIGNED NOT NULL COMMENT '支付金额,单位是分。例如200代表2元', + `actual_value` bigint(10) NOT NULL COMMENT '抵扣金额,单位是分。例如200代表2元', + `type` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '0,普通券;1,秒杀券', + `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '1,上架; 2,下架; 3,过期', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of tb_voucher +-- ---------------------------- +INSERT INTO `tb_voucher` VALUES (1, 1, '50元代金券', '周一至周日均可使用', '全场通用\\n无需预约\\n可无限叠加\\不兑现、不找零\\n仅限堂食', 4750, 5000, 0, 1, '2022-01-04 09:42:39', '2022-01-04 09:43:31'); + +-- ---------------------------- +-- Table structure for tb_voucher_order +-- ---------------------------- +DROP TABLE IF EXISTS `tb_voucher_order`; +CREATE TABLE `tb_voucher_order` ( + `id` bigint(20) NOT NULL COMMENT '主键', + `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '下单的用户id', + `voucher_id` bigint(20) UNSIGNED NOT NULL COMMENT '购买的代金券id', + `pay_type` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '支付方式 1:余额支付;2:支付宝;3:微信', + `status` tinyint(1) UNSIGNED NOT NULL DEFAULT 1 COMMENT '订单状态,1:未支付;2:已支付;3:已核销;4:已取消;5:退款中;6:已退款', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '下单时间', + `pay_time` timestamp NULL DEFAULT NULL COMMENT '支付时间', + `use_time` timestamp NULL DEFAULT NULL COMMENT '核销时间', + `refund_time` timestamp NULL DEFAULT NULL COMMENT '退款时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of tb_voucher_order +-- ---------------------------- + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/src/main/resources/mapper/VoucherMapper.xml b/src/main/resources/mapper/VoucherMapper.xml new file mode 100644 index 0000000..f87a13b --- /dev/null +++ b/src/main/resources/mapper/VoucherMapper.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/src/main/resources/unlock.lua b/src/main/resources/unlock.lua new file mode 100644 index 0000000..d057e44 --- /dev/null +++ b/src/main/resources/unlock.lua @@ -0,0 +1,15 @@ +--- +--- Generated by EmmyLua(https://github.com/EmmyLua) +--- Created by fang. +--- DateTime: 2025/3/21 16:27 +--- + +--- 获取redis中存的id + +--- 获取UUID+当前线程id,通过参数传进来 +if(redis.call("get", KEYS[1])==ARGV[1]) then + --- 一致删除锁,并放回1 + return redis.call("del", KEYS[1]) +end +--- 不一致返回0 +return 0 diff --git a/src/test/java/com/hmdp/HmDianPingApplicationTests.java b/src/test/java/com/hmdp/HmDianPingApplicationTests.java new file mode 100644 index 0000000..5f99c6f --- /dev/null +++ b/src/test/java/com/hmdp/HmDianPingApplicationTests.java @@ -0,0 +1,27 @@ +package com.hmdp; + +import com.hmdp.utils.RedisIdWorker; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import javax.annotation.Resource; + + +@SpringBootTest() +@RunWith(SpringJUnit4ClassRunner.class) +public class HmDianPingApplicationTests { + @Autowired + RedisIdWorker redisIdWorker; + + @Test + public void testIdWorker() { + for (int i = 0; i < 100; i++) { + long id = redisIdWorker.nextId("order"); + System.out.println("id = " + id); + } + } + +}